Calibre-Web is a web app for browsing, reading and downloading ebooks from a Calibre library. It gives you a clean web interface with covers and metadata, a built-in browser reader, user accounts with shelves, an OPDS feed for e-reader apps, and “send to Kindle” by email. Hosted on a VPS, your ebook collection is available from anywhere.
Alternative: Kavita, which is stronger for comics and manga.
Requirements
- 1 vCPU and 1 GB RAM is enough. Ebook conversion uses more CPU briefly.
- Disk for your books. Ebooks are small (1–20 MB each), but PDFs and comics add up. See storage VPS.
Install with Docker
The LinuxServer.io image is a popular choice:
# /opt/calibre-web/compose.yaml
services:
calibre-web:
image: lscr.io/linuxserver/calibre-web:latest
restart: unless-stopped
environment:
PUID: 1000
PGID: 1000
TZ: Etc/UTC
DOCKER_MODS: linuxserver/mods:universal-calibre # optional: ebook conversion (x86-64)
volumes:
- ./config:/config
- ./books:/books
ports:
- "127.0.0.1:8083:8083"
cd /opt/calibre-web && docker compose up -d
Get a Calibre library onto the server
Calibre-Web needs an existing Calibre database (metadata.db) in the books folder. Choose one option:
- Upload your desktop library: copy your Calibre Library folder (with
metadata.db) to./booksusing rsync. See rsync. - Start empty: create an empty library with the Calibre desktop app, and copy it over. Then enable uploads in Calibre-Web, and add books through the browser.
Don’t edit the same library in desktop Calibre and Calibre-Web at the same time. Treat one as the master, and sync in one direction.
First-run setup
Open the site, and at the setup screen set the database location to /books.
The default login is admin / admin123: change it immediately (Admin → users).
Recommended admin settings:
- Enable uploads (Basic Configuration → Feature Configuration) if you’ll add books via the web.
- Set the converter path if you added the Calibre mod (
/usr/bin/ebook-convert). - Configure SMTP (Admin → Email server settings) for “Send to eReader”. Kindle requires that your sender address be approved in your Amazon account. See SMTP ports.
Users, shelves and reading
- Create users with permissions (download, upload, edit, delete). Restrict by tags or languages for family members.
- Shelves: public or private reading lists.
- The built-in reader handles EPUB, PDF, CBZ/CBR comics and more, and it remembers your progress.
OPDS for e-reader apps
The OPDS catalogue is at https://books.example.com/opds. Add it in KOReader, Moon+ Reader, Librera, Thorium, or Panels (iOS) with your Calibre-Web username and password. You can then browse and download from the app.
KOReader can also sync reading progress through Calibre-Web’s built-in KOSync support, available in recent versions.
HTTPS with Nginx
server {
server_name books.example.com;
client_max_body_size 200M; # uploads
location / {
proxy_pass http://127.0.0.1:8083;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
}
# listen 443 ssl; certbot --nginx -d books.example.com
}
See Let’s Encrypt.
Security and legality
- Use strong passwords, HTTPS, and Fail2ban (Calibre-Web logs failed logins). Disable anonymous browsing unless you mean it to be public. See Fail2ban.
- Host only books you have the right to store and share. A public library of copyrighted books will get abuse complaints and can get your service suspended. See the legal policies.
Backups
Back up ./books (including metadata.db) and ./config (app.db holds users and settings). See backup strategy.
Quick reference
| Item | Value |
|---|---|
| Port | 8083 |
| Library path | /books (must contain metadata.db) |
| Default login | admin / admin123 (change it) |
| OPDS | /opds |
| Conversion | Calibre mod (ebook-convert) |
Related: Audiobookshelf and Jellyfin.