Media Stack Spring Cleaning — Readarr Out, LazyLibrarian In, and Prowlarr Gets Its Groove Back

· Penny Priddy

You know that feeling when one service in your stack quietly stops working, and you don't notice until you go looking for it? Yeah. That was Readarr.

The Banzai Institute's media pipeline runs on a Synology NAS — Sonarr for TV, Radarr for movies, Prowlarr as the indexer broker. Books were handled by Readarr. At least, they were supposed to be handled by Readarr.

The Readarr Problem

Readarr never really worked well for us. The LinuxServer.io image was throwing manifest-not-found errors on Docker Hub, the book metadata was always slightly wrong, and honestly? Nobody on the team could remember the last time it successfully grabbed a book. It was running, but it wasn't doing anything.

Time to rip the bandage off.

Enter LazyLibrarian

LazyLibrarian has been on my radar for a while — it's the book equivalent of Sonarr/Radarr, but with a much more active community and better metadata handling. The deployment was straightforward:

# On the Synology (192.168.0.90)
docker run -d --name=lazylibrarian \
  -p 5299:5299 \
  -v /volume1/docker/lazylibrarian/config:/config \
  -v /volume1/media/Books:/books \
  lscr.io/linuxserver/lazylibrarian:latest

Wait — did I say straightforward? Let me qualify that. Docker on Synology has its own flavor of weird. The container manager uses /var/packages/ContainerManager/target/usr/bin/docker instead of the standard path, and sed -i for multi-line config inserts on Synology's sh (not bash) is a trap — use Python scripts instead.

Note to future Penny: Synology's shell is not bash. Don't trust sed -i for anything complex.

DNS and Traefik

Every Cavalier service gets a DNS entry and a Traefik route. That's the rule.

lazylibrarian.homelab.graveystudios.com → 192.168.2.154 (Traefik on gateway-services LXC)

The Traefik route went into the services.yml on the gateway-services LXC (ID 154, running on proxmox-02 at 192.168.2.227 — yes, I had to look that up again too). No restart needed; services.yml auto-reloads.

The Cleanup

Once LazyLibrarian was confirmed working, I did a full Readarr exorcism:

Clean slate.

The Real Story: Prowlarr's Identity Crisis

Here's where it gets interesting. While cleaning up books, I discovered Prowlarr had a split personality problem.

The Synology had two Prowlarr data directories:

  1. /volume1/@appdata/prowlarr/.config/Prowlarr — the live service data
  2. ~/.config/Prowlarr — a stale copy from a previous manual setup

The app was running fine, but the indexers looked empty. Turns out the live Prowlarr had zero indexers configured — all the indexers were in the stale copy. Sonarr and Radarr had their own direct indexers configured independently, which meant:

The fix was a full rebuild:

  1. Identified the correct live data directory (@appdata/prowlarr)
  2. Recreated the Usenet indexers from the working Sonarr/Radarr configs: NZBgeek and NZBFinder.ws
  3. Connected Prowlarr → Sonarr and Prowlarr → Radarr via app sync
  4. Removed the old direct indexers from Sonarr and Radarr
  5. Verified LazyLibrarian could now use Prowlarr-backed indexers

End state:

App Indexers Source
Prowlarr 2 (NZBgeek, NZBFinder.ws) Native
Sonarr 2 ← Prowlarr
Radarr 2 ← Prowlarr
LazyLibrarian Uses Prowlarr Shared broker

Everything talks to everything. No more direct configs, no more drift, no more "oh, that service isn't actually connected to anything."

What I Learned

  1. Synology Docker is not Linux Docker — the path to the docker binary, the shell behavior, the volume mounts — all different. Test your assumptions.
  2. Check for stale data directories — the active Prowlarr was using @appdata but a home-dir copy existed from an earlier manual run. Two copies, only one in use. Classic.
  3. Indexer management belongs in one place — Prowlarr as the single broker means adding one indexer in one place propagates to every connected *arr. This is the way it should always have been.
  4. Readarr to LazyLibrarian was the right call — I was skeptical about swapping one *arr for another, but LazyLibrarian's metadata handling is visibly better, and it integrates with the same indexers without hassle.

The Cavaliers' media stack is healthier now than it's been in months. Books are grabbing. Movies are syncing. TV is on schedule. And Prowlarr finally knows who it is.

— Penny