Calibre-Web Automated
Automated, all-in-one self-hosted ebook library built on Calibre-Web and Calibre
Alternative to: Kindle, Kobo
Calibre-Web Automated combines Calibre-Web's lightweight browser interface with the robust library and metadata engine of Calibre. It automatically ingests new books dropped into a watch folder, converts them between formats, fixes EPUBs for Kindle compatibility, deduplicates the library, and can send books straight to an e-reader. Built-in support for KOReader progress syncing (KOSync), OAuth2/OIDC login, and rules-based "Magic Shelves" round out the automation on top of a classic Calibre library.
Calibre-Web Automated Docker Compose example
Self-host Calibre-Web Automated on your own server, homelab, or VPS starting from this Docker Compose example.
It runs Calibre-Web Automated in Docker containers using the official crocodilestick/calibre-web-automated:latest image, with persistent volumes and automatic restarts preconfigured.
Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.
services:
calibre-web-automated:
image: crocodilestick/calibre-web-automated:latest
volumes:
- config:/config
- book-ingest:/cwa-book-ingest
- calibre-library:/calibre-library
restart: unless-stopped
environment:
# User ID used for file ownership on the mounted volumes (LinuxServer.io convention)
PUID: "1000"
# Group ID used for file ownership on the mounted volumes (LinuxServer.io convention)
PGID: "1000"
# Container timezone, e.g. "Europe/Berlin"
TZ: "UTC"
# Optional Hardcover.app API token for richer book metadata. Leave blank to disable.
HARDCOVER_TOKEN: ""
# Set to "true" only when the /calibre-library volume lives on a network share (SMB/NFS)
NETWORK_SHARE_MODE: "false"
# Internal port the Calibre-Web UI listens on
CWA_PORT_OVERRIDE: "8083"
volumes:
config:
book-ingest:
calibre-library: Prefer a managed setup? WinterFlow installs, configures, and updates Calibre-Web Automated for you using this same Docker Compose configuration.