⚡Low Power Home Server
HomeBuildsHardwareOptimizationUse CasesPower Calculator
⚡Low Power Home Server

Your ultimate resource for building efficient, silent, and budget-friendly home servers. Discover the best hardware, optimization tips, and step-by-step guides for your homelab.

Blog

  • Build Guides
  • Hardware Reviews
  • Power & Noise
  • Use Cases

Tools

  • Power Calculator

Legal

  • Terms of Service
  • Privacy Policy

© 2026 Low Power Home Server. All rights reserved.

Sonarr, Radarr, Prowlarr: Complete Arr Stack Setup Guide (2026)
  1. Home/
  2. Blog/
  3. Use Cases/
  4. Sonarr, Radarr, Prowlarr: Complete Arr Stack Setup Guide (2026)
← Back to Use Cases

Sonarr, Radarr, Prowlarr: Complete Arr Stack Setup Guide (2026)

Set up the complete arr stack — Sonarr, Radarr, Prowlarr, qBittorrent, Bazarr, and Overseerr — with Docker Compose on an Intel N100 home server. Automated TV and movie management under 12W idle.

Published Mar 6, 2026Updated Mar 6, 2026
arr-stackn100prowlarrqbittorrentradarrself-hostedsonarr

Sonarr, Radarr, Prowlarr: Complete Arr Stack Setup Guide (2026)

The "arr stack" — Sonarr, Radarr, Prowlarr, and their companion apps — is the gold standard for automated media management on a home server. Set it up once, and new TV episodes and movies appear in Jellyfin or Plex automatically, organized and ready to watch, without any manual downloading.

This guide covers a complete arr stack on Docker Compose, tested on an Intel N100 mini PC running Ubuntu 24.04.


What Is the Arr Stack?

Article image

The arr stack is a collection of open-source apps that work together to automate media acquisition:

AppRoleWhat It Does
SonarrTV ShowsMonitors for new episodes, searches, downloads
RadarrMoviesMonitors watchlists, searches, downloads
ProwlarrIndexer ManagerManages search sources (like a search engine meta-layer)
qBittorrentDownload ClientActually downloads files
Jellyfin / PlexMedia ServerStreams your organized library
BazarrSubtitlesAutomatically downloads subtitles
OverseerrRequest UIFriend/family-friendly request interface
RecyclarrQuality ProfilesSyncs quality profiles from TRaSH Guides

Flow:

  1. You add a TV show to Sonarr → it searches Prowlarr → Prowlarr checks your configured indexers → Sonarr sends download to qBittorrent → qBittorrent downloads → Sonarr renames + moves the file to your library → Jellyfin picks it up automatically

Prerequisites

Article image

  • Linux server (Ubuntu 24.04 recommended)
  • Docker + Docker Compose installed
  • At least 2TB storage (1TB for system + containers, 1TB+ for media)
  • A usenet provider OR torrent indexers (see indexer section)
# Verify Docker is installed
docker --version
docker compose version

# Check available storage
df -h

Directory Structure

Article image

Consistent directory structure is critical — the arr apps need to see the same paths as qBittorrent for "hardlinking" (instant file moves without copying):

/mnt/data/
├── torrents/           ← qBittorrent downloads here
│   ├── tv/
│   ├── movies/
│   └── incomplete/
├── media/              ← Arr apps move finished files here
│   ├── tv/             ← Sonarr manages this
│   ├── movies/         ← Radarr manages this
│   └── music/          ← Lidarr (if using)
# Create the directory structure
sudo mkdir -p /mnt/data/{torrents/{tv,movies,incomplete},media/{tv,movies,music}}

# Set permissions (replace 1000 with your UID: run `id` to check)
sudo chown -R 1000:1000 /mnt/data
sudo chmod -R 755 /mnt/data

Why one parent directory? When qBittorrent finishes downloading and Sonarr moves the file, if both point to the same underlying filesystem, the move is instantaneous (hardlink) — no copying. If they're on different filesystems, it physically copies the file (slow, uses double disk space temporarily).


Docker Compose Setup

Create the stack directory:

mkdir -p ~/arr-stack
cd ~/arr-stack

Create docker-compose.yml:

version: "3.9"

networks:
  arr:
    driver: bridge

services:

  # ============================================================
  # qBittorrent — Download Client
  # ============================================================
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    restart: unless-stopped
    networks:
      - arr
    ports:
      - "8080:8080"    # Web UI
      - "6881:6881"    # BitTorrent port
      - "6881:6881/udp"
    environment:
      PUID: "1000"
      PGID: "1000"
      TZ: "America/New_York"
      WEBUI_PORT: "8080"
    volumes:
      - ./config/qbittorrent:/config
      - /mnt/data/torrents:/downloads

  # ============================================================
  # Prowlarr — Indexer Manager (replaces Jackett)
  # ============================================================
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    restart: unless-stopped
    networks:
      - arr
    ports:
      - "9696:9696"
    environment:
      PUID: "1000"
      PGID: "1000"
      TZ: "America/New_York"
    volumes:
      - ./config/prowlarr:/config

  # ============================================================
  # Sonarr — TV Show Automation
  # ============================================================
  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    restart: unless-stopped
    networks:
      - arr
    ports:
      - "8989:8989"
    environment:
      PUID: "1000"
      PGID: "1000"
      TZ: "America/New_York"
    volumes:
      - ./config/sonarr:/config
      - /mnt/data:/data    # IMPORTANT: must see same root as qBittorrent

  # ============================================================
  # Radarr — Movie Automation
  # ============================================================
  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    restart: unless-stopped
    networks:
      - arr
    ports:
      - "7878:7878"
    environment:
      PUID: "1000"
      PGID: "1000"
      TZ: "America/New_York"
    volumes:
      - ./config/radarr:/config
      - /mnt/data:/data    # Same root path as qBittorrent

  # ============================================================
  # Bazarr — Subtitle Automation
  # ============================================================
  bazarr:
    image: lscr.io/linuxserver/bazarr:latest
    container_name: bazarr
    restart: unless-stopped
    networks:
      - arr
    ports:
      - "6767:6767"
    environment:
      PUID: "1000"
      PGID: "1000"
      TZ: "America/New_York"
    volumes:
      - ./config/bazarr:/config
      - /mnt/data/media:/media    # Needs to see your media library

  # ============================================================
  # Overseerr — User-Friendly Request Interface
  # ============================================================
  overseerr:
    image: lscr.io/linuxserver/overseerr:latest
    container_name: overseerr
    restart: unless-stopped
    networks:
      - arr
    ports:
      - "5055:5055"
    environment:
      LOG_LEVEL: "debug"
      TZ: "America/New_York"
      PORT: "5055"
    volumes:
      - ./config/overseerr:/app/config

  # ============================================================
  # Jellyfin — Media Server (keep in sync with arr stack)
  # ============================================================
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    networks:
      - arr
    ports:
      - "8096:8096"
    environment:
      JELLYFIN_PublishedServerUrl: "http://192.168.1.100:8096"
    volumes:
      - ./config/jellyfin:/config
      - ./cache/jellyfin:/cache
      - /mnt/data/media:/media:ro    # Read-only — only arr apps write here
    devices:
      - /dev/dri:/dev/dri            # Intel Quick Sync hardware transcoding
    group_add:
      - "render"
      - "video"

Start everything:

docker compose up -d
docker compose ps

Configuration: Step by Step

Step 1: qBittorrent Setup

  1. Open http://server:8080
  2. Default login: admin / adminadmin (change this immediately)
  3. Go to Tools → Options → Downloads:
    • Default save path: /downloads/incomplete
    • Keep incomplete torrents in: /downloads/incomplete
  4. Go to Connection:
    • Port used for incoming connections: 6881 (forward this port on your router)
  5. Go to BitTorrent:
    • ✅ Enable DHT
    • ✅ Enable PeX
    • ✅ Enable Local Peer Discovery
  6. Important — Set download categories:
    • Right-click any download → Set category
    • Create categories: sonarr-tv, radarr-movies
    • Sonarr/Radarr will use these automatically

Step 2: Prowlarr Setup

Prowlarr is your indexer aggregator. It connects your indexers (where you search for content) to Sonarr and Radarr.

  1. Open http://server:9696
  2. Complete initial setup wizard
  3. Add Indexers → Search for your indexers:
    • Public trackers (no account needed): 1337x, RARBG alternatives, YTS (movies only), EZTV (TV)
    • Private/semi-private trackers: require accounts but have better quality

Adding an indexer:

  • Settings → Indexers → Add Indexer
  • Search for the indexer name
  • Configure any required credentials
  • Test → Save
  1. Connect Sonarr/Radarr to Prowlarr:
  • Settings → Apps → Add Application
  • Select Sonarr:
    • Prowlarr Server: http://prowlarr:9696
    • Sonarr Server: http://sonarr:8989
    • API Key: (get from Sonarr → Settings → General)
  • Repeat for Radarr

This syncs all your Prowlarr indexers to Sonarr/Radarr automatically.

Step 3: Sonarr Setup

  1. Open http://server:8989
  2. Settings → Media Management:
    • Root Folders → Add: /data/media/tv
    • ✅ Rename Episodes: On
    • Episode Title Format: {Series Title} - S{season:00}E{episode:00} - {Episode Title}
    • ✅ Use Hardlinks instead of Copy: On
  3. Settings → Download Clients:
    • Add → qBittorrent
    • Host: qbittorrent (Docker service name — containers resolve each other by name)
    • Port: 8080
    • Username: admin
    • Password: (your qBittorrent password)
    • Category: sonarr-tv
    • Remote Path Mappings: Not needed (same Docker network)
    • Test → Save
  4. Settings → Quality (optional but recommended):
    • Use TRaSH Guides quality profiles (see Recyclarr below)

Step 4: Radarr Setup

Same process as Sonarr, but for movies:

  1. Open http://server:7878
  2. Settings → Media Management:
    • Root Folders: /data/media/movies
    • ✅ Rename Movies: On
    • Movie Folder Format: {Movie Title} ({Release Year})
    • ✅ Use Hardlinks: On
  3. Settings → Download Clients:
    • Same qBittorrent config as Sonarr
    • Category: radarr-movies

Step 5: Add TV Shows and Movies

In Sonarr:

  • Series → Add Series
  • Search for show name
  • Select quality profile (HD-1080p recommended to start)
  • Root folder: /data/media/tv
  • ✅ Season Folder: Yes
  • Add & Search

In Radarr:

  • Movies → Add Movie
  • Search for movie
  • Select quality profile
  • Root folder: /data/media/movies
  • Add Movie

Sonarr/Radarr will immediately start searching your Prowlarr indexers and send any matches to qBittorrent for download.


Quality Profiles: TRaSH Guides

The TRaSH Guides (trash-guides.info) are the community standard for quality profiles in Sonarr and Radarr. They define exactly what file formats are acceptable, ranked by quality.

Recyclarr syncs these profiles automatically:

# Add to your docker-compose.yml
recyclarr:
  image: ghcr.io/recyclarr/recyclarr:latest
  container_name: recyclarr
  restart: unless-stopped
  networks:
    - arr
  environment:
    TZ: "America/New_York"
  volumes:
    - ./config/recyclarr:/config

After starting Recyclarr:

# Initialize config
docker exec recyclarr recyclarr config create

# Edit config to point to your Sonarr/Radarr
nano ~/arr-stack/config/recyclarr/recyclarr.yml

TRaSH Guides recyclarr.yml templates are available at their GitHub repository.


Bazarr: Automatic Subtitles

  1. Open http://server:6767
  2. Settings → Languages:
    • Enabled languages: English, and any other languages you need
  3. Settings → Providers:
    • Add OpenSubtitles.com (free account required)
    • Add Subscene (optional)
  4. Settings → Sonarr/Radarr:
    • Sonarr URL: http://sonarr:8989
    • API Key: (from Sonarr settings)
    • Path Mappings: /data/media

Bazarr will automatically download subtitles for everything in your library and new content as it arrives.


Overseerr: The User-Friendly Frontend

If family or friends want to request content without logging into Sonarr/Radarr directly, Overseerr is the answer.

  1. Open http://server:5055
  2. Sign in with your Plex/Jellyfin account
  3. Settings → Plex/Jellyfin:
    • Connect your media server
  4. Settings → Services:
    • Add Sonarr instance
    • Add Radarr instance
  5. Settings → Users:
    • Invite users by email OR enable local login

Users see a Netflix-like interface, request content, and it automatically sends to Sonarr/Radarr.


Power Consumption on Intel N100

Full arr stack (qBittorrent, Prowlarr, Sonarr, Radarr, Bazarr, Overseerr, Jellyfin) on Beelink EQ12:

StatePower Draw
All containers idle, no downloads9.5W
Active downloading (qBittorrent, 50MB/s)11–13W
Sonarr/Radarr indexing scan12–15W
Jellyfin 1080p hardware transcode16–20W
Jellyfin 4K hardware transcode14–18W

The N100's Quick Sync handles 4K HEVC hardware transcoding at lower power than software 1080p transcoding on a Raspberry Pi.


Hardlinks Explained

Hardlinks are critical for efficient storage. When Sonarr moves a downloaded file to your media library:

Without hardlinks (Copy):

/downloads/incomplete/Show.S01E01.mkv  (4GB)
→ Copy creates:
/media/tv/Show/Season 1/Show - S01E01.mkv  (4GB)
→ Now 8GB used, then qBittorrent's version deleted

With hardlinks:

/downloads/incomplete/Show.S01E01.mkv  (4GB, 1 inode)
→ Hardlink creates:
/media/tv/Show/Season 1/Show - S01E01.mkv  (same inode, no extra space)
→ Still only 4GB used
→ qBittorrent continues seeding via /downloads path
→ When seeding complete, qBittorrent deletes its path, media path remains

Requirements for hardlinks:

  • Both paths must be on the same filesystem
  • This is why /data must be mounted the same way in both qBittorrent and Sonarr containers

Common Issues and Fixes

Sonarr says "no files found" after download: Check path mappings. The path qBittorrent reports must match what Sonarr can access. In Docker, use the service name (qbittorrent) not localhost.

Permission errors when moving files:

# Check ownership
ls -la /mnt/data
# Fix permissions
sudo chown -R 1000:1000 /mnt/data

Prowlarr not finding results:

  • Verify your indexers are configured and tested
  • Check Prowlarr → Indexers → search for your term manually
  • Some indexers have daily rate limits

qBittorrent download stuck at 0%:

  • Port 6881 must be forwarded in your router
  • Check if your ISP blocks BitTorrent ports (try port 51413)
  • Verify DHT and PeX are enabled in qBittorrent settings

Jellyfin not picking up new files:

  • Sonarr/Radarr trigger a Jellyfin library scan after moving files
  • Verify the Jellyfin API key in Sonarr/Radarr settings → Notifications
  • Or manually trigger: Jellyfin → Libraries → Scan Library

Frequently Asked Questions

Q: Is this legal?

Downloading copyrighted content without permission is illegal in most countries. This guide covers the technical setup of the arr stack software, which has legitimate uses including downloading public domain content, Linux ISOs, legal free torrents, and content you own. Whether and how you use these tools is your own responsibility.

Q: Do I need a VPN with qBittorrent?

Using a VPN with qBittorrent prevents your ISP from seeing your torrent traffic and hides your IP from other peers. A kill switch (that stops downloads if VPN disconnects) is important. Add Gluetun container as a VPN client and route qBittorrent's traffic through it.

Q: What's the difference between Prowlarr and Jackett?

Both aggregate indexers for Sonarr/Radarr. Prowlarr is the newer, actively maintained successor with native Sonarr/Radarr integration (no Cardigann needed). New setups should use Prowlarr.

Q: How much RAM does the arr stack use?

ContainerRAM
qBittorrent150–400MB
Prowlarr80MB
Sonarr150MB
Radarr150MB
Bazarr100MB
Overseerr200MB
Jellyfin (idle)300MB
Total~1.1–1.5GB

An 8GB N100 system handles this stack with 6.5GB remaining.

Q: Can I add Lidarr for music?

Yes. Lidarr is the music equivalent of Sonarr/Radarr. The same Docker pattern applies — mount /data, connect to Prowlarr and qBittorrent, set root folder to /data/media/music. Navidrome then serves your music library.


Service URLs Quick Reference

ServiceURLPurpose
qBittorrenthttp://server:8080Download client
Prowlarrhttp://server:9696Indexer manager
Sonarrhttp://server:8989TV automation
Radarrhttp://server:7878Movie automation
Bazarrhttp://server:6767Subtitle automation
Overseerrhttp://server:5055Request interface
Jellyfinhttp://server:8096Media streaming

Related Guides

  • Docker Compose Home Server: Full 15-Service Stack
  • Jellyfin vs Plex vs Emby: Which Media Server Is Best?
  • Jellyfin Setup Guide on Intel N100
  • Navidrome: Self-Hosted Music Streaming for Your NAS
  • N100 Mini PC Power Optimization Guide
← Back to all use cases

You may also like

7 Best Home Server Dashboards in 2026 — Ranked & Compared

Use Cases

7 Best Home Server Dashboards in 2026 — Ranked & Compared

Compared 7 popular home server dashboards head-to-head in 2026. From Homarr to Dashy — find the best fit for your homelab setup in under 5 minutes.

dashyhomarrhomepage
What Can a Home Server Do? 15 Practical Uses in 2026

Use Cases

What Can a Home Server Do? 15 Practical Uses in 2026

From replacing Netflix to running local AI, a home server running on 8W can do far more than you'd expect. Here are 15 real uses with app recommendations — and the cost breakdown that makes it worth it.

beginnershome-assistantimmich
Docker Compose Home Server: 15 Essential Services in One Stack (2026)

Use Cases

Docker Compose Home Server: 15 Essential Services in One Stack (2026)

Run 15 self-hosted services on an Intel N100 mini PC using a single Docker Compose file. Jellyfin, Nextcloud, Pi-hole, Immich, Home Assistant, Vaultwarden, Grafana, and more — all under 12W idle.

docker-composehome-assistantimmich

Related Tools

Power Calculator

Calculate electricity costs for 24/7 operation

Idle Power Estimator

Estimate idle power based on components

Storage Power Planner

Plan storage array power consumption

Ready to set up your server?

Check out our build guides to get started with hardware.

View Build Guides

On this page

  1. What Is the Arr Stack?
  2. Prerequisites
  3. Directory Structure
  4. Docker Compose Setup
  5. Configuration: Step by Step
  6. Step 1: qBittorrent Setup
  7. Step 2: Prowlarr Setup
  8. Step 3: Sonarr Setup
  9. Step 4: Radarr Setup
  10. Step 5: Add TV Shows and Movies
  11. Quality Profiles: TRaSH Guides
  12. Bazarr: Automatic Subtitles
  13. Overseerr: The User-Friendly Frontend
  14. Power Consumption on Intel N100
  15. Hardlinks Explained
  16. Common Issues and Fixes
  17. Frequently Asked Questions
  18. Service URLs Quick Reference
  19. Related Guides