- Migrate all 127 non-reserved docs to OKF v0.1 frontmatter (type/description/tags/timestamp); fix 13 YAML issues, 2 duplicate-FM blocks, strip reserved-page FM - Restructure log.md to OKF (## YYYY-MM-DD, newest-first) - Fact-check against scripts/AGENTS.md ground truth: fix 6 false 'Active' banners on retired runbooks, 96->114 GiB GTT, deployment.md vs deploy-plan.py/deploy-remote.sh, Deployment Flow frank-medium=Quadlet, Calibre 9.9.0->9.15.0 + CVE-2025-7404 conflation, Copyparty v1.20.24, RomM 5.3.0 breaking change - Move *arr docs to new FrankBook-Pro/ section (git mv, link-safe) - Write active runbook bodies from ground truth (frank-large, frank-small) - Add 3 research briefs + HTML report: Local TTS and Voice Cloning, AI Job Search and Resume Tools, Most Popular Self-Hosted AI Apps (Jun-Sep 2026) - Add upstream-version rows to ComfyUI/OpenWebUI/Hermes app docs - All 336 tests pass; 136 pages, 0 unresolved wikilinks
101 lines
4.7 KiB
Markdown
101 lines
4.7 KiB
Markdown
---
|
|
type: reference
|
|
description: "Calibre is the e-book library manager that backs Calibre-Web."
|
|
tags:
|
|
- dankserver
|
|
- calibre
|
|
timestamp: 2026-09-21
|
|
---
|
|
|
|
# Calibre
|
|
|
|
Calibre is the e-book library manager that backs Calibre-Web. It manages metadata, formats, and conversions for the library that Calibre-Web serves.
|
|
|
|
**Host:** Dankserver (library directory on host) — **Docs:** https://calibre-ebook.com
|
|
|
|
## Role in this Stack
|
|
|
|
Calibre itself is a desktop/GUI application, not a container service. This stack runs **Calibre-Web** in a container and points it at an existing Calibre library directory on the Dankserver host.
|
|
|
|
Calibre is used to:
|
|
- Import books into the library (drag-and-drop or CLI `calibredb`)
|
|
- Edit metadata (author, title, series, tags, cover art)
|
|
- Convert between formats (EPUB → MOBI, MOBI → EPUB, etc.)
|
|
- Manage collections and reading lists
|
|
|
|
The actual library files (`.epub`, `.mobi`, `.pdf`) and the Calibre database (`.db` file) live on the host filesystem. Calibre-Web reads and writes them through the mounted volume.
|
|
|
|
## Current Version
|
|
|
|
Calibre 9.15.0 is the version on the live host (the upstream latest as of 2026-09-22). Major features include:
|
|
- Bookshelf view
|
|
- Opt-in AI features
|
|
- Content-server path-traversal fix: a bug since v6.16.0 allowed any user with server access to read non-Calibre files on the host. (The CVE-2025-7404 advisory is tracked against Calibre-Web, see [[Calibre-Web]].) Upgrade to 9.15.0+ if serving content to untrusted users.
|
|
|
|
## Library Directory
|
|
|
|
The live Calibre-Web container bind-mounts the library at `/books`:
|
|
|
|
| Purpose | Host path (live) |
|
|
|---------|------------------|
|
|
| Calibre library | `/home/dank/Containers/calibre-web/books` → `/books` in the Calibre-Web container |
|
|
|
|
(The older `/opt/calibre-web/books` path was the compose-era location and is
|
|
gone; the quadlet unit mounts the Containers data root.)
|
|
|
|
## What the Container Needs
|
|
|
|
- Read/write access to the library directory. Calibre-Web edits metadata through the database file.
|
|
- Ownership matching `PUID=1000` / `PGID=1000` (the `dank` user on Dankserver).
|
|
|
|
## Calibre Content Server (running)
|
|
|
|
Calibre includes a built-in HTTP content server (`calibre-server`) that serves
|
|
the library via OPDS feeds and a web interface:
|
|
- OPDS feeds for mobile reading apps (FBReader, Moon+ Reader, KyBook)
|
|
- Web UI for browsing, metadata editing, and uploads
|
|
- Direct device push (from the GUI, not the content server)
|
|
|
|
**Live shape (deployed 2026-09-21):** a rootless Quadlet unit
|
|
(`dankserver/calibre-server/quadlet/calibre-server.container`), boot-persistent
|
|
and self-healing, on `lscr.io/linuxserver/calibre:9.15.0`.
|
|
|
|
The image is the current **desktop** build (Selkies web-streamed GUI), not the
|
|
headless image the old compose snippet assumed — the dedicated headless images
|
|
(ta264/docker-calibre, agentgreen/calibre-server) are dormant (calibre 6.10 /
|
|
2017, both below the 9.9.0 content-server fix). The unit therefore runs
|
|
`calibre-server` as the image's s6-overlay main service via `Exec=`.
|
|
|
|
| Surface | Host port | Auth |
|
|
|---------|-----------|------|
|
|
| Content server (OPDS + web UI) | **8084** (internal 8090) | HTTP Basic, single admin `calibre` in the SQLite userdb |
|
|
| Desktop GUI (internal only) | none (8080/8181/8082 inside the container) | HTTP Basic ready (`CUSTOM_USER`/`CUSTOM_PASSWORD` in the env file) |
|
|
|
|
Port notes: `Network=pasta` on this host is port-FORWARD mode — the container
|
|
keeps its own netns and only `PublishPort`'d ports reach the host (verified
|
|
2026-09-21). The desktop GUI runs but is unreachable: exposing the browser
|
|
GUI is one `PublishPort` line away. 8080 *inside* the container is the
|
|
image's own nginx (the desktop), so the content server runs on internal 8090.
|
|
|
|
**Auth model (calibre 9.x):** users live in a SQLite userdb whose `pw` column
|
|
is **plaintext** — the file is mode 600. The single admin account is
|
|
bootstrapped once by the deploy handler
|
|
(`deploy_calibre_server` in `scripts/deploy-remote.sh`) via
|
|
`calibre-server --manage-users -- add`, the password piped on stdin with
|
|
`printf` (a trailing newline from `echo` lands in the stored password and
|
|
breaks every login). The desktop's basic auth (`CUSTOM_USER`/`CUSTOM_PASSWORD`)
|
|
reuses the same pair. Both live in the machine-local env file
|
|
`/home/dank/Containers/calibre-server/env` (mode 600); the repo holds no
|
|
secrets. `--auth-mode=basic` is pinned: on a non-SSL port the server defaults
|
|
to Digest auth, which rejects plain Basic clients with
|
|
`400 Unsupported authentication method`.
|
|
|
|
LAN-only (no vhost, no public DNS). The library is mounted read-write — the
|
|
content server writes metadata, the same library Calibre-Web uses.
|
|
|
|
## See Also
|
|
|
|
- [[Calibre-Web]] — the containerized frontend
|
|
- [[Dankserver Stack]]
|
|
- [[ARR-Stack]] — Readarr for automatic ebook downloads
|