Sonarr + Radarr Media Management
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:latest4 container_name: prowlarr5 restart: unless-stopped6 environment: 7 - PUID=${PUID:-1000}8 - PGID=${PGID:-1000}9 - TZ=${TZ:-UTC}10 volumes: 11 - prowlarr_config:/config12 ports: 13 - "${PROWLARR_PORT:-9696}:9696"14 networks: 15 - media-network1617 sonarr: 18 image: lscr.io/linuxserver/sonarr:latest19 container_name: sonarr20 restart: unless-stopped21 environment: 22 - PUID=${PUID:-1000}23 - PGID=${PGID:-1000}24 - TZ=${TZ:-UTC}25 volumes: 26 - sonarr_config:/config27 - ${TV_PATH:-./tv}:/tv28 - ${DOWNLOADS_PATH:-./downloads}:/downloads29 ports: 30 - "${SONARR_PORT:-8989}:8989"31 networks: 32 - media-network3334 radarr: 35 image: lscr.io/linuxserver/radarr:latest36 container_name: radarr37 restart: unless-stopped38 environment: 39 - PUID=${PUID:-1000}40 - PGID=${PGID:-1000}41 - TZ=${TZ:-UTC}42 volumes: 43 - radarr_config:/config44 - ${MOVIES_PATH:-./movies}:/movies45 - ${DOWNLOADS_PATH:-./downloads}:/downloads46 ports: 47 - "${RADARR_PORT:-7878}:7878"48 networks: 49 - media-network5051volumes: 52 prowlarr_config: 53 sonarr_config: 54 radarr_config: 5556networks: 57 media-network: 58 driver: bridge.env Template
.env
1# Media Management Stack2PROWLARR_PORT=96963SONARR_PORT=89894RADARR_PORT=78785PUID=10006PGID=10007TZ=UTC8TV_PATH=./tv9MOVIES_PATH=./movies10DOWNLOADS_PATH=./downloadsUsage Notes
- 1Prowlarr at http://localhost:9696
- 2Sonarr at http://localhost:8989
- 3Radarr at http://localhost:7878
- 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 file2cat > docker-compose.yml << 'EOF'3services:4 prowlarr:5 image: lscr.io/linuxserver/prowlarr:latest6 container_name: prowlarr7 restart: unless-stopped8 environment:9 - PUID=${PUID:-1000}10 - PGID=${PGID:-1000}11 - TZ=${TZ:-UTC}12 volumes:13 - prowlarr_config:/config14 ports:15 - "${PROWLARR_PORT:-9696}:9696"16 networks:17 - media-network1819 sonarr:20 image: lscr.io/linuxserver/sonarr:latest21 container_name: sonarr22 restart: unless-stopped23 environment:24 - PUID=${PUID:-1000}25 - PGID=${PGID:-1000}26 - TZ=${TZ:-UTC}27 volumes:28 - sonarr_config:/config29 - ${TV_PATH:-./tv}:/tv30 - ${DOWNLOADS_PATH:-./downloads}:/downloads31 ports:32 - "${SONARR_PORT:-8989}:8989"33 networks:34 - media-network3536 radarr:37 image: lscr.io/linuxserver/radarr:latest38 container_name: radarr39 restart: unless-stopped40 environment:41 - PUID=${PUID:-1000}42 - PGID=${PGID:-1000}43 - TZ=${TZ:-UTC}44 volumes:45 - radarr_config:/config46 - ${MOVIES_PATH:-./movies}:/movies47 - ${DOWNLOADS_PATH:-./downloads}:/downloads48 ports:49 - "${RADARR_PORT:-7878}:7878"50 networks:51 - media-network5253volumes:54 prowlarr_config:55 sonarr_config:56 radarr_config:5758networks:59 media-network:60 driver: bridge61EOF6263# 2. Create the .env file64cat > .env << 'EOF'65# Media Management Stack66PROWLARR_PORT=969667SONARR_PORT=898968RADARR_PORT=787869PUID=100070PGID=100071TZ=UTC72TV_PATH=./tv73MOVIES_PATH=./movies74DOWNLOADS_PATH=./downloads75EOF7677# 3. Start the services78docker compose up -d7980# 4. View logs81docker compose logs -fOne-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 | bashTroubleshooting
- 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
Components
sonarrradarrprowlarr
Tags
#sonarr#radarr#prowlarr#automation#media-management
Category
Media & EntertainmentAd Space
Shortcuts: C CopyF FavoriteD Download