the arr stack explained - sonarr, radarr, prowlarr, jellyfin setup guide
add a show to Sonarr, and within minutes it's downloaded, renamed, and showing up in Jellyfin. no manual searching, no renaming, no moving files. here's how the arr stack works and how Sonarr, Radarr, Prowlarr, and Jellyfin fit together in a self-hosted media server.
what's in the arr stack
- Prowlarr - indexer manager. one place to add and maintain torrent/usenet sources for all apps.
- Sonarr - TV show automation. monitors for new episodes, sends download requests, renames and organizes files.
- Radarr - movie automation. same as Sonarr but for movies.
- qBittorrent - the download client. receives requests from Sonarr/Radarr via API.
- Jellyfin - self-hosted media server. watches the library folders and streams everything to players.
- Jellyseerr - request interface. users browse and request movies/shows here; it creates entries in Sonarr/Radarr automatically.
how sonarr and radarr automate downloads
Jellyseerr (user request)
└── Sonarr/Radarr (automation)
└── Prowlarr (indexer search)
└── qBittorrent (download)
└── /downloads on disk
└── Sonarr/Radarr (rename + move)
└── /movies or /tv
└── Jellyfin (scans library, serves)
Sonarr and Radarr talk to Prowlarr to search for releases, pick the best one based on quality profiles, and send the magnet/torrent to qBittorrent. once the download finishes, they rename the file to a standard format, move it to the media library, and trigger a Jellyfin scan.
prowlarr as the indexer hub
before Prowlarr, each app had to be configured with every indexer separately — Sonarr had its own list, Radarr had its own list. Prowlarr centralizes all of that. you add an indexer once in Prowlarr, and Sonarr/Radarr both see it automatically through a sync.
sonarr and radarr quality profiles and custom formats
Sonarr and Radarr use quality profiles to decide which releases are acceptable and which are preferred. custom formats let you score releases by codec, so the arr stack automatically upgrades your library:
- x265/HEVC: +100 points
- AV1: +90 points
- x264: -100 points
"upgrades allowed" is enabled, so if an x264 copy is downloaded first and an x265 version becomes available later, Sonarr/Radarr will grab it automatically. the upgrade stops once a release hits score 100 (x265).
docker volume path consistency
the trickiest part of setting up the arr stack in Docker is making sure every container sees files at the same path. Sonarr downloads to /downloads, then moves the file to /tv. qBittorrent writes to /downloads. Jellyfin reads from /tv. if any of those paths differ between containers, the hardlink or move fails and Jellyfin can't find the file.
all apps must share the same Docker volumes, so /downloads inside Sonarr is the same physical directory as /downloads inside qBittorrent. this is required for Sonarr and Radarr to work with qBittorrent properly. storage-wise, a media server like this chews through disk space fast - a 4TB NAS drive fills up quicker than you'd expect once Sonarr and Radarr start grabbing full seasons in x265.
jellyfin hardware transcoding
Jellyfin sits at the end of the arr stack and just watches folders. it doesn't interact with the download pipeline at all - Sonarr/Radarr notify it via API when new content lands, and it refreshes the library. NVENC hardware transcoding on the RTX 3070 handles converting formats on the fly when a client doesn't support the original codec. this is what makes Jellyfin a solid self-hosted Plex alternative with no subscription required. the best hard drive for this kind of setup is a NAS-rated CMR drive - desktop drives aren't designed for 24/7 operation and will die faster under constant media server workloads.

CMR - NAS Optimized - 3yr Rescue Data Recovery
Built for always-on media servers and multi-drive setups
view on amazonaffiliate link - helps support the blog
eli5
imagine a librarian (Sonarr/Radarr) who monitors a wishlist and knows all the bookshops in town (Prowlarr). when a new item on the wishlist becomes available, the librarian calls a courier (qBittorrent) to go pick it up. once delivered, the librarian puts the item in the proper section with a proper label, then updates the card catalog (Jellyfin). when you walk into the library to browse (through Jellyseerr), you see everything available and can request new titles — which just adds them to the wishlist and starts the whole loop again.