Media intermediate ⏱ 60 minutes

*Arr Stack: Complete Media Automation Guide

Master Sonarr, Radarr, and Prowlarr for automated media management. From setup to AI integration.

By homelabbing.io • 2025-12-16
#sonarr#radarr#prowlarr#media-automation#docker

The *arr stack is a collection of media management applications that automate the entire process of searching, downloading, organizing, and managing your media library. This comprehensive guide will walk you through deploying Sonarr, Radarr, Prowlarr, and related tools to create a fully automated media pipeline.

What is the *arr Stack?

The *arr ecosystem consists of specialized applications for different media types, all built on a common architecture. These tools monitor your wanted content, search for releases, download them automatically, organize files with proper naming, and integrate with your media server.

Core Components

Sonarr:

  • TV show automation
  • Episode tracking and calendar
  • Quality profiles and upgrades
  • Season pack handling
  • Series monitoring

Radarr:

  • Movie automation
  • Release monitoring
  • Quality management
  • Collection support
  • Multi-format handling

Prowlarr:

  • Unified indexer management
  • Searches across all trackers
  • Syncs to Sonarr/Radarr automatically
  • Built-in search capabilities
  • Indexer testing and stats

Supporting Tools:

  • Lidarr: Music automation
  • Readarr: Books and comics
  • Bazarr: Subtitle automation
  • Overseerr/Jellyseerr: User request management

Why Use the *arr Stack?

Automation:

  • Hands-free media acquisition
  • Automatic quality upgrades
  • Episode/movie release monitoring
  • Proper file organization
  • Integration with download clients

Quality Control:

  • Custom quality profiles
  • Preferred word scoring
  • Size limits and restrictions
  • Format preferences (x265, HDR, etc.)
  • Release group preferences

Integration:

  • Works with Plex, Jellyfin, Emby
  • Supports multiple download clients
  • Webhook notifications
  • API for custom automation
  • Metadata management

Prerequisites

Before starting, ensure you have:

  • Docker and Docker Compose installed
  • Download client configured (qBittorrent, Transmission, SABnzbd, NZBGet)
  • Media server running (Plex or Jellyfin)
  • Indexer accounts (private trackers or Usenet indexers)
  • At least 4GB RAM available
  • Storage for media library

Understanding the Workflow

The *arr automation workflow:

1. You add wanted movie/show to Radarr/Sonarr
2. Prowlarr searches configured indexers
3. Release found matching quality profile
4. Sent to download client (qBittorrent, etc.)
5. Download completes
6. *arr imports and renames file
7. Moved to media library with proper structure
8. Media server (Plex/Jellyfin) notified
9. Library scanned and metadata fetched
10. Content available for streaming

Directory Structure

Create organized directories for the entire stack:

# Create application config directories
mkdir -p /opt/arr-stack/{sonarr,radarr,prowlarr,bazarr,overseerr}

# Create media directories
mkdir -p /media/{tv,movies,downloads}

# Create download client subdirectories
mkdir -p /media/downloads/{complete,incomplete}

# Set ownership
sudo chown -R $USER:$USER /opt/arr-stack
sudo chown -R $USER:$USER /media

Directory Explanation:

  • /opt/arr-stack/*: Application configurations and databases
  • /media/tv: Final TV show library
  • /media/movies: Final movie library
  • /media/downloads/incomplete: Active downloads
  • /media/downloads/complete: Completed downloads awaiting import

Docker Compose Configuration

Create /opt/arr-stack/docker-compose.yml:

version: '3.8'

services:
  prowlarr:
    image: linuxserver/prowlarr:latest
    container_name: prowlarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /opt/arr-stack/prowlarr:/config
    ports:
      - 9696:9696

  sonarr:
    image: linuxserver/sonarr:latest
    container_name: sonarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /opt/arr-stack/sonarr:/config
      - /media/tv:/tv
      - /media/downloads:/downloads
    ports:
      - 8989:8989

  radarr:
    image: linuxserver/radarr:latest
    container_name: radarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /opt/arr-stack/radarr:/config
      - /media/movies:/movies
      - /media/downloads:/downloads
    ports:
      - 7878:7878

  bazarr:
    image: linuxserver/bazarr:latest
    container_name: bazarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /opt/arr-stack/bazarr:/config
      - /media/tv:/tv
      - /media/movies:/movies
    ports:
      - 6767:6767

  overseerr:
    image: sctx/overseerr:latest
    container_name: overseerr
    restart: unless-stopped
    environment:
      - LOG_LEVEL=info
      - TZ=America/New_York
    volumes:
      - /opt/arr-stack/overseerr:/app/config
    ports:
      - 5055:5055

  qbittorrent:
    image: linuxserver/qbittorrent:latest
    container_name: qbittorrent
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - WEBUI_PORT=8080
    volumes:
      - /opt/arr-stack/qbittorrent:/config
      - /media/downloads:/downloads
    ports:
      - 8080:8080
      - 6881:6881
      - 6881:6881/udp

Configuration Notes:

  • Replace PUID and PGID with your user ID (id -u and id -g)
  • Update TZ to your timezone
  • All apps use LinuxServer.io images for consistency
  • Shared /downloads directory enables atomic moves

Deployment

Start the entire stack:

cd /opt/arr-stack
docker-compose up -d

Verify all containers running:

docker-compose ps

All services should show “Up” status.

qBittorrent Configuration

Configure the download client first, as *arr apps depend on it.

Initial Setup

  1. Access qBittorrent at http://YOUR-SERVER-IP:8080

  2. Default login:

    • Username: admin
    • Password: Check logs: docker logs qbittorrent | grep "temporary password"
  3. Change password immediately:

    • Tools → Options → Web UI → Authentication
    • Set new password
    • Click Save

Download Settings

Tools → Options → Downloads:

  • Default Save Path: /downloads/incomplete
  • Keep incomplete torrents in: /downloads/incomplete
  • Copy .torrent files to: Leave blank
  • Copy .torrent files for finished downloads to: Leave blank

Category Settings: Create categories for organization:

  1. Right-click in left sidebar → Add category
  2. Add categories:
    • sonarr with save path /downloads/complete/sonarr
    • radarr with save path /downloads/complete/radarr

Connection Settings:

  • Port used for incoming connections: 6881
  • Enable UPnP/NAT-PMP: Enabled
  • Use proxy for peer connections: Disabled (unless using VPN)

Speed Settings:

  • Global upload rate limit: 1024 KiB/s (adjust for your connection)
  • Alternative rate limits: Configure if desired

BitTorrent Settings:

  • Privacy:
    • Enable DHT: Enabled
    • Enable PeX: Enabled
    • Enable Local Peer Discovery: Enabled
  • Seeding Limits:
    • When ratio reaches: 2.0 (or per tracker rules)
    • Then: Pause torrent

Click Save at bottom.

Prowlarr Configuration

Prowlarr manages all indexers and syncs them to Sonarr/Radarr automatically.

Initial Setup

  1. Access Prowlarr at http://YOUR-SERVER-IP:9696
  2. Complete the setup wizard

Adding Indexers

Add Public Indexers (for testing):

  1. Indexers → Add Indexer
  2. Search for indexer name (e.g., “1337x”, “RARBG alternatives”)
  3. Configure:
    • Name: Keep default
    • Enable RSS Sync: Checked
    • Enable Automatic Search: Checked
    • Enable Interactive Search: Checked
  4. Click Test then Save

Add Private Trackers:

  1. Indexers → Add Indexer
  2. Find your tracker
  3. Configure:
    • Username/Password or API key
    • Cookie if required
    • Categories to search
  4. Test and save

Recommended Indexers (if you have access):

  • Private: TorrentLeech, IPTorrents, PrivateHD
  • Public: 1337x, EZTV, YTS
  • Usenet: NZBGeek, NZBPlanet, DrunkenSlug

Configure Apps

Connect Prowlarr to Sonarr and Radarr:

Settings → Apps → Add Application:

For Sonarr:

  1. Select Sonarr
  2. Configuration:
    • Sync Level: Full Sync
    • Prowlarr Server: http://localhost:9696
    • Sonarr Server: http://sonarr:8989
    • API Key: Get from Sonarr (Settings → General → Security)
  3. Click Test then Save

For Radarr:

  1. Select Radarr
  2. Configuration:
    • Sync Level: Full Sync
    • Prowlarr Server: http://localhost:9696
    • Radarr Server: http://radarr:7878
    • API Key: Get from Radarr (Settings → General → Security)
  3. Click Test then Save

Prowlarr will now automatically sync all indexers to both apps.

Sonarr Configuration

Sonarr handles TV show automation.

Initial Setup

  1. Access Sonarr at http://YOUR-SERVER-IP:8989
  2. Complete setup wizard

Download Client Configuration

Settings → Download Clients → Add:

Select qBittorrent:

  • Name: qBittorrent
  • Enable: Checked
  • Host: qbittorrent
  • Port: 8080
  • Username: admin
  • Password: Your qBittorrent password
  • Category: sonarr
  • Initial State: Start
  • Sequential Order: Disabled
  • First and Last First: Disabled

Click Test then Save.

Media Management

Settings → Media Management:

Episode Naming:

  • Rename Episodes: Checked
  • Replace Illegal Characters: Checked

Standard Episode Format:

{Series Title} - S{season:00}E{episode:00} - {Episode Title} {Quality Full}

Daily Episode Format:

{Series Title} - {Air-Date} - {Episode Title} {Quality Full}

Anime Episode Format:

{Series Title} - S{season:00}E{episode:00} - {Episode Title}

Series Folder Format:

{Series Title} ({Series Year})

Season Folder Format:

Season {season:00}

Multi-Episode Style: Scene

Root Folders:

  • Click Add Root Folder
  • Path: /tv
  • Click OK

File Management:

  • Unmonitor Deleted Episodes: Checked
  • Download Propers and Repacks: Do Not Prefer
  • Analyse video files: Checked
  • Change File Date: None
  • Recycling Bin: Leave blank (or set if desired)

Permissions:

  • Set Permissions: Checked (if needed)
  • chmod Folder: 755
  • chmod Group: Your group

Click Save Changes.

Quality Profiles

Settings → Profiles → Quality Profiles:

Create “HD-1080p” Profile:

  1. Click + to add new profile
  2. Name: HD-1080p
  3. Upgrades Allowed: Checked
  4. Upgrade Until: Bluray-1080p
  5. Qualities (in order):
    • Bluray-1080p (Checked)
    • WEB-1080p (Checked)
    • HDTV-1080p (Checked)
    • Bluray-720p (Unchecked)
    • WEB-720p (Unchecked)
  6. Click Save

Create “Any” Profile (for testing):

  • Name: Any
  • Upgrades Allowed: Checked
  • Check all quality options
  • Click Save

Custom Formats (Optional)

For advanced quality control:

Settings → Profiles → Custom Formats:

Create formats for:

  • Preferred release groups
  • HDR/DV content
  • x265/HEVC encoding
  • Audio quality (Atmos, DTS-X)

Example: Prefer x265:

  1. Click +
  2. Name: x265
  3. Add condition:
    • Release Title contains: x265|hevc
  4. Save

Then in Quality Profile:

  • Custom Format Score: x265 = 50 points

Connect to Media Server

Settings → Connect → Add:

For Plex:

  1. Select Plex Media Server
  2. Configuration:
    • Host: YOUR-PLEX-IP
    • Port: 32400
    • Auth Token: Get from Plex account
    • Update Library: Checked
  3. Test and save

For Jellyfin:

  1. Select Emby/Jellyfin
  2. Configuration:
    • Host: YOUR-JELLYFIN-IP
    • Port: 8096
    • API Key: From Jellyfin dashboard
    • Update Library: Checked
  3. Test and save

Radarr Configuration

Radarr handles movie automation with similar configuration to Sonarr.

Initial Setup

  1. Access Radarr at http://YOUR-SERVER-IP:7878
  2. Complete setup wizard

Download Client Configuration

Settings → Download Clients → Add → qBittorrent:

  • Name: qBittorrent
  • Host: qbittorrent
  • Port: 8080
  • Username: admin
  • Password: Your qBittorrent password
  • Category: radarr

Test and save.

Media Management

Settings → Media Management:

Movie Naming:

  • Rename Movies: Checked
  • Replace Illegal Characters: Checked

Standard Movie Format:

{Movie Title} ({Release Year}) {Quality Full}

Movie Folder Format:

{Movie Title} ({Release Year})

Root Folders:

  • Add Root Folder: /movies

File Management:

  • Unmonitor Deleted Movies: Checked
  • Download Propers and Repacks: Do Not Upgrade Automatically
  • Analyse video files: Checked
  • Change File Date: None

Click Save Changes.

Quality Profiles

Settings → Profiles:

Create “HD” Profile:

  1. Name: HD
  2. Upgrades Allowed: Checked
  3. Upgrade Until: Bluray-1080p
  4. Minimum Custom Format Score: 0
  5. Qualities:
    • Bluray-1080p
    • WEB-1080p
    • Bluray-720p
    • WEB-720p

Create “4K” Profile (if desired):

  1. Name: 4K
  2. Upgrade Until: Bluray-2160p
  3. Qualities:
    • Bluray-2160p
    • WEB-2160p

Custom Formats

Import community-maintained formats from TRaSH Guides:

Settings → Profiles → Custom Formats:

Common formats to create:

  • x265: Prefer HEVC encoding
  • REMUX: Prefer highest quality
  • HDR: HDR content preference
  • DV: Dolby Vision preference

Example Custom Format JSON (x265):

{
  "name": "x265",
  "includeCustomFormatWhenRenaming": false,
  "specifications": [{
    "name": "x265",
    "implementation": "ReleaseTitleSpecification",
    "negate": false,
    "required": true,
    "fields": {
      "value": "\\b(x265|h265|hevc)\\b"
    }
  }]
}

Connect to Media Server

Same as Sonarr - connect to Plex or Jellyfin.

Bazarr Configuration

Bazarr automates subtitle downloads for your media.

Initial Setup

  1. Access Bazarr at http://YOUR-SERVER-IP:6767
  2. Complete setup wizard

Connect to Sonarr

Settings → Sonarr:

  • Enabled: Checked
  • Address: http://sonarr:8989
  • API Key: From Sonarr settings
  • Minimum Score: 90% (adjust as needed)
  • Download Only Monitored: Checked

Test connection.

Connect to Radarr

Settings → Radarr:

  • Enabled: Checked
  • Address: http://radarr:7878
  • API Key: From Radarr settings
  • Minimum Score: 90%
  • Download Only Monitored: Checked

Test connection.

Configure Subtitle Providers

Settings → Providers:

Add OpenSubtitles:

  1. Click Add
  2. Select OpenSubtitles.com
  3. Username: Your account
  4. Password: Your password
  5. Enabled: Checked

Add Subscene (no account needed):

  1. Click Add
  2. Select Subscene
  3. Enabled: Checked

Priority: Drag to arrange provider priority.

Language Settings

Settings → Languages:

Languages Filter:

  • Add desired languages (e.g., English, Spanish)

Languages Profiles: Create profile:

  1. Name: Default
  2. Languages: English
  3. Enabled: Checked

Default Settings:

  • Series: Default profile
  • Movies: Default profile

Settings → Scheduler:

  • Search and Upgrade Subtitles: Daily at 3 AM
  • Sync with Sonarr/Radarr: Every 6 hours

Overseerr Configuration

Overseerr provides a user-friendly request interface.

Initial Setup

  1. Access Overseerr at http://YOUR-SERVER-IP:5055
  2. Sign in with Plex account (or Jellyfin if using Jellyseerr)

Connect to Plex/Jellyfin

Settings → Plex:

  • Hostname or IP: YOUR-PLEX-IP
  • Port: 32400
  • Auth Token: Automatic after sign-in
  • Libraries: Select libraries to import

Connect to Sonarr

Settings → Services → Sonarr:

  • Default Server: Checked
  • 4K Server: Unchecked
  • Server Name: Sonarr
  • Hostname or IP: sonarr
  • Port: 8989
  • API Key: From Sonarr
  • URL Base: Leave blank
  • Quality Profile: HD-1080p
  • Root Folder: /tv
  • Language Profile: English
  • Tags: Leave blank
  • Anime Quality Profile: HD-1080p (if different)
  • Season Folders: Enabled
  • Enable Scan: Enabled
  • Enable Automatic Search: Enabled

Test and save.

Connect to Radarr

Settings → Services → Radarr:

  • Default Server: Checked
  • Server Name: Radarr
  • Hostname or IP: radarr
  • Port: 7878
  • API Key: From Radarr
  • Quality Profile: HD
  • Root Folder: /movies
  • Minimum Availability: Announced
  • Tags: Leave blank
  • Enable Scan: Enabled
  • Enable Automatic Search: Enabled

Test and save.

User Management

Settings → Users:

Permissions: Configure what users can do:

  • Request: Allow users to request content
  • Auto-approve requests: Enable for trusted users
  • Request limit: Set per week/month
  • Manage requests: Admin only

Notifications: Configure Discord, Email, Telegram, etc. for request updates.

Adding Content

Adding a TV Show to Sonarr

  1. Sonarr → Series → Add Series
  2. Search for show name
  3. Select correct show
  4. Configure:
    • Root Folder: /tv
    • Monitor: All Episodes (or specific seasons)
    • Quality Profile: HD-1080p
    • Series Type: Standard (or Daily/Anime)
    • Season Folder: Checked
    • Tags: Optional
  5. Click Add

Sonarr will:

  • Search for all monitored episodes
  • Send to download client
  • Import when complete
  • Notify media server

Adding a Movie to Radarr

  1. Radarr → Movies → Add Movie
  2. Search for movie title
  3. Select correct movie
  4. Configure:
    • Root Folder: /movies
    • Monitor: Movie Only
    • Minimum Availability: Announced (or Released)
    • Quality Profile: HD
    • Tags: Optional
  5. Click Add

Radarr will search and download automatically.

Using Overseerr

User Experience:

  1. User accesses Overseerr
  2. Searches for movie/show
  3. Clicks “Request”
  4. Optional: Adds comment
  5. Submits request

Admin Workflow:

  1. Receives notification
  2. Reviews request (if manual approval)
  3. Approves
  4. Sonarr/Radarr automatically handle download
  5. User notified when available

Quality Management

Understanding Quality Profiles

Quality profiles define acceptable formats and upgrade behavior.

Components:

  • Allowed Qualities: Which formats to accept
  • Upgrade Until: Stop upgrading at this quality
  • Custom Format Scores: Prefer specific attributes

Example Profile Structure:

HD-1080p Profile:
- Qualities Allowed:
  1. Bluray-1080p (preferred)
  2. WEB-1080p
  3. HDTV-1080p
- Upgrade Until: Bluray-1080p
- Custom Formats:
  - REMUX: +100
  - x265: +50
  - HDR: +25

Custom Format Scoring

Assign points to prefer certain releases:

Positive Scores (prefer):

  • +100: REMUX (highest quality)
  • +50: Preferred release groups
  • +25: HDR/DV content
  • +10: x265 (smaller files)

Negative Scores (avoid):

  • -100: Known bad release groups
  • -50: Hardcoded subtitles
  • -25: Low quality encodes

Release Profiles (Legacy)

For older Sonarr/Radarr versions:

Preferred Words:

AMZN: 10
NF: 10
DSNP: 10
HMAX: 10

Must Contain: Optional restrictions

Must Not Contain:

YIFY
CAM
TS

Advanced Configuration

Hardlinks (recommended):

  • Instant file “move”
  • No duplicate disk space
  • Same file, multiple paths
  • Requires source and destination on same filesystem

Configure in Media Management:

  • Use Hardlinks instead of Copy: Checked

Ensure same filesystem:

df /media/downloads /media/tv /media/movies
# All should show same device

Import Lists

Automatically add content from external sources.

Sonarr Import Lists:

Trakt List:

  1. Settings → Import Lists → Add
  2. Select Trakt List
  3. Configure:
    • Authenticate with Trakt
    • List URL or username/list
    • Quality Profile: HD-1080p
    • Monitor: All Episodes
  4. Enable and save

Radarr Import Lists:

Trakt List:

  1. Settings → Lists → Add
  2. Select Trakt List
  3. Configure list and quality profile
  4. Enable and save

Lists sync periodically and add new content automatically.

Custom Scripts

Execute scripts on import for advanced workflows.

Example: Discord Notification:

Create /opt/arr-stack/scripts/notify-discord.sh:

#!/bin/bash

WEBHOOK_URL="YOUR-DISCORD-WEBHOOK-URL"

curl -X POST "$WEBHOOK_URL"   -H "Content-Type: application/json"   -d "{
    "content": "New content added!",
    "embeds": [{
      "title": "$sonarr_series_title - $sonarr_episodefile_episodetitles",
      "description": "Season $sonarr_episodefile_seasonnumber Episode $sonarr_episodefile_episodenumbers",
      "color": 3447003
    }]
  }"

Make executable:

chmod +x /opt/arr-stack/scripts/notify-discord.sh

Configure in Sonarr:

  1. Settings → Connect → Add → Custom Script
  2. Path: /config/scripts/notify-discord.sh
  3. Triggers: On Download, On Import
  4. Save

VPN Integration

Route download client through VPN for privacy.

Update docker-compose.yml:

services:
  vpn:
    image: qmcgaw/gluetun:latest
    container_name: vpn
    cap_add:
      - NET_ADMIN
    environment:
      - VPN_SERVICE_PROVIDER=nordvpn
      - OPENVPN_USER=your_username
      - OPENVPN_PASSWORD=your_password
      - SERVER_COUNTRIES=Netherlands
    ports:
      - 8080:8080  # qBittorrent
      - 6881:6881
      - 6881:6881/udp

  qbittorrent:
    image: linuxserver/qbittorrent:latest
    container_name: qbittorrent
    network_mode: "service:vpn"
    depends_on:
      - vpn
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /opt/arr-stack/qbittorrent:/config
      - /media/downloads:/downloads

qBittorrent now routes through VPN while *arr apps remain accessible.

Monitoring and Maintenance

Health Checks

All *arr apps include health check systems.

Check Sonarr Health:

  1. System → Status
  2. Review warnings/errors
  3. Address issues as needed

Common Issues:

  • Indexers failing: Update credentials
  • Download client unreachable: Check connection
  • Disk space low: Clear old downloads
  • Lists unavailable: Verify API keys

Queue Management

Monitor Active Downloads:

Sonarr/Radarr → Queue shows:

  • Currently downloading
  • Import pending
  • Warnings (slow download, stalled, etc.)

Manual Intervention:

  • Remove from queue: Red X icon
  • Force import: Refresh icon
  • Search manually: Magnifying glass icon

Database Maintenance

Backup Databases:

# Stop containers
cd /opt/arr-stack
docker-compose down

# Backup configs
tar -czf arr-backup-$(date +%Y%m%d).tar.gz   /opt/arr-stack/{sonarr,radarr,prowlarr,bazarr,overseerr}

# Restart
docker-compose up -d

Schedule Regular Backups:

# Add to crontab
0 3 * * 0 /opt/scripts/backup-arr-stack.sh

Updating Applications

Update All Containers:

cd /opt/arr-stack
docker-compose pull
docker-compose up -d

Containers automatically restart with new versions.

Check for Updates: Each app shows update notifications in System → Updates.

Troubleshooting

Common Issues

Issue: Downloads Not Starting

Diagnostics:

  1. Check Prowlarr indexer status
  2. Verify download client connection
  3. Review queue for errors

Solutions:

  • Test indexers in Prowlarr
  • Verify qBittorrent accessible
  • Check API keys correct
  • Review category configuration

Issue: Failed Imports

Diagnostics:

  1. Check Activity → Queue for errors
  2. Review file permissions
  3. Verify root folder paths

Solutions:

  • Fix file ownership: chown -R 1000:1000 /media
  • Check paths match between containers
  • Enable “Unmonitor Deleted Episodes/Movies”
  • Manually import from Manual Import

Issue: No Search Results

Diagnostics:

  1. Test indexers in Prowlarr
  2. Check if content available
  3. Review quality profile restrictions

Solutions:

  • Add more indexers
  • Lower quality profile requirements
  • Check custom format scores
  • Verify release group not blocked

Issue: Duplicate Downloads

Solutions:

  1. Settings → Indexers → Advanced
  2. Retention: Set appropriately (1440+ for Usenet)
  3. RSS Sync Interval: 30 minutes
  4. Prefer Indexer Flags: Enabled

Issue: Subtitles Not Downloading

Diagnostics:

  1. Check Bazarr connection to Sonarr/Radarr
  2. Verify subtitle provider credentials
  3. Review minimum score settings

Solutions:

  • Lower minimum score to 80%
  • Add more subtitle providers
  • Manually search in Bazarr
  • Check language profile configuration

Performance Optimization

Resource Management

Adjust Container Resources:

Update docker-compose.yml:

services:
  sonarr:
    # ... other config
    deploy:
      resources:
        limits:
          memory: 1G
        reservations:
          memory: 512M

Indexer Optimization

Reduce API Calls:

  1. Settings → Indexers
  2. RSS Sync Interval: 30-60 minutes
  3. Search Limit: 100 results

Priority Ordering: Drag indexers to prioritize fastest/most reliable.

Database Optimization

Sonarr/Radarr:

  • Automatic database backup and optimization on restart
  • Keep database on SSD for faster queries
  • Limit series/movie history to 30 days

Settings → General → Advanced:

  • Maximum Days in History: 30
  • Cleanup backup folder: Checked

Security Best Practices

Authentication

Enable Authentication:

Each *arr app:

  1. Settings → General → Security
  2. Authentication: Forms (Login page)
  3. Username: admin
  4. Password: Strong password

API Key Protection:

  • Regenerate API keys periodically
  • Don’t share keys
  • Use environment variables in scripts

Network Security

Reverse Proxy:

Use Nginx/Caddy for SSL:

server {
    listen 443 ssl http2;
    server_name sonarr.yourdomain.com;

    ssl_certificate /etc/ssl/certs/cert.pem;
    ssl_certificate_key /etc/ssl/private/key.pem;

    location / {
        proxy_pass http://localhost:8989;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Firewall Rules:

# Allow only local access
sudo ufw allow from 192.168.1.0/24 to any port 8989
sudo ufw allow from 192.168.1.0/24 to any port 7878
sudo ufw allow from 192.168.1.0/24 to any port 9696

# Public access only via reverse proxy
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Download Client Security

qBittorrent:

  • Enable authentication
  • Disable UPnP if not needed
  • Use VPN for torrent traffic
  • Set IP binding to VPN interface

Verification: Visit https://ipleak.net while downloading to verify VPN working.

Integration Examples

Webhook Notifications

Discord Webhook:

Settings → Connect → Webhook:

{
  "webhook": "https://discord.com/api/webhooks/YOUR-WEBHOOK",
  "username": "Sonarr",
  "avatar": "https://i.imgur.com/yourimage.png"
}

Triggers:

  • On Grab
  • On Import
  • On Upgrade
  • On Health Issue

Plex Integration

Complete integration creates seamless experience:

Sonarr/Radarr → Plex:

  • Automatic library updates
  • Metadata refresh triggered
  • Continue watching updated

Overseerr → Plex:

  • Use Plex authentication
  • Show Plex availability
  • Link to Plex player

Home Assistant Integration

Monitor and control via Home Assistant:

Add to configuration.yaml:

sensor:
  - platform: sonarr
    api_key: YOUR_API_KEY
    host: 192.168.1.100
    port: 8989
    monitored_conditions:
      - series
      - upcoming
      - wanted
      - queue

Create automations based on queue status, disk space, etc.

Best Practices

Content Organization

Consistent Naming:

  • Let *arr apps handle all renaming
  • Never manually rename files
  • Use standard naming templates
  • Enable season folders

Library Structure:

/media/
├── tv/
│   ├── Breaking Bad (2008)/
│   │   └── Season 01/
│   │       └── Breaking Bad - S01E01 - Pilot.mkv
│   └── The Office (US) (2005)/
├── movies/
│   ├── Inception (2010)/
│   │   └── Inception (2010).mkv
│   └── The Matrix (1999)/
└── downloads/
    ├── complete/
    │   ├── sonarr/
    │   └── radarr/
    └── incomplete/

Quality Profiles

Create Multiple Profiles:

  • SD: For older content, kids shows
  • HD: Standard 1080p quality
  • Ultra HD: 4K/HDR content
  • Any: For rare/hard-to-find content

Use Appropriate Profile:

  • Most content: HD profile
  • Classics: Any profile (take what’s available)
  • Prestige TV/Movies: Ultra HD profile

Automation Rules

Monitoring Rules:

  • New shows: Monitor future episodes only
  • Ended shows: Monitor all
  • Long-running shows: Monitor latest season

Search Settings:

  • Enable automatic search for new content
  • Disable for backlogs (manual search as needed)
  • Use cutoff unmet search periodically

Conclusion

You now have a complete media automation pipeline with the *arr stack. This system will automatically find, download, organize, and manage your entire media library with minimal manual intervention.

Key Takeaways

  • Prowlarr centralizes all indexer management
  • Sonarr and Radarr handle automated downloads
  • Quality profiles ensure you get desired formats
  • Bazarr automates subtitle downloads
  • Overseerr provides user-friendly request interface
  • Proper configuration enables hands-free operation

Next Steps

After basic setup:

  1. Add your indexers to Prowlarr (private trackers recommended)
  2. Create quality profiles matching your preferences
  3. Import existing library into Sonarr/Radarr
  4. Configure Overseerr for family/friends requests
  5. Set up notifications (Discord, Telegram, etc.)
  6. Enable VPN for download client
  7. Schedule backups of configurations

Advanced Topics

Once comfortable with basics:

  • Custom formats for fine-grained quality control
  • Import lists for automatic content discovery
  • Lidarr for music automation
  • Readarr for books and audiobooks
  • Custom scripts for advanced workflows
  • TRaSH Guides for community best practices

Resources

Official Documentation:

  • Sonarr: wiki.servarr.com/sonarr
  • Radarr: wiki.servarr.com/radarr
  • Prowlarr: wiki.servarr.com/prowlarr

Community Resources:

  • r/sonarr, r/radarr, r/prowlarr: Reddit communities
  • TRaSH Guides: trash-guides.info (essential reading)
  • Discord: Servarr Discord server

Related Guides:

  • Plex/Jellyfin setup
  • qBittorrent configuration
  • VPN for torrenting
  • Usenet setup guide

Enjoy your fully automated media library!