How to Self-Host Calibre-Web: Ebook Library Server 2026
TL;DR
Calibre-Web (GPL 3.0, ~12K GitHub stars, Python) is a web interface for your Calibre ebook library. Calibre is the gold-standard desktop app for ebook management — Calibre-Web makes that library accessible from any browser or reading device. It provides an OPDS catalog for EPUB readers, sends books directly to your Kindle via email, syncs with Kobo e-readers, and converts between formats. Kindle Unlimited is $9.99/month for borrowed books; Calibre-Web serves your purchased EPUB collection permanently.
Key Takeaways
- Calibre-Web: GPL 3.0, ~12K stars, Python — web UI for Calibre's ebook library
- Format conversion: Convert EPUB → MOBI → AZW3 → PDF via Calibre's
ebook-convert - Kindle push: Send books directly to Kindle via Amazon's email service
- Kobo sync: Kobo devices sync directly from Calibre-Web as an OPDS server
- OPDS: Any OPDS-compatible reading app can browse and download your library
- Multi-user: Different users with different library access and reading progress
Part 1: Docker Setup
# docker-compose.yml
services:
calibre-web:
image: lscr.io/linuxserver/calibre-web:latest
container_name: calibre-web
restart: unless-stopped
ports:
- "8083:8083"
volumes:
- calibreweb_config:/config
- /path/to/calibre/library:/books # Your Calibre library folder
environment:
PUID: 1000
PGID: 1000
TZ: America/Los_Angeles
DOCKER_MODS: "linuxserver/mods:universal-calibre" # Enables ebook-convert
OAUTHLIB_RELAX_TOKEN_SCOPE: 1 # For Google OAuth if needed
volumes:
calibreweb_config:
The key: /path/to/calibre/library must be your existing Calibre library folder containing metadata.db.
docker compose up -d
Visit http://your-server:8083 → log in with admin / admin123 → change password immediately.
Part 2: HTTPS with Caddy
books.yourdomain.com {
reverse_proxy localhost:8083
}
Part 3: First Setup
Point to Calibre library
- Admin → Configuration → Calibre Library Location
- Path:
/books(the mounted Calibre library) - Save → Calibre-Web scans the library
If you don't have a Calibre library yet
# Option 1: Create via Calibre desktop app (recommended):
# 1. Install Calibre on your computer
# 2. Add your ebooks
# 3. Copy the Calibre library folder to your server
# Option 2: Bootstrap with a single book via Calibre CLI:
docker exec calibre-web calibredb add /path/to/book.epub \
--library-path /books
Part 4: OPDS Feed
OPDS URL: https://books.yourdomain.com/opds
Compatible apps
| App | Platform | Notes |
|---|---|---|
| Librera Reader | Android | Best EPUB/PDF reader with OPDS |
| Moon+ Reader Pro | Android | OPDS + excellent reading features |
| KOReader | E-Ink | Best for Kobo/Kindle |
| Panels | iOS/macOS | Clean OPDS support |
| Marvin | iOS | OPDS + excellent EPUB reader |
Part 5: Kindle Integration
Send to Kindle via email
- Admin → Configuration → E-Book Client
- SMTP → Outgoing Mail Server: configure your email SMTP
- User Settings → Kindle Email: your
@kindle.comemail address
When reading a book, click Send to Kindle — Calibre-Web emails the book to your Kindle.
Amazon setup required:
- Log into Amazon → Manage Your Content
- Preferences → Personal Document Settings → Approved Personal Document E-mail List
- Add your Calibre-Web sender email address
Format for Kindle
Kindle prefers AZW3 (formerly MOBI) over EPUB. Enable conversion:
environment:
DOCKER_MODS: "linuxserver/mods:universal-calibre" # Installs Calibre for conversion
In Calibre-Web: Send to Kindle automatically converts EPUB → AZW3 via ebook-convert.
Part 6: Kobo Sync
Kobo e-readers can sync directly from Calibre-Web:
- Admin → Configuration → Kobo Sync
- Enable: Yes
- On your Kobo: Settings → Accounts → Add reading app
- URL:
https://books.yourdomain.com/kobo/YOUR_USER_TOKEN
Your Kobo syncs reading progress and can download new books directly.
Part 7: Format Conversion
With Calibre's ebook-convert installed (via DOCKER_MODS):
Via web UI
- Open any book → Edit/Convert
- Convert to → choose format (EPUB, MOBI, AZW3, PDF, TXT)
- Download converted file
Via CLI
# Convert EPUB to MOBI:
docker exec calibre-web ebook-convert /books/Author/Book/book.epub \
/tmp/book.mobi
# Convert with options:
docker exec calibre-web ebook-convert input.epub output.mobi \
--output-profile kindle_dx \
--base-font-size 12
# Batch convert all EPUBs in a directory:
docker exec calibre-web bash -c "
for f in /books/**/*.epub; do
ebook-convert \"\$f\" \"\${f%.epub}.mobi\"
done
"
Part 8: User Management
Create users
- Admin → Users → + Add user
- Username, email, password
- Library permissions: Can view only, or add/edit books
Reading progress
Each user has independent reading progress:
- Last read position in EPUB (using browser reader)
- Currently reading / read / want to read status
Restrict library access
# Per-user library filtering:
# Admin → Users → [user] → Allowed Tags: "fiction"
# → User only sees books tagged "fiction"
# Restrict by custom column:
# Admin → Users → [user] → Allowed Column Value: "private" = No
# → User sees all books where "private" column is not "yes"
Maintenance
# Update:
docker compose pull
docker compose up -d
# Backup Calibre-Web config (your library is separate):
tar -czf calibreweb-config-$(date +%Y%m%d).tar.gz \
$(docker volume inspect calibre-web_calibreweb_config --format '{{.Mountpoint}}')
# Backup Calibre library (books + metadata.db):
tar -czf calibre-library-$(date +%Y%m%d).tar.gz /path/to/calibre/library
# Logs:
docker compose logs -f calibre-web
# Reconnect library after restart (if Calibre-Web loses the path):
# Admin → Configuration → Calibre Library Location → re-set the path
See also: Kavita — if you also want manga/comics
See all open source ebook tools at OSSAlt.com/categories/media.