Books & Comics¶
The reading side of the library: ebooks and comics on Holly, served by Audiobookshelf — the same app that already served the audiobooks — filled automatically from the download clients and from Libation.
Where everything lives
Library: Holly Media/Books/{Ebooks,Comics} — reached from CT 101 by the
same CIFS→bind chain as the audiobooks
(//192.168.1.200/Media/Books → pve1 /mnt/holly-books → CT 101
/mnt/nas/books), and mounted directly into the ABS container on Holly.
Reader: Audiobookshelf on Holly :13378, abs.mdhmedia.uk.
Feeders: the book-router and Libation's post-sync hook (both in the
libation-sync stack).
Reading it¶
| Device | How |
|---|---|
| Kindle | Send to Device — ABS emails the EPUB to an @kindle.com address. This is the feature the ebook library exists for. Setup below. |
| iPad / phone | The ABS web reader, or a native app over OPDS (/api/opds, authenticated with an ABS user's credentials). |
Send to Kindle — the setup that matters¶
The library plumbing is done (2026-08-09): the Books library
(/books/Ebooks, id 067eda4d-1114-4270-87ce-27189d7a6623) is live and the
/mnt/user/Media/Books → /books mount was added to the ABS container via its
dockerMan template (see the unraid-docker skill for how). What remains needs
credentials and an Amazon account, so it is a human step:
- ABS → Settings → Email — SMTP host/port/username/password and a From address.
- Same page → e-reader devices — add the reader's
@kindle.comaddress (Amazon → Manage Your Content and Devices → Preferences → Personal Document Settings). - Amazon → Personal Document Settings → Approved Personal Document E-mail List — add the From address from step 1. Miss this and Amazon silently discards the mail while ABS still reports success — it is the usual cause of "it says it sent but nothing arrived".
Prefer EPUB: Amazon dropped MOBI for Send-to-Kindle in 2022 and converts EPUB on receipt. PDFs go through as-is.
Comics don't work well on a Kindle
Kindles have no native CBZ/CBR support and comic pages are painful on e-ink. Comics are for a tablet; the Kindle gets EPUBs.
Why one reader, not two
Kavita was deployed for this on 2026-08-07 and retired two days later.
Audiobookshelf already reads EPUB/PDF/CBZ/CBR, serves OPDS (/api/opds) and
does Send-to-Kindle, so a second reader — plus its container, its
books.mdhmedia.uk route with a bespoke split-auth exception, and its own
backup surface — bought nothing for a ~40-item library. The genuinely
valuable part of that work (the mount chain and the book-router below) is
reader-agnostic and was kept. Kavita's compose is in git history if a
purpose-built comic reader is ever wanted: it does handle comic
series/volume/issue structure better than ABS, which treats each CBZ as a
standalone book.
How content arrives¶
flowchart LR
QB[qBittorrent / NZBGet<br/>categories: books, comics] -->|/downloads/books<br/>/downloads/comics| BR[book-router]
LIB[Libation<br/>audiobook PDFs/EPUBs] -->|post-sync hook| BOOKS
BR -->|extract, cbz, copy| BOOKS[(Holly<br/>Media/Books)]
BOOKS --> ABS[Audiobookshelf<br/>abs.mdhmedia.uk]
BR -->|scan trigger| ABS
ABS -->|OPDS / web reader| IPAD[iPad, phone]
ABS -->|Send to Device| KINDLE[Kindle]
book-router (stacks/apps/libation-sync/router/) runs every 10 minutes: extracts
archives, packs loose image folders as .cbz, files into Ebooks/Comics, and
triggers an ABS scan of the books library. It copies rather than moves, so torrents keep
seeding, and writes a .routed marker per item so re-runs are no-ops.
Libation's post-sync hook moves any .pdf/.epub/.mobi that came bundled
with an audiobook out of the audiobook tree into Books/Ebooks — Libation itself
cannot split output by file type (one Books location; its FileTemplate covers
"the saved pdf and audio files").
Gotchas worth knowing¶
RAR5 needs unrar-free — 7-Zip won't do it
Alpine's p7zip and its official 7zip package are both built without
the RAR codec: a valid RAR5 gives "Can't open as archive", and unrar isn't
packaged at all. The router installs unrar-free from edge/testing.
Scene comic releases also nest — a .zip containing a multipart
.partN.rar set containing the actual issue — so extraction runs up to three
bounded passes.
Unraid share dirs must be 777
New directories created with mkdir come out 755, and the SMB user then
can't write: the CIFS mount presents everything as uid 1000 but the
underlying mode wins. Media/Music/Audiobooks is 777; match it.
Searching for files: use the physical disks, not /mnt/user
A find /mnt/user … -iname '*.epub' returned 0 while
for d in /mnt/disk*; do find $d … found 82. The FUSE layer
under-reports; always cross-check per-disk before concluding something
doesn't exist.
Retired¶
Kavita (2026-08-07 → 2026-08-09) — a dedicated ebook/comic reader, retired once it was clear Audiobookshelf covered the actual requirement (Send-to-Kindle) without a second app. It was never configured, so nothing was lost. See the note under Reading it.
Readarr was archived upstream in June 2025 (unusable metadata, no maintainers) and its MCP server was removed from this repo on 2026-08-07. Acquisition stays manual through Prowlarr; there is deliberately no metadata-dependent *arr in this path. If automated grabbing is ever wanted, Kapowarr (comics) and Bindery (books) are the current candidates.