How to turn a Raspberry Pi into an eBook server

How to turn a Raspberry Pi into an eBook server

The Calibre eBook management software makes it easy to set up an eBook server on a Raspberry Pi 3, even in low-connectivity areas.

A person looking at a phone
Image by :

Subscribe now

Get the highlights in your inbox every week.

Recently Calibre 3.0 was released which enables users to read books in the browser! Note that Raspbian's repositories have not yet been updated yet (as of this writing).

eBooks are a great way for teachers, librarians, and others to share books, classroom materials, or other documents with students—provided you have ready and reliable access to broadband. But even if you have low or no connectivity, there's an easy solution: Create an eBook server with the open source Calibre eBook management software running on a Raspberry Pi 3. Here's how I did it—and you can, too.

First I downloaded the latest Raspbian Pixel image and installed it on a new 8GB microSD card. Then I inserted the microSD; connected a keyboard, mouse, and an old LCD TV with an HDMI cable; and booted the Pi. After adjusting the resolution of the Pixel environment on my monitor and connecting to the local network, I was ready to begin. I opened a terminal and entered sudo apt-get update to get the latest updates for the operating system.

Next, I installed the Calibre software by entering sudo apt-get install calibre in a terminal.

I launched Calibre from the command line (note that it can be launched from the GUI also). The Calibre interface is very intuitive. The first time you launch, you see the Welcome to Calibre wizard. I changed the default Calibre Library to CalibreLibrary (one word), because it's easier when launching the content server.

After choosing the location for my Calibre content, I was ready to begin downloading books.

I selected the Get Books option from the menu, and it was very easy to enter my search terms and select the eBook provider I was interested in. I was looking for non-DRM material, so I chose Project Gutenberg as my source. (Calibre's disclaimer notes that eBook transactions are between you and the individual content providers.) I entered "Mark Twain" in the author field and got 10 results.

I selected Adventures of Huckleberry Finn. On the next screen, I could choose between the MOBI and EPUB eBook formats. I chose EPUB, and the book downloaded very quickly.

You can also add books to the library from other content providers, not in Calibre's list. For example, a teacher could share open educational resources in eBook format with students through this content server.  To load the content, use the "Add Books" menu option at the far left of the interface

Depending on the size of your library, you may also need to increase the size of your microSD card.


After you have added content to your eBook server, you are ready to share it with the rest of your network. Get the IP address of your Raspberry Pi by entering ifconfig into the terminal. I was using the wireless network, so I used the result for wlan0 in the example below. Navigate to the far right of the interface and expand the menu. Then, navigate to "Connect and Share" and start the server.

My next step was connecting my client computer to the Raspberry Pi to access the eBooks I'd added. I opened a browser on my client device and navigated to the Raspberry Pi's IP address with the port :8080 appended. In my case, that was (adapt that format to your Pi's IP address).

You'll see this home page in your browser:

I tested and easily connected to the server with an iPhone and Linux and MacOS computers.

You can explore the options on this home page, or click on All Books to display all the content on your eBook server.

From here, you can download the books to your device and read them offline.

Have you ever set up an eBook server? Or are you thinking about setting up one yourself? Share your advice or questions in the comments.

About the author

Don Watkins - Educator, entrepreneur, open source advocate, life long learner, Python teacher. M.A. in Educational Psychology, MSED in Educational Leadership, Linux system administrator, Follow me at @Don_Watkins .