Take Control of Your Digital Library With Calibre-Web
Commercial ebook platforms lock your library behind accounts, subscriptions, and proprietary formats that can disappear without notice. Calibre-Web solves that problem by giving you a fully self-hosted reading server – accessible from any browser, synced to your devices, and completely under your control. It sits on top of an existing Calibre database, adds a clean web interface, and supports OPDS so e-readers like Kindle and Kobo can pull books directly from your server.
The setup takes roughly 30 to 60 minutes depending on your environment.
This guide walks through installing Calibre-Web using Docker, configuring it with an existing or new Calibre library, and connecting your devices so you can start reading. If you already run other self-hosted tools like Audiobookshelf, Calibre-Web fits naturally into the same homelab stack.

What You Need Before You Start
Calibre-Web does not include its own library engine – it reads from a Calibre database file called metadata.db. That means you need either an existing Calibre installation on your desktop (which you can point the server at) or a fresh database folder that Calibre-Web can initialize. Either way, the folder containing your ebooks and that database file is what gets mounted into the container. You do not need the full Calibre desktop app running on the server itself.
On the server side, you need Docker and Docker Compose installed. A Raspberry Pi 4, an old mini PC, or any Linux machine with at least 1GB of RAM will handle this without strain. The container image used here is from Linuxserver.io, which packages Calibre-Web with optional support for Kepubify (Kobo format conversion) and a built-in ebook converter if you add the full Calibre binary layer. For basic serving and reading, the standard image is enough.
Make sure your ebook folder is organized before you mount it. Calibre-Web expects a Calibre-style directory structure – each author gets a folder, each book gets a subfolder inside that. If your files are scattered, import them into Calibre on your desktop first, let Calibre reorganize the folder, then point the server at that managed library path.
Installing Calibre-Web With Docker Compose
Create a working directory for the project, then write a docker-compose.yml file with the following structure. The Linuxserver.io image is lscr.io/linuxserver/calibre-web:latest. You will define two volume mounts: one for the Calibre-Web config directory (where it stores its own settings and users database), and one pointing directly at your Calibre library folder containing metadata.db. Set the PUID and PGID environment variables to match your server user so file permissions stay consistent. Map port 8083 on the host to 8083 in the container, which is the default Calibre-Web port.
A minimal compose file looks like this:
- image: lscr.io/linuxserver/calibre-web:latest
- environment: PUID=1000, PGID=1000, TZ=America/New_York, DOCKER_MODS=linuxserver/mods:universal-calibre (optional, adds conversion support)
- volumes: ./config:/config and /path/to/your/library:/books
- ports: 8083:8083
- restart: unless-stopped
Run docker compose up -d and watch the logs with docker compose logs -f. The first boot takes slightly longer as it unpacks the environment. Once you see the ready message, open a browser and navigate to http://your-server-ip:8083. The setup wizard asks for the path to your Calibre library – use /books, which is the mount point defined in the compose file. Default login credentials are admin / admin123, which you should change immediately after logging in.

Configuring Users, Uploads, and Format Conversion
Calibre-Web has a detailed admin panel under the top-right menu. The first thing to configure is your admin account password and email. After that, go to Admin – Edit User and review the permission flags. By default, new users cannot upload books or use the send-to-Kindle feature. If you are running this server just for yourself, you can grant all permissions to your admin account and leave guest access off entirely. If you plan to share access with family or a small group, create individual accounts with limited permissions and enable the anonymous browsing toggle only if needed.
Book format conversion requires either the optional DOCKER_MODS layer or a separately mounted Calibre binary. With the mod active, Calibre-Web can convert EPUB to MOBI, AZW3, PDF, and other formats on demand when a user downloads a book in a format not already in the library. Without it, users get only the formats already stored. Conversion adds a processing delay and modest CPU load, so on low-powered hardware it is worth disabling it and pre-converting your library on a desktop machine first.
The OPDS catalog is what makes Calibre-Web genuinely useful on e-readers. Enable it under Admin – Basic Configuration – Feature Configuration. The OPDS URL will be http://your-server-ip:8083/opds. On a Kobo device, go to Settings – Beta Features – Add Sideloaded Books and point it at that address with your credentials. On Kindle apps, use a compatible OPDS reader app like KOReader if your device supports sideloading. Once connected, your entire library appears as a browsable catalog directly on the device.
Exposing Calibre-Web Outside Your Local Network
Running Calibre-Web only on your home network limits its usefulness when you are traveling or want to read on a mobile device away from home. The standard approach is to place it behind a reverse proxy like Nginx Proxy Manager or Caddy, assign it a subdomain on a domain you control, and let Let’s Encrypt handle the SSL certificate automatically. Do not expose port 8083 directly to the internet – always route it through HTTPS. Without that, your username and password travel in plain text over any network you use.
If you do not own a domain, Tailscale is a practical alternative. Install the Tailscale agent on your server and on every device you want to read from. Your Calibre-Web instance becomes reachable at its Tailscale IP address from anywhere in the world, with traffic encrypted through WireGuard, and no ports opened on your router. For a personal library with a handful of devices, this is the lower-maintenance path.
Authentication inside Calibre-Web is username and password only by default. For additional access control, Nginx Proxy Manager supports basic auth headers at the proxy level, which adds a second password prompt before even reaching the Calibre-Web login page. Overkill for most home setups, but worth considering if your library includes personal or sensitive documents.

Once your library is live and your devices are connected, the real advantage shows up in format flexibility – your EPUBs, CBZs, and PDFs all sit in one place, browsable from a phone browser during a commute or pulled directly onto a Kobo over OPDS at 2am without touching a USB cable. The subscription platforms cannot match that workflow because they were never designed to.





