Running Your Own eBook Library With Calibre-Web
If you have hundreds of eBooks scattered across folders, old Kindles, and forgotten download directories, Calibre-Web turns that chaos into a clean, browser-based library you can access from any device on your network – or beyond it, if you configure remote access. It sits on top of an existing Calibre library database, adds a polished web interface, and gives you reading in the browser, OPDS catalog support for e-reader apps, and per-user permissions out of the box.

What You Need Before You Start
Calibre-Web does not manage your books itself – it reads a Calibre metadata database (metadata.db) that already exists on disk. That means you need a working Calibre installation somewhere, at minimum to generate that database file. You do not need Calibre running continuously, and you do not need it on the same machine as Calibre-Web. Many users build their library with the Calibre desktop app on a separate computer, then copy the library folder to the server.
On the server side, you need Docker installed and a machine running Linux, though this process works equally well on a Raspberry Pi 4 or a full x86 home server. The LinuxServer.io image for Calibre-Web is the most maintained option available and handles environment setup cleanly. You will also want to decide on a persistent path for your book files before you write a single line of config – changing it later means re-pointing the database and risking broken covers and metadata links.
Port planning matters here too. Calibre-Web defaults to port 8083. If you are already running other self-hosted services – a dashboard like Homarr, for instance, or a monitoring stack – double-check that 8083 is free before deploying. Remapping is simple in Docker, but doing it upfront avoids confusion later.
Minimum hardware is modest. Calibre-Web runs comfortably on 512MB of RAM for a single-user setup. Multi-user deployments with concurrent book downloads or active Kobo sync will want at least 1GB available. Storage is the bigger consideration: a library of several thousand ePubs and PDFs can easily reach 20-50GB depending on how heavily illustrated your books are.

Installing and Configuring Calibre-Web With Docker
Create a directory structure before pulling any image. Something like /opt/calibre-web/config for app configuration and a separate mount point for your Calibre library – say, /data/books – keeps things organized. The config folder stores Calibre-Web’s own SQLite database, user accounts, and settings. The books folder is where your existing Calibre library lives, including the metadata.db file.
The Docker run command is straightforward. Pull the LinuxServer.io image with docker pull lscr.io/linuxserver/calibre-web:latest, then run the container with the following flags: map port 8083 on the host to 8083 in the container, mount your config directory to /config inside the container, mount your books directory to /books, and set the PUID and PGID environment variables to match the user that owns your book files. Getting PUID and PGID wrong is the most common first-run failure – the app will start but silently fail to read the library because of file permission mismatches.
If you prefer Docker Compose, the equivalent setup is a short docker-compose.yml file. Define the image, set the environment variables for PUID, PGID, and TZ (timezone), map the ports, and declare your two volume mounts. Using Compose makes it easier to update the container later with a single docker compose pull and docker compose up -d without having to reconstruct a long run command from memory.
Once the container is running, open a browser and navigate to http://your-server-ip:8083. On first load, Calibre-Web prompts you to set the location of your Calibre library. Enter /books – the container’s internal path you mapped – and click Connect. If the path is correct and permissions are set properly, the app will detect the metadata.db file and populate your library automatically. The default admin credentials are admin / admin123, which you should change immediately in the admin settings panel.
From the admin panel, configure email settings if you want to send books directly to a Kindle or other device via email delivery. Enable the OPDS catalog under Features if you plan to connect a reading app like KOReader or Kybook on a phone or tablet – OPDS turns your server into a browsable catalog those apps can pull from natively. You can also enable the optional Kobo sync feature, which lets a Kobo e-reader sync reading progress, shelves, and new books directly against your Calibre-Web server instead of Kobo’s cloud.
Access, Users, and Keeping It Secure
Calibre-Web includes a built-in user management system. Each account can be restricted to specific library sections, given upload or admin rights, or limited to read-only browsing. For a household with mixed comfort levels around settings, creating a standard user account for daily browsing and keeping admin credentials separate is worth doing from day one. If you want single sign-on across multiple self-hosted apps, Calibre-Web supports OAuth and can be placed behind an identity-aware proxy – setting up something like Authentik as an SSO provider gives you centralized login across your entire stack.

Exposing Calibre-Web outside your local network requires a reverse proxy with HTTPS – running it bare on port 8083 over the open internet is not a configuration worth running. Nginx Proxy Manager or Caddy in front of the container handles SSL termination and gives you a clean domain name rather than an IP and port. Without HTTPS, credentials and book downloads travel in plain text. With it, your library becomes a proper private service you can reach from a hotel, an airport, or anywhere else, with the same interface you use at home. Whether remote access is worth the added configuration depends entirely on how often you read away from your home network – but the option is there if you want it.





