Tech Digest

Media

Calibre-Web

Web front end for a Calibre library you already have, not a replacement for Calibre

MediaGPL-3.0Maturearm64 builds
Last reviewed Profile maintained against the project's own documentation
Operational load
2 / 5
Light
Idle memory
120 MB
typical use ~300 MB
Moving parts
1
containers in a normal deployment
Backup shape
SQLite backup
needs a dump or a stop

Calibre-Web is a Python web app that browses, reads and lends out the books in an existing Calibre library. It replaces the awkward Calibre Content Server and gives multi-user access to a metadata.db that Calibre still owns.

Our verdict on Calibre-Web#

Understand the dependency before you install: Calibre-Web reads a metadata.db that Calibre created and it will not create one for you. Point it at an empty folder and it simply refuses to start the setup. That single fact decides whether this or Kavita is your tool. Upstream ships slowly, which is why two active forks exist: Calibre-Web-Automated (3.1.2, with an automatic ingest folder, KOReader sync and Calibre plugin support) and Calibre-Web-NextGen, started in May 2026 for faster iteration. Pick one deliberately rather than drifting. Security is the other thing to be current on: 0.6.26 was a security release fixing CVE-2025-7404, a remote code execution issue, along with a ReDoS and stored XSS. The default login is admin / admin123, which is a live problem given how often this app ends up on a public hostname. Change it during the first session, not later.

Who Calibre-Web is for#

Choose it if

  • You already curate a library in Calibre desktop and want family or friends to browse and download from it.
  • You want OPDS so KOReader, Moon+ Reader or Marvin can pull books directly over the network.
  • You want send-to-Kindle by email from a browser rather than plugging a cable in.
  • You need per-user shelves and download permissions on a shared ebook collection.

Look elsewhere if

  • You have no Calibre library and no intention of creating one: Calibre-Web cannot bootstrap metadata.db.
  • Your main content is manga or comics, where Kavita's readers and parsing are built for the job.
  • You need fast upstream response to bugs, since the pace of the original repo is why two forks exist.

What running it actually looks like#

One container on port 8083, with two mounts: a config volume for app.db and a books volume containing your Calibre library directory, the one holding metadata.db. That file must already exist, created by Calibre desktop or calibredb, before first start. The first screen asks for the library path, then you log in with admin / admin123 and change it immediately. Note that the original janeczku/calibre-web Docker Hub image is deprecated and stale; the multi-arch image people actually run is LinuxServer's, which is also what the ARM64 path depends on. Format conversion and send-to-Kindle need Calibre's binaries present and the ebook-convert path set under Admin, Basic Configuration, External Binaries: they are not in the base image, which is why the LinuxServer calibre-web and calibre pairing is a common two-container setup.

Resource profile#

Memory
120 MB idle, around 300 MB in ordinary use. A small Flask process; it climbs when you enable full-text search indexing or run conversions, and each Gevent worker adds to the baseline.
CPU and acceleration
Browsing and downloading are trivial. The CPU cost is optional format conversion, which shells out to Calibre's ebook-convert and can take tens of seconds per book, and full-text search indexing across a large library.
Storage growth
Calibre-Web adds almost nothing: its own app.db is a few MB. Your Calibre library directory and the thumbnail cache are the footprint, and full-text search adds an index proportional to the text volume.
Operational load
2 of 5, Light. One container and two SQLite files, upgrades are usually a tag pull. It scores 2 rather than 1 because it shares metadata.db with Calibre desktop, which is a real concurrency hazard, and because it is a commonly internet-exposed Python app with a 2025 remote code execution CVE in its history, so patching is not optional.

Figures describe a small single-household install and are the working assumptions behind our stack planner. Your numbers will differ with library size, user count and hardware. See methodology.

Data and backup surface#

Two databases, different owners. app.db in the config volume is Calibre-Web's own: users, shelves, read state, per-user settings, and it is small and irreplaceable. metadata.db in the library directory belongs to Calibre and holds all book metadata, tags, series and custom columns; back it up with the library because a rebuild from the book files loses everything Calibre added. Thumbnail caches and the full-text search index are regenerable and can be excluded. Stop the container before copying either SQLite file. If you lose access, you can reset a password in place with python3 /app/calibre-web/cps.py -p /config/app.db -s user:newpassword rather than restoring anything.

Derived backup shape

SQLite backup. sqlite3 <db> ".backup out.db" while running, or stop the container and copy. A live cp of a WAL-mode SQLite file can restore corrupt.

Traps and surprises#

Default credentials are admin / admin123

Every fresh install ships the same admin account and password, and this app is very commonly published on a public hostname for family access. Combined with CVE-2025-7404, a remote code execution issue patched in 0.6.26, an unpatched instance with default credentials is a straightforward compromise. Change the password in the first session and put the instance behind authentication if it faces the internet.

Two writers on one metadata.db corrupts it

Calibre desktop and Calibre-Web both write to metadata.db. Running Calibre against the same library while Calibre-Web is up, particularly over an SMB or NFS share, produces locking errors and eventually a damaged database. Use one writer at a time, keep the library on local disk, and if you want an ingest workflow use the Calibre-Web-Automated fork rather than leaving Calibre desktop running against the same folder.

Conversion needs Calibre binaries you have to supply

Format conversion, send-to-Kindle and Kepub output call out to Calibre's ebook-convert and kepubify. The base Calibre-Web image does not include them, so the menu entries appear and then fail. Set the binary path under Admin, Basic Configuration, External Binaries, and in Docker that usually means running a second container that ships Calibre and sharing the volume, or using an image that bundles both.

Three projects share the name

janeczku/calibre-web is upstream (0.6.26, May 2026). Calibre-Web-Automated adds automatic ingest, KOReader sync and split library support. Calibre-Web-NextGen is a newer community continuation started in May 2026. They diverge in configuration and database handling, so migrating between them later is not just an image swap. Choose one at install time and pin to it.

Specifications#

Category
Media servers and libraries
Licence
GPL-3.0 (Copyleft)
Written in
Python (Flask)
First release
2016
Maturity
Mature
Datastore
SQLite (Calibre's metadata.db plus its own app.db)
Default ports
8083
Ships as
docker, pip package, native python
arm64 builds
Yes
Identity
LDAP only. LDAP works, plus OAuth against GitHub and Google specifically, plus a reverse proxy header login mode; there is no general OIDC, so most people use forward auth and enable the proxy header option.
Replaces
Calibre Content Server, Google Play Books, Kindle library
Project site
github.com/janeczku/calibre-web
Source
github.com/janeczku/calibre-web
Documentation
github.com/janeczku/calibre-web/wiki

Alternatives to Calibre-Web#

Everything else in media servers and libraries, closest in operational weight first.

ToolOps loadIdle RAMLicence
Audiobookshelf2, Light200 MBGPL-3.0
Emby2, Light350 MBProprietary
Jellyfin2, Light280 MBGPL-2.0-only
Jellyseerr2, Light220 MBMIT
Kavita2, Light250 MBGPL-3.0
Plex Media Server2, Light400 MBProprietary

Where Calibre-Web comes up elsewhere#

Migration guides

Sources#

Facts on this page were checked against the project's own material. Where a number is our own estimate rather than a published figure, the text says so.

  1. Calibre-Web repository
  2. Calibre-Web releases
  3. Calibre-Web-Automated releases
  4. Calibre-Web-NextGen community fork
  5. LinuxServer calibre-web image documentation

Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.