Skip to content

๐Ÿดโ€โ˜ ๏ธ ARR-Stack

Host: Homelab ยท Compose: Homelab/ARR-Stack/compose.yaml
Stack name: arr-stack


1. Overview

The ARR-Stack is the media automation backbone of the homelab. It orchestrates the full pipeline from content discovery through to final delivery into Jellyfin/Plex โ€” covering TV, movies, music, and subtitles. All *arr apps share a common PostgreSQL database for performance and centralised backups.


2. Architecture & Services

Service Image Port Role
arr-stack-db 11notes/postgres:17 5432 Shared PostgreSQL database backend for all *arr apps
bazarr hotio/bazarr:v1.5.6 6767 Subtitle fetching and management
cleanuparr cleanuparr/cleanuparr:2.9.13 11011 Automated queue cleanup for stalled/unwanted downloads
lidarr linuxserver/lidarr:3.0.1 8686 Music library management and download automation
prowlarr 11notes/prowlarr:2.4.0 9696 Indexer aggregator (syncs to all *arr apps)
pulsarr lakker/pulsarr:0.16.0 3003 Plex/Jellyfin watchlist โ†’ Radarr/Sonarr bridge
radarr 11notes/radarr:6.2.1 7878 Movie download automation
seerr seerr-team/seerr:v3.3.0 5055 Media request portal (Jellyseerr fork)
sonarr 11notes/sonarr:4.0.17 8989 TV show download automation
sonobarr dodelidoo-labs/sonobarr:0.12.1 5000 Sonarr โ†” Lidarr concert/soundtrack bridge
socket-proxy 11notes/socket-proxy:2.1.7 2375 Secure Docker socket proxy (used by other services)
traefik-kop_ap jittering/traefik-kop:0.20.1 โ€” Publishes Traefik labels to Redis for the primary Traefik instance
gatus_auto_pirate twinproduction/gatus:v5.36.0 8081 Health monitoring for ARR services

3. Networking

  • auto_pirate โ€” Internal bridge network connecting all *arr apps to each other and the database.
  • database โ€” External network shared with the main services stack for PostgreSQL access.
  • traefik โ€” External network shared with the Traefik reverse proxy. Services labelled with traefik.enable=true are automatically discovered.
  • gatus-net โ€” External network connecting the local Gatus health monitor to the main Gatus aggregator.
  • traefik-kop relays Docker label routing rules to the primary Traefik instance via Redis.

4. Persistent Storage

Container Host Path Description
arr-stack-db /docker/data/autopirate/database/etc PostgreSQL config
arr-stack-db /docker/data/autopirate/database/var PostgreSQL data
arr-stack-db /backup/auto-pirate/database Automated DB backups
bazarr /docker/data/autopirate/bazarr/config Bazarr config
cleanuparr /docker/data/autopirate/cleanuparr Cleanuparr config
lidarr /docker/data/autopirate/lidarr Lidarr config
prowlarr /docker/data/autopirate/prowlarr Prowlarr config
pulsarr /docker/data/autopirate/pulsarr/data Pulsarr data
radarr /docker/data/autopirate/radarr Radarr config
sonarr /docker/data/autopirate/sonarr Sonarr config
sonobarr /docker/data/autopirate/sonobarr Sonobarr config
gatus_auto_pirate /docker/data/autopirate/gatus Gatus config
All media apps /nfs/media NFS-mounted media library (shared)

5. Environment Variables

Variable Service Description
POSTGRES_PASSWORD arr-stack-db Database root password (set in compose)
POSTGRES_BACKUP_SCHEDULE arr-stack-db Cron schedule for DB backups (0 */2 * * *)
POSTGRES_BACKUP_RETENTION arr-stack-db Number of backups to retain
PUID / PGID All media apps Run as user 1027:100
TZ All Australia/Sydney
baseUrl pulsarr Host IP where Pulsarr is reachable by Sonarr/Radarr
REDIS_ADDR traefik-kop_ap Redis address for Traefik label sync
sonobarr env sonobarr Loaded from .env file alongside compose

6. Access & Usage

Service URL
Sonarr https://sonarr.home-lab.micky.id.au
Radarr https://radarr.home-lab.micky.id.au
Lidarr https://lidarr.home-lab.micky.id.au
Prowlarr https://prowlarr.home-lab.micky.id.au
Bazarr https://bazarr.home-lab.micky.id.au
Cleanuparr https://cleanuparr.home-lab.micky.id.au
Pulsarr https://pulsarr.home-lab.micky.id.au
Sonobarr https://sonobarr.home-lab.micky.id.au
# Start the stack
docker compose -f Homelab/ARR-Stack/compose.yaml up -d

# View logs
docker compose -f Homelab/ARR-Stack/compose.yaml logs -f sonarr

# Health check
curl -f http://localhost:11011/health   # cleanuparr

7. Maintenance & Backup

# Update all images
docker compose -f Homelab/ARR-Stack/compose.yaml pull
docker compose -f Homelab/ARR-Stack/compose.yaml up -d

# Manual DB backup (triggered automatically by cron)
docker exec arr-stack-db pg_dump ...

# Backup paths
/backup/auto-pirate/database   # PostgreSQL backups (auto, every 2h)
/docker/data/autopirate/       # Config directories โ€” back up with rsync or Velld

[!TIP] The arr-stack-db container runs automated compressed backups every 2 hours to /backup/auto-pirate/database and retains 24 copies. Pair with off-site sync for disaster recovery.