๐ดโโ ๏ธ 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.