Set Up the Arr Stack — Prowlarr, Sonarr, Radarr & Lidarr

sources:Servarr Wikilinuxserver.io Docs
Prowlarrindexer managerport 9696

One place to manage your indexers. Add them here once and Prowlarr pushes them to Sonarr, Radarr and Lidarr automatically. Install this first.

SonarrTV showsport 8989

Tracks series and seasons, grabs new episodes as they air, renames and files them.

Radarrmoviesport 7878

Same idea as Sonarr.

Lidarrmusicport 8686

Follows artists and albums, tags the files, and keeps a music library tidy.

Before you start

You'll need a download client already running like qBittorrent, SABnzbd or NZBGet. The Arr apps don't download anything themselves; they decide what to fetch and hand the job off. And you'll need indexers to add in Prowlarr. Sourcing those is outside the scope of this guide.

Step 1 Pick your platform

These compose blocks use the linuxserver.io images. Put them all in one docker-compose.yml and bring the stack up in a single command.

Set PUID/PGID to the user that owns your media (id -u and id -g), and change TZ to your timezone.

⚠ Use one shared parent path

Mount your media and downloads under a single root (e.g. /data/media and /data/downloads) and mount that same root into every container.

source: wiki.servarr.com — Docker guide

Step 2 Prowlarr

Prowlarr is the indexer manager. Every indexer you add here gets pushed to the other three apps automatically, so it's much less work than configuring each app separately.

services:
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./prowlarr/config:/config
    ports:
      - "9696:9696"
    restart: unless-stopped

Open http://SERVER_IP:9696. On first launch Prowlarr asks you to set an authentication method and create a username and password — do it, don't skip it.

Then:

  1. Settings → Indexers → Add Indexer — add whichever indexers you use. This guide doesn't name or recommend any; that part's on you.
  2. Settings → General — copy the API Key. You'll need it, and you'll need each other app's key too.
  3. Leave Settings → Apps alone for now — you'll come back to it in Step 6 once Sonarr, Radarr and Lidarr exist.

source: wiki.servarr.com — Prowlarr

Step 3 Sonarr (TV)

services:
  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    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

Open http://SERVER_IP:8989, set up authentication, then:

source: wiki.servarr.com — Sonarr

Step 4 Radarr (movies)

services:
  radarr:
    image: lscr.io/linuxserver/radarr:latest
    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

Open http://SERVER_IP:7878. The setup is identical to Sonarr — root folder (/movies), download client, quality profile, and grab the API key from Settings → General.

source: wiki.servarr.com — Radarr

Step 5 Lidarr (music)

services:
  lidarr:
    image: lscr.io/linuxserver/lidarr:latest
    container_name: lidarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./lidarr/config:/config
      - /path/to/music:/music
      - /path/to/downloads:/downloads
    ports:
      - "8686:8686"
    restart: unless-stopped

Open http://SERVER_IP:8686. Same pattern again — root folder (/music), download client, quality profile, API key.

source: wiki.servarr.com — Lidarr

Step 6 Wire them together

Four apps running is not a stack. This is the part that makes it one.

Prowlarr → the other three

In Prowlarr: Settings → Apps → +, add Sonarr, Radarr and Lidarr one at a time. For each, enter:

Hit Test, then Save. Your indexers sync across immediately, and any indexer you add to Prowlarr later shows up in all three on its own.

Docker networking

If all the containers are in the same compose file they share a network, so use the container name as the hostname (http://sonarr:8989) — not localhost. Inside a container, localhost means that container, not the host.

Sonarr / Radarr / Lidarr → download client

Settings → Download Clients in each app — point at qBittorrent, SABnzbd or NZBGet with host, port and API key or credentials. Test each one; a green test here is what stops the "downloads finish but nothing imports" problem later.

Sonarr / Radarr / Lidarr → Jellyfin

Settings → Connect → + → Jellyfin in each app. Enter your Jellyfin host, port 8096, and a Jellyfin API key (Jellyfin: Dashboard → API Keys). Enable On Import and On Upgrade so the library refreshes the moment a file lands, instead of on the next scheduled scan.

No Jellyfin yet? → Set up Jellyfin first.

source: wiki.servarr.com — Prowlarr applications

Ports reference

AppPortURL
Prowlarr9696http://SERVER_IP:9696
Sonarr8989http://SERVER_IP:8989
Radarr7878http://SERVER_IP:7878
Lidarr8686http://SERVER_IP:8686
Jellyfin8096http://SERVER_IP:8096

Config paths by OS

These are the folders to back up — lose them and you rebuild every profile, indexer and library from scratch.

AppDockerLinux (native)Windows
Prowlarr./prowlarr/config/opt/Prowlarr%ProgramData%\Prowlarr
Sonarr./sonarr/config/opt/Sonarr%AppData%\Sonarr
Radarr./radarr/config/opt/Radarr%AppData%\Radarr
Lidarr./lidarr/config/opt/Lidarr%AppData%\Lidarr
Jellyfin./config/etc/jellyfin, /var/lib/jellyfinC:\ProgramData\Jellyfin\Server

When something doesn't work

Quick reference

# Docker — bring the whole stack up
docker compose up -d
docker compose logs -f prowlarr
 
# Linux — run once per app: prowlarr, sonarr, radarr, lidarr
sudo apt install -y curl mediainfo sqlite3
curl -sL https://raw.githubusercontent.com/Servarr/Wiki/master/scripts/install.sh -o install.sh
sudo bash install.sh
 
# Web UIs
# Prowlarr  http://SERVER_IP:9696   (install + configure FIRST)
# Sonarr    http://SERVER_IP:8989
# Radarr    http://SERVER_IP:7878
# Lidarr    http://SERVER_IP:8686
 
# Wiring order
# 1. Prowlarr -> Settings -> Apps        (add Sonarr/Radarr/Lidarr + API keys)
# 2. Each app -> Settings -> Download Clients
# 3. Each app -> Settings -> Connect     (add Jellyfin, enable On Import)