Summary
- Calibre allows self-hosting of eBooks easily, categorizing, and serving with no subscription fees.
- Setting up Calibre takes a few steps, and it’s best to remember to keep the database local to avoid issues.
- Calibre Web provides a user-friendly interface to browse, read, upload, and even integrate with Kindle for your eBooks.
Have you been searching for a way to ditch Kindle and build your own eBook library? I have, and Calibre makes it easy to self-host your eBooks, read them anywhere, and even still send them to your Kindle—no subscription required.
Why I Ditched Kindle
Amazon recently decided that they would remove a feature from Kindle that many people loved—the ability to download eBooks to read on your own devices. This anti-consumer practice is among the latest in moves that show us digital content we buy isn’t actually ours, we’re just simply gaining access that can be revoked at any time.

Related
Kindle Is Making It Harder to Switch to Rival eReader Brands
Need to download and transfer those old Kindle purchases? Tough luck.
While Kindle doesn’t allow you to download eBook files anymore, there are still many legal sources for free eBooks. The only issue is reading them easily. Of course, Amazon integrates its own services with its own hardware well, but it’s not always the simplest solution if you want to supply the eBooks on your own.
That’s what I wanted to do: read eBooks without the overreaching hand of Amazon. That’s where Calibre comes in.
Discovering Calibre
Instead of using the Kindle service to read eBooks, I decided to give Calibre a shot. I’ve heard a lot about it, and know several people who self-host it, but now it’s my turn.
Calibre is a self-hosted tool that handles your eBooks. While Calibre itself only handles the database side of things, you can connect to it through quite a few apps. BookFusion is available on both iPhone and Android, and works natively with Calibre.

Related
Once you get your books into Calibre, it handles everything else for you. It’ll categorize stuff, serve out the books, and more. The best part is Calibre is 100% free and open source, so there are no fees to use the service.
If you can source the books you want to read in EPUB, PDF, or any number of other formats, then Calibre can make them available for you to enjoy.
Setting Up Calibre Wasn’t Easy
Calibre is self-hosted, which means that you’re on your own to install and configure it. I used Portainer to install it on my Docker host, and the primary installation was pretty straightforward.
There are three ports that need to be forwarded to the container, two volumes to mount, and just a few environmental variables to set. Overall, as far as Docker containers go, it was a pretty simple deployment.
Once it was up and going, that’s where things got a bit more tricky. Launching the 8080 port (whatever you have that on your server, mine is 8082 on the host that points to 8080 on the container) brings you to the setup interface for Calibre. This is honestly pretty simple, except for one thing: Calibre refuses to function well if you store the database on a network share.
My Docker server is a separate computer from my storage server. I do this to keep services separate, but also to avoid downtime if I have to service one server and not the other.

Related
Docker for Beginners: Everything You Need to Know
Learn to use this incredibly popular development tool.
Because of this, I typically store persistent data (that will continue to grow over time) on the storage server, not the Docker server. I mount the storage server over both NFS and CIFS, depending on which is more reliable at the time.
When I first set up Calibre, I configured it to store the database on my NAS over the network share so that way, as my eBook collection grew, it wouldn’t take up space on the apps server. I couldn’t get Calibre to work at all, and it took me a while to troubleshoot. However, once I moved the database to local storage to the Docker server and not the network share, Calibre set up just fine.
Moral of the story: keep your Calibre database local to avoid headaches.
Why Calibre Web Changed Everything
I already mentioned BookFusion as a way to read Calibre. That’s because Calibre doesn’t have any user-friendly ways to read your eBooks natively. The Docker container does technically allow you to use the VNC viewer to read eBooks, but the experience is anything but pleasant.
That’s where Calibre Web comes in. This is a separate Docker container that connects to your Calibre server, allowing you to interface with your library in a much more user-friendly way. With Calibre Web, you’re able to use things like a reverse proxy to access the library outside of your network in any browser. It also allows you to easily upload eBooks with just a few clicks of a button.
The Calibre Web UI is clean and makes browsing your eBook library a simple task. Because it’s a self-hosted website, and not a VNC viewer into a container, it works natively how you’d expect on any device. Whether I was using my phone, laptop, iPad, or desktop, the Calibre Web interface scaled well and was easy to use overall.
The biggest thing that Calibre Web does, for me, is allows me to upload books easily to my library. While I’m technically able to do it through the Calibre VNC remote, there are a lot more steps involved there.
With Calibre Web, you simply navigate to the admin interface, then click “Edit Basic Configuration,” toggle down “Feature Configuration,” then check “Enable Uploads.” While enabling uploads takes a few steps, once enabled, you have a nice upload button on the front end of Calibre Web.
Clicking the upload button allows you to choose all compatible file formats to upload, and Calibre Web then handles the rest from there. You can manually edit the metadata of a book, or fetch metadata from places like Google Books or Kindle to populate descriptions, authors and titles, the cover photo, and more.
Where Calibre Web really changed things for me, however, is with its Send to Kindle integration.
Send to Kindle Still Works—Here’s How
While I might be ditching Kindle as a means of purchasing books, I’m still keeping my (aging) Kindle Voyage around as long as it continues to work.
Amazon still offers its Send to Kindle functionality, which gives your Kindle devices unique email addresses where eBooks can be sent. Calibre Web natively integrates with this once you have an SMTP or OAuth email account set up.

Related
PSA: You Can Email Books and Documents to Your Kindle
It’s not a new trick, but it’s just as useful as ever.
I personally went the route of SMTP with an app password for my Google account. OAuth just wasn’t working for me in the Docker container, and that seems to actually be something relatively common—so SMTP it was.
Once you have an email account configured for sending mail, you’re able to simply click “Send EPUB to Reader” and Calibre Web will handle the rest behind the scenes. For myself, it typically took a few minutes before the eBook was on my Kindle, but it worked every time I used it.
This will allow me to source my own eBooks elsewhere besides the Kindle store, host them myself, and still read them on my Kindle. It’s truly the best of all worlds.