The vault was 155 pages / 31,210 lines, most of it measurement ledgers for payloads that no longer run. A throughput figure for a runtime nobody operates is not a record: AI moves faster than the vault, so the number is wrong before anyone reads it, and a wrong number in a runbook gets believed. Per the new purpose test in `AGENTS.md` → *Documentation Policy*, it is destroyed. Gone (`.AGENTTRASH/20261019-destruction/`, KILL-LIST.txt is the manifest): - the `frank-medium` endpoint and its five era pages, `frank-npu`, FastFlowLM, the ikllama/kingjones/dealign/frank-redo eras, the ling/swift15/freetoken/ubatch campaign pages, qwen3.8 spec-matrix and strix-optimizations, the two "Running Qwen3.6 …" pages; - the whole `Pipeline Parallelism/` folder (no live script passes a pipeline flag) and the multi-device/x4-pair/hybrid/offload experiment pages; - every vLLM page — no vLLM endpoint exists on this fleet; - `LLM/deployment.md` (`Architecture/Deployment Flow.md` is the test-referenced owner) and the external surveys (SGLang, Lemonade, llama.cpp forks/diff, self-hosted app census, the TTS survey) that were obsolete by construction; - `log.md`, 2,380 lines. Git holds the chronology; a causal law belongs to the page that owns the thing it governs, never to a diary. Survivors: 101 pages, 17,542 lines, 0 OKF violations, 0 unresolved links. Eras tables keep the window, payload, runtime, reason and rollback pointer; the rate columns are blanked. The live shapes stay verbatim — those numbers are what the deployer and `models.yml` consume.
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`)
|
|
`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
|