docker.recipes

Sonarr + Radarr Media Management

intermediate

Automated TV and movie management with Sonarr, Radarr, and Prowlarr.

Overview

Sonarr is a PVR (Personal Video Recorder) application designed for Usenet and BitTorrent users who want to automate their TV show downloads and library management. Born from the need to replace aging solutions like SickBeard, Sonarr monitors RSS feeds for new episodes, automatically downloads them based on quality profiles, and organizes them into your media library with proper naming conventions. When combined with Radarr (the movie equivalent) and Prowlarr (the indexer manager), this trio forms the backbone of modern automated media management systems. This three-component stack creates a powerful automation pipeline where Prowlarr manages all your torrent trackers and Usenet indexers in one central location, then syncs them to both Sonarr and Radarr. Instead of configuring the same 20+ indexers in each application separately, Prowlarr handles the indexer management while Sonarr focuses on TV show logic and Radarr handles movie-specific workflows. The applications communicate through APIs to coordinate downloads, avoid conflicts, and share quality profiles and naming conventions. Home media enthusiasts, cord-cutters, and anyone building a personal media server will find this stack invaluable for maintaining large libraries without manual intervention. The combination eliminates the tedious process of manually searching for, downloading, and organizing media files while ensuring consistent quality and naming standards across your entire collection. This setup integrates perfectly with media servers like Plex, Jellyfin, or Emby to create a fully automated entertainment system.

Key Features

  • Automatic episode and movie monitoring with season pack handling and backlog management
  • Centralized indexer management through Prowlarr with 500+ supported torrent trackers and Usenet indexers
  • Quality profiles with custom formats for resolution, codec, and release group preferences
  • Failed download handling with automatic blacklisting and retry logic
  • Calendar integration showing upcoming releases and missing episodes across both TV and movies
  • List integration with IMDb, Trakt, and other services for automatic library building
  • Metadata fetching and artwork management for complete media information
  • Cross-application API synchronization for indexer settings and search coordination

Common Use Cases

  • 1Home media server automation for cord-cutters wanting to maintain large TV and movie libraries
  • 2Plex or Jellyfin server backend management with automatic content acquisition and organization
  • 3Private tracker and Usenet community members needing efficient ratio management and release monitoring
  • 4Media archival projects requiring consistent naming, quality standards, and metadata
  • 5Remote media server management where manual downloads aren't practical
  • 6Multi-user household media systems with diverse content preferences and quality requirements
  • 7Backup and redundancy systems for existing media collections with automatic replacement of corrupted files

Prerequisites

  • Minimum 1GB RAM total (512MB for Sonarr, 256MB for Radarr, 256MB for Prowlarr) with 2GB+ recommended for large libraries
  • Docker and Docker Compose installed with ports 7878, 8989, and 9696 available
  • Active Usenet provider accounts and/or private tracker memberships for content sources
  • Download client like qBittorrent, Deluge, SABnzbd, or NZBGet running and accessible
  • Sufficient storage space for downloads directory and separate TV/movies directories with proper filesystem permissions
  • Basic understanding of quality profiles, release groups, and media naming conventions

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 prowlarr:
3 image: lscr.io/linuxserver/prowlarr:latest
4 container_name: prowlarr
5 restart: unless-stopped
6 environment:
7 - PUID=${PUID:-1000}
8 - PGID=${PGID:-1000}
9 - TZ=${TZ:-UTC}
10 volumes:
11 - prowlarr_config:/config
12 ports:
13 - "${PROWLARR_PORT:-9696}:9696"
14 networks:
15 - media-network
16
17 sonarr:
18 image: lscr.io/linuxserver/sonarr:latest
19 container_name: sonarr
20 restart: unless-stopped
21 environment:
22 - PUID=${PUID:-1000}
23 - PGID=${PGID:-1000}
24 - TZ=${TZ:-UTC}
25 volumes:
26 - sonarr_config:/config
27 - ${TV_PATH:-./tv}:/tv
28 - ${DOWNLOADS_PATH:-./downloads}:/downloads
29 ports:
30 - "${SONARR_PORT:-8989}:8989"
31 networks:
32 - media-network
33
34 radarr:
35 image: lscr.io/linuxserver/radarr:latest
36 container_name: radarr
37 restart: unless-stopped
38 environment:
39 - PUID=${PUID:-1000}
40 - PGID=${PGID:-1000}
41 - TZ=${TZ:-UTC}
42 volumes:
43 - radarr_config:/config
44 - ${MOVIES_PATH:-./movies}:/movies
45 - ${DOWNLOADS_PATH:-./downloads}:/downloads
46 ports:
47 - "${RADARR_PORT:-7878}:7878"
48 networks:
49 - media-network
50
51volumes:
52 prowlarr_config:
53 sonarr_config:
54 radarr_config:
55
56networks:
57 media-network:
58 driver: bridge

.env Template

.env
1# Media Management Stack
2PROWLARR_PORT=9696
3SONARR_PORT=8989
4RADARR_PORT=7878
5PUID=1000
6PGID=1000
7TZ=UTC
8TV_PATH=./tv
9MOVIES_PATH=./movies
10DOWNLOADS_PATH=./downloads

Usage Notes

  1. 1Prowlarr at http://localhost:9696
  2. 2Sonarr at http://localhost:8989
  3. 3Radarr at http://localhost:7878
  4. 4Connect Prowlarr to Sonarr/Radarr first

Individual Services(3 services)

Copy individual services to mix and match with your existing compose files.

prowlarr
prowlarr:
  image: lscr.io/linuxserver/prowlarr:latest
  container_name: prowlarr
  restart: unless-stopped
  environment:
    - PUID=${PUID:-1000}
    - PGID=${PGID:-1000}
    - TZ=${TZ:-UTC}
  volumes:
    - prowlarr_config:/config
  ports:
    - ${PROWLARR_PORT:-9696}:9696
  networks:
    - media-network
sonarr
sonarr:
  image: lscr.io/linuxserver/sonarr:latest
  container_name: sonarr
  restart: unless-stopped
  environment:
    - PUID=${PUID:-1000}
    - PGID=${PGID:-1000}
    - TZ=${TZ:-UTC}
  volumes:
    - sonarr_config:/config
    - ${TV_PATH:-./tv}:/tv
    - ${DOWNLOADS_PATH:-./downloads}:/downloads
  ports:
    - ${SONARR_PORT:-8989}:8989
  networks:
    - media-network
radarr
radarr:
  image: lscr.io/linuxserver/radarr:latest
  container_name: radarr
  restart: unless-stopped
  environment:
    - PUID=${PUID:-1000}
    - PGID=${PGID:-1000}
    - TZ=${TZ:-UTC}
  volumes:
    - radarr_config:/config
    - ${MOVIES_PATH:-./movies}:/movies
    - ${DOWNLOADS_PATH:-./downloads}:/downloads
  ports:
    - ${RADARR_PORT:-7878}:7878
  networks:
    - media-network

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 prowlarr:
5 image: lscr.io/linuxserver/prowlarr:latest
6 container_name: prowlarr
7 restart: unless-stopped
8 environment:
9 - PUID=${PUID:-1000}
10 - PGID=${PGID:-1000}
11 - TZ=${TZ:-UTC}
12 volumes:
13 - prowlarr_config:/config
14 ports:
15 - "${PROWLARR_PORT:-9696}:9696"
16 networks:
17 - media-network
18
19 sonarr:
20 image: lscr.io/linuxserver/sonarr:latest
21 container_name: sonarr
22 restart: unless-stopped
23 environment:
24 - PUID=${PUID:-1000}
25 - PGID=${PGID:-1000}
26 - TZ=${TZ:-UTC}
27 volumes:
28 - sonarr_config:/config
29 - ${TV_PATH:-./tv}:/tv
30 - ${DOWNLOADS_PATH:-./downloads}:/downloads
31 ports:
32 - "${SONARR_PORT:-8989}:8989"
33 networks:
34 - media-network
35
36 radarr:
37 image: lscr.io/linuxserver/radarr:latest
38 container_name: radarr
39 restart: unless-stopped
40 environment:
41 - PUID=${PUID:-1000}
42 - PGID=${PGID:-1000}
43 - TZ=${TZ:-UTC}
44 volumes:
45 - radarr_config:/config
46 - ${MOVIES_PATH:-./movies}:/movies
47 - ${DOWNLOADS_PATH:-./downloads}:/downloads
48 ports:
49 - "${RADARR_PORT:-7878}:7878"
50 networks:
51 - media-network
52
53volumes:
54 prowlarr_config:
55 sonarr_config:
56 radarr_config:
57
58networks:
59 media-network:
60 driver: bridge
61EOF
62
63# 2. Create the .env file
64cat > .env << 'EOF'
65# Media Management Stack
66PROWLARR_PORT=9696
67SONARR_PORT=8989
68RADARR_PORT=7878
69PUID=1000
70PGID=1000
71TZ=UTC
72TV_PATH=./tv
73MOVIES_PATH=./movies
74DOWNLOADS_PATH=./downloads
75EOF
76
77# 3. Start the services
78docker compose up -d
79
80# 4. View logs
81docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/sonarr-radarr-stack/run | bash

Troubleshooting

  • Prowlarr indexers showing 'Unable to connect' errors: Verify indexer credentials and check if the site requires VPN or has IP restrictions
  • Sonarr/Radarr not finding releases despite Prowlarr working: Ensure Prowlarr apps are properly configured with correct API keys and URLs
  • Downloads stuck in queue with 'No suitable indexer found': Check that Prowlarr has synced indexers to the requesting app and categories match
  • Permission denied errors when moving completed downloads: Verify PUID/PGID match the ownership of your media directories
  • Failed imports with 'Path does not exist' errors: Ensure download client and *arr apps use identical Docker volume mappings for the downloads folder
  • High memory usage and slow performance: Reduce RSS sync intervals, limit concurrent searches, and consider using SQLite optimization for large libraries

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space