services: sonarr: image: lscr.io/linuxserver/sonarr:4.0.16 container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - sonarr_config:/config - /path/to/tv:/tv - /path/to/downloads:/downloads ports: - "8989:8989" restart: unless-stopped
services: sonarr: image: lscr.io/linuxserver/sonarr:4.0.16 container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - sonarr_config:/config - /path/to/tv:/tv - /path/to/downloads:/downloads ports: - "8989:8989" restart: unless-stopped
services: sonarr: image: lscr.io/linuxserver/sonarr:4.0.16 container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - sonarr_config:/config - /path/to/tv:/tv - /path/to/downloads:/downloads ports: - "8989:8989" restart: unless-stopped
services: radarr: image: lscr.io/linuxserver/radarr:6.0.4 container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - radarr_config:/config - /path/to/movies:/movies - /path/to/downloads:/downloads ports: - "7878:7878" restart: unless-stopped
services: radarr: image: lscr.io/linuxserver/radarr:6.0.4 container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - radarr_config:/config - /path/to/movies:/movies - /path/to/downloads:/downloads ports: - "7878:7878" restart: unless-stopped
services: radarr: image: lscr.io/linuxserver/radarr:6.0.4 container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - radarr_config:/config - /path/to/movies:/movies - /path/to/downloads:/downloads ports: - "7878:7878" restart: unless-stopped
services: sonarr: image: lscr.io/linuxserver/sonarr:4.0.16 container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - sonarr_config:/config - /data/media/tv:/tv - /data/downloads:/downloads ports: - "8989:8989" restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8989/ping"] interval: 30s timeout: 10s retries: 3 start_period: 40s radarr: image: lscr.io/linuxserver/radarr:6.0.4 container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - radarr_config:/config - /data/media/movies:/movies - /data/downloads:/downloads ports: - "7878:7878" restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:7878/ping"] interval: 30s timeout: 10s retries: 3 start_period: 40s prowlarr: image: lscr.io/linuxserver/prowlarr:2.3.0 container_name: prowlarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - prowlarr_config:/config ports: - "9696:9696" restart: unless-stopped qbittorrent: image: lscr.io/linuxserver/qbittorrent:5.1.4 container_name: qbittorrent environment: - PUID=1000 - PGID=1000 - TZ=America/New_York - WEBUI_PORT=8080 volumes: - qbittorrent_config:/config - /data/downloads:/downloads ports: - "8080:8080" # Web UI - "6881:6881" # BitTorrent traffic - "6881:6881/udp" restart: unless-stopped volumes: sonarr_config: radarr_config: prowlarr_config: qbittorrent_config:
services: sonarr: image: lscr.io/linuxserver/sonarr:4.0.16 container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - sonarr_config:/config - /data/media/tv:/tv - /data/downloads:/downloads ports: - "8989:8989" restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8989/ping"] interval: 30s timeout: 10s retries: 3 start_period: 40s radarr: image: lscr.io/linuxserver/radarr:6.0.4 container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - radarr_config:/config - /data/media/movies:/movies - /data/downloads:/downloads ports: - "7878:7878" restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:7878/ping"] interval: 30s timeout: 10s retries: 3 start_period: 40s prowlarr: image: lscr.io/linuxserver/prowlarr:2.3.0 container_name: prowlarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - prowlarr_config:/config ports: - "9696:9696" restart: unless-stopped qbittorrent: image: lscr.io/linuxserver/qbittorrent:5.1.4 container_name: qbittorrent environment: - PUID=1000 - PGID=1000 - TZ=America/New_York - WEBUI_PORT=8080 volumes: - qbittorrent_config:/config - /data/downloads:/downloads ports: - "8080:8080" # Web UI - "6881:6881" # BitTorrent traffic - "6881:6881/udp" restart: unless-stopped volumes: sonarr_config: radarr_config: prowlarr_config: qbittorrent_config:
services: sonarr: image: lscr.io/linuxserver/sonarr:4.0.16 container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - sonarr_config:/config - /data/media/tv:/tv - /data/downloads:/downloads ports: - "8989:8989" restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8989/ping"] interval: 30s timeout: 10s retries: 3 start_period: 40s radarr: image: lscr.io/linuxserver/radarr:6.0.4 container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - radarr_config:/config - /data/media/movies:/movies - /data/downloads:/downloads ports: - "7878:7878" restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:7878/ping"] interval: 30s timeout: 10s retries: 3 start_period: 40s prowlarr: image: lscr.io/linuxserver/prowlarr:2.3.0 container_name: prowlarr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - prowlarr_config:/config ports: - "9696:9696" restart: unless-stopped qbittorrent: image: lscr.io/linuxserver/qbittorrent:5.1.4 container_name: qbittorrent environment: - PUID=1000 - PGID=1000 - TZ=America/New_York - WEBUI_PORT=8080 volumes: - qbittorrent_config:/config - /data/downloads:/downloads ports: - "8080:8080" # Web UI - "6881:6881" # BitTorrent traffic - "6881:6881/udp" restart: unless-stopped volumes: sonarr_config: radarr_config: prowlarr_config: qbittorrent_config: - You primarily watch TV shows and want new episodes grabbed automatically as they air
- You want season pack support for catching up on older series
- You need granular series monitoring (all seasons, latest only, first season only)
- You follow ongoing series and want hands-off episode tracking
- You want calendar-based air date monitoring - You primarily collect movies and want automated quality upgrades
- You want to maintain a movie wishlist that auto-downloads when releases become available
- You prefer browsing and adding movies from TMDb/IMDb/Trakt lists
- You want to track theatrical, digital, and physical release dates for upcoming films
- You need simple one-file-per-title library management - You watch both TV shows and movies (this is most people)
- You want a complete automated media pipeline
- You are building a full *arr stack with Prowlarr, Bazarr, and a download client - Shared downloads directory. Both Sonarr and Radarr point to the same /data/downloads path so they can see completed downloads from the shared download client.
- Separate media directories. TV shows go to /data/media/tv, movies go to /data/media/movies. Keep them separate for clean library organization.
- Prowlarr as the indexer hub. Configure your indexers once in Prowlarr, and it syncs them to both Sonarr and Radarr automatically. No duplicate indexer configuration.
- Single download client. Both tools send downloads to the same qBittorrent instance. They tag downloads with their app name so there are no conflicts.
- Add Bazarr for subtitles. Bazarr integrates with both Sonarr and Radarr to automatically download subtitles for your media.
- Feed into Jellyfin or Plex. Point your media server at /data/media/ and it picks up both TV shows and movies. Both Sonarr and Radarr can send notifications to your media server when new content is imported. - How to Self-Host Sonarr
- How to Self-Host Radarr
- How to Self-Host Prowlarr
- How to Self-Host qBittorrent
- How to Self-Host Bazarr
- How to Self-Host Jellyfin
- Jellyfin vs Plex: Which Media Server?
- Docker Compose Basics