If you've ever tried managing an ebook library with the standard Calibre desktop app running in a Docker container, you know the pain. The KasmVNC interface is clunky, resource-heavy, and basically unusable on mobile. Calibre-Web solved half that problem with a clean, modern web UI. But it was missing the automation features that made Calibre actually useful.
Enter Calibre-Web Automated (CWA). This project takes Calibre-Web and supercharges it with all the automation you actually need. And with the recent V4 release, it's become something genuinely special: a complete, self-hosted ebook library that handles everything from ingesting new books to fixing Kindle compatibility issues to syncing with your eReader.
Let's dig into what makes CWA V4 the best way to run a self-hosted ebook library in 2026.
What is Calibre-Web Automated?
Calibre-Web Automated is a Docker-based fork of Calibre-Web that adds the automation and book management features that were missing from the original project. The goal is simple: combine the lightweight, mobile-friendly UI of Calibre-Web with the powerful backend features of Calibre, plus a bunch of new automation on top.
Instead of running both Calibre and Calibre-Web side by side (which many people do to get the best of both worlds), CWA gives you everything in one container. Drop a book in the ingest folder and it handles the rest: conversion, metadata fetching, cover enforcement, duplicate checking, and even sending it to your Kindle automatically.
Getting Started with Docker Compose
The easiest way to run CWA is with Docker Compose. If you're new to Docker, check out our Docker for self-hosting beginners guide first.
Here's a working Docker Compose file to get you started:
services:
calibre-web-automated:
image: crocodilestick/calibre-web-automated:latest
container_name: calibre-web-automated
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
# Optional: Hardcover API key for metadata
- HARDCOVER_TOKEN=your_api_key_here
# Set to true if your library is on NAS/network storage
- NETWORK_SHARE_MODE=false
volumes:
# Config folder stores settings and database
- ./config:/config
# Ingest folder - drop books here for automatic processing
- ./ingest:/cwa-book-ingest
# Your Calibre library (CWA creates one if it doesn't exist)
- ./library:/calibre-library
ports:
- 8083:8083
restart: unless-stoppedCreate a folder for your setup, save that as docker-compose.yml, and run:
docker compose up -dGive it a minute to start up, then head to http://your-server-ip:8083. The default login is admin / admin123. Change that immediately.
If you don't have an existing Calibre library, CWA will automatically create one for you. If you do have one, just point the library volume at your existing Calibre folder and CWA will find it automatically.
Running Behind a Reverse Proxy
For remote access, you'll want to put CWA behind a reverse proxy with HTTPS. We've got a full guide on setting up Caddy as a reverse proxy with Docker that works perfectly with CWA.
If you're running behind multiple proxies (like Cloudflare Tunnel plus your own reverse proxy), add this environment variable:
- TRUSTED_PROXY_COUNT=2This prevents session protection issues where CWA sees different IPs between requests and keeps logging you out.
V4 Features: What's New
The V4 release is massive. Here's what got added:
Smart Duplicate Detection
This was a big pain point for anyone with a large library. V4 introduces a hybrid detection system that combines SQL queries with fuzzy matching to catch duplicates that other systems miss entirely.
It runs automatically after importing new books, plus there's a scheduled background scan that checks periodically. The clever bit is it only scans books added or modified since the last check, so it's not grinding through your entire library every time.
The matching is smart about it too. It strips articles like "The" and "A", normalizes special characters, and is language-aware so it won't flag translations as duplicates. You can configure exactly what counts as a duplicate and set how strict the fuzzy matching should be.
When it finds duplicates, you can merge them with one click. It consolidates all the different formats into a single entry, and you can run batch operations to clean up multiple duplicate groups at once.
Magic Shelves
Magic Shelves are dynamic, rules-based collections that update automatically. Think smart playlists, but for books.
You can filter by pretty much anything: title, author, series, publisher, language, tags, read status, rating, publication date. Combine multiple rules with AND/OR logic. Use exact matches, contains, regex patterns, whatever you need.
CWA comes with pre-built templates to get you started:
- Recently Added - Your newest books at a glance
- Highly Rated - Books you've rated 4+ stars
- No Cover - Quickly find books missing cover art
- Incomplete Series - Series where you're missing entries
- Yet to Read - Your reading backlog
The real magic is that these shelves sync to Kobo devices. Set up a "To Read" shelf with specific rules and it automatically appears on your Kobo with the matching books.
Deep Stats Dashboard
V4 adds a proper analytics center that actually shows you how your library is being used. It's split into four sections:
User Activity tracks downloads, reading velocity, device preferences, format popularity, and peak usage times. There's even a heat map showing when your library is busiest.
Library Statistics covers publication year distribution, largest series, rating stats, format breakdown, and language distribution across your collection.
API Usage monitors OPDS feed activity, Kobo sync stats, KOReader progress syncing, and external API calls.
Time-based Insights gives you trends over custom date ranges with user-specific filtering.
You can export any section to CSV for offline analysis. The charts are interactive and look great in dark mode.
OAuth 2.0 and OIDC Authentication
If you're running Authentik, Keycloak, or any other identity provider, V4 has robust OAuth support with automatic endpoint discovery via OIDC metadata URLs.
The setup is straightforward for major providers like Google, Azure AD, Authentik, and Keycloak. You get configurable JWT field mapping for usernames and emails, automatic admin role assignment based on OAuth groups, and built-in connection testing to verify your config before going live.
For providers that don't support auto-discovery, there's full manual override of all OAuth endpoints.
Auto-Send to eReader
This is the "set it and forget it" feature. When enabled, new books are automatically emailed to your Kindle, Kobo, or other eReader as soon as they're ingested.
There's a configurable delay (1-60 minutes) that lets the metadata fetch and EPUB fixer run first. So your books arrive with proper covers, accurate metadata, and Kindle-compatible formatting.
Each user can configure their own auto-send preferences, and you can send to multiple devices at once. The enhanced send modal now supports ad-hoc email addresses too, so you can easily share books with friends and family.
EPUB Fixer 2.0 (Kindle Compatibility)
Amazon's Send-to-Kindle service is notoriously picky about EPUB formatting. One wrong encoding, a malformed language tag, or a stray image reference and you get the dreaded E999 rejection.
CWA's EPUB fixer handles this automatically. It repairs:
- UTF-8 encoding issues
- Malformed XML declarations
- Invalid NCX links
- Broken CSS and font references
- Stray image tags with no source
- Missing or invalid language metadata
V4 added an "aggressive" mode for severely broken files that keeps failing Send-to-Kindle. It runs more intensive transforms that fix even the most mangled EPUBs.
The fixer runs automatically on every book that gets ingested, and you can bulk-process your entire library from the admin panel with progress tracking.
Automatic Metadata Fetch on Ingest
No more manually searching for metadata after importing books. CWA can fetch and apply metadata automatically during ingest.
It uses your preferred metadata providers (Google Books, Kobo, Hardcover, ISBNdb) with smart fallback. If one provider fails, it tries the next. You control the hierarchy.
There's a "smart metadata application" option that only replaces existing data if the fetched data appears higher quality (longer descriptions, better covers). Or you can have it always overwrite, or only fill in missing fields. Your library, your choice.
Other Features Worth Mentioning
Beyond the V4 highlights, CWA has a ton of other useful features:
Automatic Ingest - Drop any of 28 supported formats into the ingest folder and CWA processes them automatically. Supports everything from EPUB and MOBI to PDF, DOCX, and even ACSM files (with the right Calibre plugin).
Automatic Conversion - Configure CWA to automatically convert certain formats. Import a PDF and have it converted to EPUB. Import a MOBI and get AZW3 for your Kindle. The target format is configurable.
Cover and Metadata Enforcement - When you change a cover or metadata in Calibre-Web, those changes only affect the UI by default, not the actual ebook files. CWA fixes this. Changes you make are written to the actual files, so Send-to-Kindle gets your carefully chosen covers and metadata.
KOReader Sync (KOSync) - Built-in progress syncing for KOReader. Auto-generates compatible checksums for all books, syncs reading progress to the CWA database, and can even push that to your Kobo. Zero config required.
Kobo Sync - Full Kobo device support with shelf syncing. Your library appears natively on your Kobo without needing to connect via USB.
Automated Backups - Original files are stored before processing, and there's an auto-zip service that compresses the day's backups at midnight to save disk space.
Network Share Support - Running your library on NAS storage? Enable NETWORK_SHARE_MODE to disable SQLite WAL (which causes locking issues on NFS/SMB) and switch to polling-based file watching.
Hardware Requirements
CWA is surprisingly lightweight. On a small VPS with 2GB RAM, it runs comfortably alongside other services. The web UI is snappy and works great on mobile.
If you're looking for affordable hosting, Hetzner Cloud has great options starting around €4/month. Their CX22 with 4GB RAM is plenty for CWA plus a few other self-hosted services.
For larger libraries (10,000+ books) or heavy conversion workloads, you might want a bit more CPU. Conversion is the most resource-intensive operation, especially PDF to EPUB.
Migration from Standard Calibre-Web
If you're already running Calibre-Web, migration is straightforward:
- Stop your existing Calibre-Web container
- Make a copy of your config folder (don't modify the original yet)
- Point CWA at your copied config folder and existing library
- Start CWA
CWA will detect your existing library automatically and import your user settings, shelves, and reading progress. Give it a test run before shutting down your old instance for good.
Companion Apps
The CWA community has built some nice companion projects:
Shelfmark is a web interface for searching and requesting book downloads that integrates with CWA. Found a book you want? Search, click download, and it lands in your ingest folder automatically.
Calibre Web Companion is a Flutter app (available on Google Play and F-Droid) that provides a much nicer mobile experience for browsing and downloading books from your library.
Final Thoughts
Calibre-Web Automated V4 is genuinely impressive. It takes a solid project and adds all the features that were missing: proper duplicate handling, smart automation, serious analytics, and bulletproof Kindle compatibility.
If you're managing any kind of ebook collection, this is the way to do it. Drop books in a folder, let CWA handle the conversion, metadata, and organization, and have them show up on your eReader automatically. That's the dream, and CWA V4 actually delivers it.
The project is actively developed with a responsive Discord community. It's free, open source, and just works. What more could you want from a self-hosted ebook library?