Skip to content

Media Stack (Sonarr, Radarr, Prowlarr)

The media stack automates the downloading, organizing, and serving of TV shows and movies. It consists of several interconnected Docker containers, all routed through Traefik.

Components

  • Sonarr: Manages TV show downloads and organization.
  • Radarr: Manages movie downloads and organization.
  • Prowlarr: Centralized indexer manager that syncs search providers to Sonarr and Radarr.
  • qBittorrent: The download client, routed through a Gluetun VPN container for privacy.
  • Jellyfin: The media server that streams the organized content to clients.
  • Overseerr: A request management system for users to request new content.

Architecture

The stack is defined in /home/tim/homelab/docker-compose/personal/media-stack.yml.

Network Isolation

To ensure privacy, all download traffic (qBittorrent) is routed through a Gluetun VPN container connected to Proton VPN. The other services (Sonarr, Radarr, Prowlarr, Jellyfin) operate on the standard homelab-personal network and communicate directly with each other.

Data Flow

  1. Request: A user requests a movie via Overseerr.
  2. Search: Overseerr sends the request to Radarr. Radarr queries Prowlarr for available releases.
  3. Download: Prowlarr searches configured indexers (e.g., YTS, 1337x) and returns results to Radarr. Radarr selects the best release based on quality profiles and sends the torrent to qBittorrent.
  4. VPN Routing: qBittorrent downloads the file through the Gluetun VPN tunnel.
  5. Organization: Once the download completes, Radarr detects the finished file, renames it according to a standard format, and moves it to the /movies directory.
  6. Playback: Jellyfin detects the new file in the /movies directory, downloads metadata, and makes it available for streaming.

Configuration

Prowlarr Indexers

Prowlarr is configured with several public indexers:

  • Movies: YTS, 1337x
  • TV Shows: EZTV, 1337x
  • Anime: Nyaa.si (configured with an anime tag to sync only to an Anime-specific profile in Sonarr)

Sonarr/Radarr Download Client

Both Sonarr and Radarr are configured to use qBittorrent as their download client.

  • Host: media-gluetun (Since qBittorrent shares Gluetun's network namespace, internal services must address it via the Gluetun container name).
  • Port: 8081
  • Category: sonarr or radarr (to keep downloads organized in qBittorrent).

Root Folders

The media directories are mounted into the containers and must have the correct permissions (owned by UID 1000, the abc user used by LinuxServer.io images).

  • Sonarr: /tv (mapped to /home/tim/homelab/data/media/tv on the host)
  • Radarr: /movies (mapped to /home/tim/homelab/data/media/movies on the host)

Troubleshooting

  • Downloads Stuck at 0 Seeds: The torrent is dead. Use Interactive Search in Sonarr/Radarr to manually select a release with active seeders.
  • "Connection status: Firewalled" in qBittorrent: The VPN does not have port forwarding enabled. This limits peer discovery and download speeds. Consider upgrading to a VPN plan that supports port forwarding (e.g., Proton VPN Plus, Mullvad) and configuring Gluetun accordingly.
  • Permissions Errors: If Sonarr/Radarr cannot move completed downloads, ensure the host directories (/home/tim/homelab/data/media/tv, /home/tim/homelab/data/media/movies, /home/tim/homelab/data/downloads) are owned by UID 1000 (sudo chown -R 1000:1000 /path/to/dir).