Skip to main content

How to Self-Host Calibre-Web: Ebook Library Server 2026

·OSSAlt Team
calibre-webcalibreebooksepubkindleself-hostingdocker2026

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

  1. Admin → Configuration → Calibre Library Location
  2. Path: /books (the mounted Calibre library)
  3. 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

AppPlatformNotes
Librera ReaderAndroidBest EPUB/PDF reader with OPDS
Moon+ Reader ProAndroidOPDS + excellent reading features
KOReaderE-InkBest for Kobo/Kindle
PanelsiOS/macOSClean OPDS support
MarviniOSOPDS + excellent EPUB reader

Part 5: Kindle Integration

Send to Kindle via email

  1. Admin → Configuration → E-Book Client
  2. SMTP → Outgoing Mail Server: configure your email SMTP
  3. User Settings → Kindle Email: your @kindle.com email 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:

  1. Admin → Configuration → Kobo Sync
  2. Enable: Yes
  3. On your Kobo: Settings → Accounts → Add reading app
  4. 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

  1. Open any book → Edit/Convert
  2. Convert to → choose format (EPUB, MOBI, AZW3, PDF, TXT)
  3. 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

  1. Admin → Users → + Add user
  2. Username, email, password
  3. 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.

Comments