Media pipeline rewiring: untangling Sonarr/Radarr/Prowlarr/rdt-client after a Docker settings loss
Why: A recent Docker error wiped/regenerated a chunk of the *arr stack's settings, and nothing downloaded anymore — Sonarr auto-grabs were silent, manual grabs came back "Release was blocklisted," Radarr searches threw "try again later," and Prowlarr complained the download client wasn't configured. Damien asked to troubleshoot end to end.
It wasn't one bug — it was a chain of small mismatches the rebuild left behind. I worked entirely through the apps' REST APIs (not by editing their live SQLite under a running container) except for the two rdt-client settings, which are cached in memory and required a stop/edit/start. The whole stack lives on the media-downloads_default Docker network, so containers can and should reach each other by service name. Two structural lessons came out of it: (1) containers must talk to each other by service name on internal ports, never via the host IP 192.168.1.136 (host-hairpin from inside a container is unreliable); and (2) the Docker rebuild regenerated Prowlarr's API key, which silently orphaned every synced indexer still holding the old one.
1. The stack as it stands
Confirmed layout, all on media-downloads_default:
- sonarr (8989) — config
/home/sonarr/data, media/media/plex2→/data. TV downloads land in/media/plex2/torbox_downloads. - radarr (7878) — config
/home/radarr/data, media/media/plex1→/data. Movie downloads in/media/plex1/torbox_downloads. - prowlarr (9696) — config
/home/prowlarr/data. - rdtclient (6500, TV) — downloads
/media/plex2/torbox_downloads→/data/downloads; db/home/rdtclient/data. - rdtclient-movies (6501→6500, movies) — downloads
/media/plex1/torbox_downloads→/data/downloads; db/home/plex/rdtclient-movies/db.
The movies side was already wired correctly and became the reference for fixing the TV side.
2. rdt-client (TV): premature removal + Windows-default path
Two settings on the TV instance explained "it downloads, then disappears, and never imports":
- Action:
Provider:Default:FinishedActionwasRemoveAllTorrents(movies was0/none) — it yanked each torrent the moment it finished, before Sonarr could import. Set to0. - Action:
DownloadClient:MappedPathwas the Windows defaultC:\Downloads(movies was/data/downloads). rdt-client reports that mapped prefix to the *arr, so Sonarr sawC:\Downloads\tv\…— "not a valid alpine path." Set to/data/downloads. - Both edited via
sqlite3on/home/rdtclient/data/rdtclient.dbwith the container stopped (WAL checkpointed first), then restarted to clear the in-memory cache.
3. Remote path mappings (host string must match the client's host)
An *arr remote path mapping only fires when its Host exactly matches the download client's Host. After fix #2 both rdt-clients report /data/downloads/<category>/…, which the *arr translates to /data/torbox_downloads/<category>/…:
- Action (Sonarr): client host stays
rdtclient.(Docker DNS, reachable). Repointed its path mapping host from192.168.1.136→rdtclient.so the two match. - Action (Radarr): client was on
192.168.1.136:6501(host-hairpin) and failing with "Unable to communicate with RDTClient." Switched it tordtclient-movies:6500(internal DNS, returned qBitv4.3.2on test) and repointed its path mapping host tordtclient-moviesto match.
4. Cleared the self-inflicted blocklist
Because imports had been failing for days, Sonarr auto-failed and blocklisted 9 releases — which is why interactive search kept returning "Release was blocklisted" on titles Damien never touched. Deleted all 9 via DELETE /api/v3/blocklist/bulk. Radarr's blocklist was already empty.
5. Stale indexers pointing at the old Prowlarr API key
This was the subtle one. The oldest synced indexers in both *arrs (The Pirate Bay, LimeTorrents, YTS) pointed at the external URL https://prowlarr.skyhouse.dev/1/ carrying Prowlarr's previous API key (93d5894…; current is 373e5185…) and returned 401 Unauthorized. Newer synced indexers correctly used internal http://prowlarr:9696/….
- Action: deleted the orphaned/stale indexers from Sonarr and Radarr, then triggered Prowlarr's
ApplicationIndexerSyncto recreate them with the internal URL and current key. All indexers now test OK in both apps. - Prowlarr currently serves six indexers: The Pirate Bay, 1337x, EZTV, YTS, LimeTorrents, TorrentDownload.
6. Prowlarr download clients (for direct grabs)
Prowlarr had zero download clients, hence "Download client not configured yet" on direct grabs (a convenience path; the normal flow goes through the *arrs).
- Action: added two qBittorrent-protocol clients in Prowlarr —
rdtclient-tv(rdtclient:6500, categorytv) andrdtclient-movies(rdtclient-movies:6500, categoryradarr). Both test OK.
7. Radarr collection root folder
Radarr's library root (/data/Movies) was fine, but the "Hard Core Logo Collection" carried a dead /movies root path. Repointed it to /data/Movies. No actual movies were misfiled.
Net effect: all three apps report clean health, every indexer and both download clients test green, and the TV import path is finally consistent with the (already-working) movies side. Real-world grab/import verification left to Damien.
← Back to Admin Hub