mrkeyoor.com_
Mon 28 Sept 15:18 UTC
Self-Hostedevaluationupdated 28 Sept 2026

Calibre-Web-Automated review

Calibre-Web Automated is a self-hosted ebook library that adds ingest, conversion, metadata editing, duplicate handling, backups, and reader sync to Calibre-Web. It is meant to replace the awkward pairing of a Calibre container for library work and a separate Calibre-Web container for browsing.

Verdict

Our Calibre-Web Automated run passed 90 tests but ended with 26 failures and 46 collection or setup errors, so do not give this commit the only copy of your library. It is a strong fit for an experienced self-hoster who wants Calibre-Web plus automated ingest, conversion, backups, and reader sync in one container. Pin the image, keep an external backup, test with copied books, and verify every conversion instead of trusting a success message.

We ran it

Lab card: what happened when we ran Calibre-Web-AutomatedScreenshot of Calibre-Web-Automated (github.com/crocodilestick/Calibre-Web-Automated)
Install✓ · 26s62 packages · 93 MB
Build✓ · 3s
Tests✗ · 22s90 passed · 26 failed · 90 skipped · 46 errors of 162 (pytest)
Known vulns0(pip-audit)
Repo1197 files~162,511 lines of source · 154.1 MB · 6 CI workflows · Dockerfile · tests dir

Answers from our run

Does Calibre-Web-Automated build from source?

Dependencies installed in 26 seconds (62 packages), and the build succeeded in 3 seconds. We cloned commit 9805ac0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do Calibre-Web-Automated's tests pass?

Not all of them: 90 of 162 passed and 26 failed when we ran the project's own test command (pytest), with 46 collection errors. Some failures need services or credentials a bare container does not have.

Does Calibre-Web-Automated have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use Calibre-Web-Automated?

Anyone who will point an untested container at the only copy of a Calibre library: the ingest folder deletes files after processing, and our suite had 26 failures plus 46 errors.

What are the alternatives to Calibre-Web-Automated?

Calibre-Web, Kavita, Komga. Our Calibre-Web Automated run passed 90 tests but ended with 26 failures and 46 collection or setup errors, so do not give this commit the only copy of your library.

Setup3/5Compose is documented; 3 mounts and ownership need care
Docs4/5Detailed install, NAS, proxy, ingest, and migration guidance
Community5/56,331 stars with a same-day push and active issue queue
Maturity3/5v4.0.7 is active, but our suite had 26 failures and 46 errors

Who it’s for

Self-hosters who want one web interface for browsing, ingesting, converting, and sending ebooks.
Calibre-Web users willing to migrate a copied config folder and test automation against a library backup.
Kobo and KOReader owners who want reading progress and library sync from their own server.
NAS operators who understand volume ownership, SQLite behavior, and reverse-proxy headers.

Who it’s NOT for

Anyone who will point an untested container at the only copy of a Calibre library: the ingest folder deletes files after processing, and our suite had 26 failures plus 46 errors.
Users expecting Convert Library status to be trustworthy in every current path: issue 1551 reports conversions being logged as successful while no format was added, and its proposed fix remains open.
Operators unwilling to manage file ownership: issue 1472 reports imported files that could not later be edited, deleted, or moved.
People who want a zero-configuration NAS install: NFS and SMB need NETWORK_SHARE_MODE=true, separate mounts, correct PUID and PGID, and polling rather than normal filesystem events.
Administrators who will leave the documented admin and admin123 credentials unchanged after first login.

Setup reality

Our sandbox installed 62 packages in 26 seconds and used 93 MB. The build passed in 3 seconds. Tests failed after 22 seconds: pytest reported 90 passed, 26 failed, 90 skipped, and 46 collection or setup errors of 162. Pip-audit found 0 known vulnerabilities.

The recommended route is Docker Compose with separate /config, /cwa-book-ingest, and /calibre-library mounts. You must set ownership, timezone, port, and any Hardcover token, then change the default admin login. OAuth, email, metadata providers, and reader sync add their own settings.

Network shares need NETWORK_SHARE_MODE=true, which disables SQLite WAL and switches watchers to polling. Reverse proxies must set the correct trusted proxy count. Files placed in the ingest mount are removed after processing, so test with copies first.

One container replaces the Calibre and Calibre-Web pairing

Calibre-Web Automated starts with Calibre-Web's browser interface and adds the library jobs that often send self-hosters back to desktop Calibre. It watches an ingest folder, imports books, converts formats, applies metadata and covers, scans duplicates, backs up processed originals, and sends files to readers. Kobo and KOReader sync sit beside OPDS and browser reading. The appeal is simple: one service owns the tedious path from a new file to a readable library entry.

That convenience reaches deep into the collection. The measured checkout contained 1,197 files, about 162,511 lines of source, and occupied 154.1 MB before its 62 Python packages were installed. CWA can rename book folders, write metadata into ebook files, remove duplicates, and replace converted formats. Its ingest mount is a queue, not storage: the README says every file there is removed after processing. Start with copies and keep the library backup outside all 3 mounted directories.

Automation covers 27 ingest formats and can modify the originals

The README lists automatic ingest for 27 formats and conversion across 28 file types, with EPUB as the default target. Cover and metadata changes made in the web interface can be written back into ebook files. An EPUB fixer repairs several structures that can trip up Send to Kindle, while a conversion tool can retain originals under /config/processed_books. Smart duplicate detection, scheduled scans, Magic Shelves, and automatic sending extend the same pipeline.

A wide pipeline creates more ways for a success label to be wrong. Open issue 1551 describes Convert Library reporting every book as converted after an ingest had removed its temporary directory, even though no new formats appeared. The report also says subprocess exit codes fell through to success messages. Pull request 1552 proposes creating the directory and surfacing command failures, but it was still open when checked. Until that lands in a release you verify, compare the library formats before and after bulk work.

What happened when we ran it

Our sandbox installed commit 9805ac0 in 26 seconds, adding 62 packages and using 93 MB on disk. The build completed in 3 seconds. The test command then exited with code 1 after 22 seconds. Pytest reported 90 passed, 26 failed, 90 skipped, and 46 collection or setup errors of 162. Pip-audit found 0 known vulnerabilities in the installed Python environment.

The log tail repeatedly showed ModuleNotFoundError for cps.internal_api, with Python saying cps was not a package. Another duplicate-handling test failed because cps.duplicates had no _timestamp_or_default attribute. Those messages establish what broke in our fresh Debian run; they do not establish why. The checkout had a tests directory, Dockerfile, Compose file, and 6 CI workflow files, which makes the local failure harder to dismiss as a repository with no test machinery.

A passing build and clean dependency audit still count. They show that the 93 MB installed environment resolved and that the packaging step worked. They do not cancel 26 failed cases or the 46 errors that stopped other cases from setting up. Since several failures named duplicate scanning and queue behavior, test that feature on a disposable library before enabling automatic resolution against real books.

Docker setup depends on 3 separate writable mounts

The recommended Compose file maps /config, /cwa-book-ingest, and /calibre-library; the README warns against nesting them. PUID and PGID must match the host owner. The web interface defaults to port 8083, and first login uses admin with admin123. Change that password immediately. New users can bind an empty library directory, while migrating Calibre-Web users should stop the old service and copy its config before mounting it here.

Permissions deserve a trial of their own. Open issue 1472 consolidates reports where uploads or ingest left files with ownership that prevented later metadata edits, deletion, or directory moves. It names both Docker and bare-metal installs on version 4.0.6. Release v4.0.7 changed the ingest service to run as the abc user and includes an ownership upgrade note, but the issue remained open and was updated after that release. Check ownership after one upload and one watched-folder import.

NAS mode trades SQLite WAL and file events for polling

Local disks use SQLite write-ahead logging and inotify. NFS and SMB users set NETWORK_SHARE_MODE=true, which disables WAL for metadata.db and app.db, skips recursive ownership changes, and changes ingest and metadata watchers to polling. Docker Desktop may choose polling automatically because events from Windows or macOS mounts can be unreliable. The trade is a few seconds of detection delay and more I/O, according to the README.

Reverse proxies bring another exact setting. CWA trusts 1 proxy by default through Werkzeug's ProxyFix. A chain such as Cloudflare Tunnel followed by nginx needs TRUSTED_PROXY_COUNT=2; the wrong count can make session protection see changing client addresses and force logins again. OAuth and OIDC can be configured for external identity, while Hardcover metadata, email delivery, Kobo, and KOReader each add credentials or device setup. The 3-second build measured none of those integrations.

Version 4.0.7 fixes access control while open bugs remain

GitHub recorded a push on September 28, 2026, and release v4.0.7 arrived one day earlier. The release fixed Kobo token access, unauthenticated service pages, externally reachable internal endpoints, and guest access to a single-book EPUB fixer. That is a reason to update, especially for an internet-facing library. It also shows why pinning and reading release notes matter for a server that handles user accounts and file-changing jobs.

The repository had 6,331 stars and 442 combined issues and pull requests when fetched. Same-day commits and the new release show active maintenance; the large queue and our failed suite show active risk too. CWA can remove several awkward services from a home library, but its automation has authority over the files you care about. Give it a copied shelf first. Promote it only after ingest, conversion, backup, restore, and reader sync behave on your storage.

Alternatives

ProjectWhat it isPick it when
Calibre-WebThe lighter upstream web interface without CWA's larger automation layer.pick this instead when browsing, reading, and basic library management are enough.
KavitaA self-hosted reading server for books, comics, and manga with its own library model.pick this instead when the reading experience matters more than Calibre-compatible conversion workflows.
KomgaA media server centered on comics, manga, magazines, and ebooks.pick this instead when image-heavy libraries and reader clients are the main job.
Calibre gh↗The full desktop ebook manager and conversion toolkit that CWA packages for server use.pick this instead when you want direct control over conversions and can use a desktop interface.

What people are saying

  1. [github-trending] crocodilestick/Calibre-Web-Automated

Sources

  1. Calibre-Web Automated README
  2. Calibre-Web Automated repository
  3. Calibre-Web Automated v4.0.7
  4. Issue 1472: file ownership after upload and ingest
  5. Issue 1551: Convert Library reports false success
  6. Pull request 1552: conversion directory and command failures

More self-hosted reviews

anythingmcp · CF-Server-Monitor · niubigeo · kuboard-press · taskview-community · dae · the whole board →