Skip to content

Reading Stack (Comics, Ebooks, Audiobooks)

Updated: 2026-01-04 Architecture: Portable-first with travel downloads support

Overview

The reading stack operates independently of the external drive pool, making it perfect for travel. All services run from the internal 8TB NVMe drive.

ServicePurposePortAlways Available
KomgaComics/Manga server8081
KavitaeBooks/Comics reader5000
KomfMetadata fetcher8085
AudiobookshelfAudiobook streaming13378
SuwayomiManga downloader4567
ProwlarrIndexer manager9696
ReadarreBook management8787✓ ⚠️ DEPRECATED
MylarComics management8090
SABnzbd-PortableUsenet downloads8180✓ (NEW)
Transmission-PortableTorrent fallback9092✓ (NEW)

Quick Start

bash
# Start the reading stack
docker compose -f docker-compose.reading.yml up -d

# Or use smart-start.sh which auto-detects available storage
./scripts/smart-start.sh up

Architecture

Storage Paths (via .env)

bash
# Internal NVMe paths (always available)
COMICS_ROOT=/var/mnt/fast8tb/Cloud/OneDrive/Books/Comics
EBOOKS_ROOT=/var/mnt/fast8tb/Cloud/OneDrive/Books/eBooks
AUDIOBOOKS_ROOT=/var/mnt/fast8tb/Cloud/OneDrive/Books/Audiobooks
CONFIG_ROOT=/var/mnt/fast8tb/config

# Travel downloads (internal, not pool)
DOWNLOADS_ROOT_PORTABLE=/var/mnt/fast8tb/Local/downloads
SUWAYOMI_DOWNLOADS_PORTABLE=/var/mnt/fast8tb/Local/downloads/suwayomi-chapters

Compose Files

FilePurposePool Required
docker-compose.reading.ymlReading stack + travel downloadsNo
docker-compose.ymlFull media stack (Plex, *arr, Tdarr)Yes

Mode Detection

The smart-start.sh script automatically detects which mode to use:

Travel Mode (no external bays)    Full Mode (bays connected)
─────────────────────────────     ─────────────────────────
/var/mnt/fast8tb ✓                /var/mnt/fast8tb ✓
/var/mnt/pool ✗                   /var/mnt/pool ✓
        ↓                                 ↓
docker-compose.reading.yml        + docker-compose.yml
(10 services)                     (30+ services)

Travel Downloads (NEW)

While traveling, you can still download content:

SABnzbd-Portable (Port 8180)

  • Downloads to /var/mnt/fast8tb/Local/downloads
  • Separate config from full-stack SABnzbd
  • Configure Prowlarr to use http://sabnzbd-portable:8080 or localhost:8180

Transmission-Portable (Port 9092)

  • Torrent fallback when usenet misses
  • Uses Flood web UI
  • Configure Prowlarr to use http://transmission-portable:9091 or localhost:9092

When You Return Home

bash
# 1. Move travel downloads to pool
mv /var/mnt/fast8tb/Local/downloads/complete/* /var/mnt/pool/downloads/complete/

# 2. Use Sonarr/Radarr manual import
# Web UI → Wanted → Manual Import → Select moved files

OPDS Endpoints

ServiceOPDS URLClients
Komgahttp://<host>:8081/opds/v1.2Panels, Chunky
Kavitahttp://<host>:5000/opdsMoon Reader, Marvin
AudiobookshelfWeb only (native apps available)ABS app

Service Details

Komga (Comics/Manga)

  • Image: ghcr.io/gotson/komga:1.23.6
  • Library path: /comics${COMICS_ROOT}
  • Web UI: Komelia at port 8081
  • Memory: 4-8GB heap (-Xms4g -Xmx8g)
  • Scans: Hourly cron

Kavita (eBooks)

  • Image: jvmilazz0/kavita:latest
  • Library paths: /books, /comics
  • Config: ${CONFIG_ROOT}/kavita

Komf (Metadata)

  • Image: sndxr/komf:1.3.0
  • Integrates with: Komga + Kavita
  • Sources: MangaUpdates, AniList, MAL, ComicVine, MangaDex
  • Requires: API keys in .env

Audiobookshelf

  • Image: ghcr.io/advplyr/audiobookshelf:latest
  • Paths: /audiobooks, /ebooks, /downloads
  • Port: 13378 (maps to internal 80)

Suwayomi (Manga Sources)

  • Image: ghcr.io/suwayomi/suwayomi-server:stable
  • Downloads to: ${SUWAYOMI_DOWNLOADS_PORTABLE}
  • Purpose: Read manga from source sites, download chapters

Capability Matrix

CapabilityTravel ModeFull Mode
Read Comics/Manga✓ Komga✓ Komga
Read eBooks✓ Kavita✓ Kavita
Listen Audiobooks✓ ABS✓ ABS
Browse/Search✓ Prowlarr✓ Prowlarr
One-off Downloads✓ SABnzbd-Portable✓ SABnzbd
Manga Chapter Sync✓ Suwayomi✓ Suwayomi
TV/Movie Management✓ Sonarr/Radarr
Plex Streaming
Transcoding✓ Tdarr

Health Checks

bash
# Check reading stack status
./scripts/smart-start.sh status

# Or directly
docker compose -f docker-compose.reading.yml ps

Troubleshooting

Komga shows "Library not found"

bash
# Verify comics path is mounted
ls -la /var/mnt/fast8tb/Cloud/OneDrive/Books/Comics

# Check container logs
docker logs komga

Komf metadata not fetching

bash
# Verify API keys in .env
grep KOMF_ .env

# Check komf logs
docker logs komf

Downloads failing in travel mode

bash
# Verify portable downloads directory exists
mkdir -p /var/mnt/fast8tb/Local/downloads/{complete,incomplete}

# Check SABnzbd-portable logs
docker logs sabnzbd-portable

Deprecation Notices

Readarr ⚠️

Status: RETIRED (June 27, 2025)

Readarr is included for backwards compatibility but receives NO security updates. The current image (linuxserver/readarr:develop-0.4.18.2805-ls157) is pinned and unmaintained.

Recommended replacement: Bookshelf (community fork)

Migration guide: See Bookshelf Migration Decision

For new setups, consider:

  • Audiobookshelf for audiobooks (already included)
  • Kavita for ebooks (already included)
  • Calibre-Web for ebook management (not in stack, but compatible)

Built with ❤️ following Bell Labs standards. Dedicated to Stan Eisenstat.