Skip to content

Arr-Stack Maintenance Guide

Complete guide for maintaining the arr-stack services on VM 100.

Last Updated: 2025-12-08 VM: 100 (arr-stack) IP: 10.89.97.50


Overview

The arr-stack runs on VM 100 as Docker containers managed by docker-compose. All services route through Gluetun VPN for privacy.

Services

Download Clients: - SABnzbd - Usenet downloader (port 7777, via VPN) - Deluge - Torrent downloader (port 8112, via VPN)

Media Management: - Sonarr - TV show automation (port 8989) - Radarr - Movie automation (port 7878) - Lidarr - Music automation (port 8686) - Bazarr - Subtitle automation (port 6767)

Indexers & Requests: - Prowlarr - Indexer manager (port 9696) - Overseerr - Media requests (port 5055) - Jellyseerr - Alternative media requests (port 5056)

Infrastructure: - Gluetun - VPN gateway (Mullvad) - Watchtower - Automatic container updates


Auto-Start Configuration

Problem Fixed (2025-12-08)

After reboot, Docker containers were starting correctly EXCEPT there was no automatic startup. This was fixed by creating a systemd service.

Systemd Service

File: /etc/systemd/system/docker-compose-arr-stack.service

[Unit]
Description=Docker Compose for arr-stack
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/arr-stack
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
TimeoutStartSec=300

[Install]
WantedBy=multi-user.target

Status: ✅ Enabled and will start on boot

Verification

# Check service is enabled
ssh root@10.89.97.50 "systemctl is-enabled docker-compose-arr-stack.service"

# Check service status
ssh root@10.89.97.50 "systemctl status docker-compose-arr-stack.service"

# Check Docker containers
ssh root@10.89.97.50 "docker ps"

Common Issues

Issue: Containers Not Starting After Reboot

Symptoms: - VM is up and reachable - Docker service is running - But containers are stopped

Cause: Systemd service wasn't enabled (fixed 2025-12-08)

Verify Fix:

ssh root@10.89.97.50 "systemctl is-enabled docker-compose-arr-stack.service"
# Should output: enabled

If not enabled:

ssh root@10.89.97.50 "systemctl enable docker-compose-arr-stack.service"

Issue: SABnzbd Exited (128)

Symptoms:

docker ps -a
# Shows: sabnzbd  Exited (128)

Cause: Exit code 128 usually means: - Config file corruption - Volume mount issue - Dependency (gluetun) not ready

Fix:

# Restart gluetun first (SABnzbd depends on it)
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose restart gluetun"

# Wait for gluetun to be healthy
ssh root@10.89.97.50 "docker ps | grep gluetun"
# Should show: Up X minutes (healthy)

# Restart sabnzbd
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose up -d sabnzbd"

Check logs:

ssh root@10.89.97.50 "docker logs sabnzbd --tail=50"

Issue: VM Network Down After Reboot

Symptoms: - qm status 100 shows "running" - But ping 10.89.97.50 fails - SSH connection refused

Cause: Network interface not coming up properly

Fix:

# Restart the VM
qm stop 100
sleep 5
qm start 100

# Wait for boot
sleep 60

# Test connectivity
ping -c 3 10.89.97.50


Post-Reboot Checklist

After rebooting Proxmox host or VM 100:

Automated (Should Work)

  • [ ] VM 100 auto-starts (set in Proxmox)
  • [ ] Docker service starts (enabled in systemd)
  • [ ] Docker-compose arr-stack starts (enabled in systemd)
  • [ ] All containers start (restart: unless-stopped policy)

Manual Verification (5 minutes)

  1. Check VM is up:

    qm status 100
    # Should show: status: running
    

  2. Check network connectivity:

    ping -c 3 10.89.97.50
    # Should get responses
    

  3. Check Docker service:

    ssh root@10.89.97.50 "systemctl is-active docker"
    # Should show: active
    

  4. Check all containers running:

    ssh root@10.89.97.50 "docker ps --format 'table {{.Names}}\t{{.Status}}'"
    # All should show "Up"
    

  5. Test web UIs:

    curl -I http://sonarr.bogocat.com
    curl -I http://bazarr.internal
    # Should get 200 or 302 responses
    

If Issues Found

VM not responding:

qm stop 100 && qm start 100

Containers not started:

ssh root@10.89.97.50 "systemctl start docker-compose-arr-stack.service"

Single container down:

ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose up -d <service-name>"


Manual Operations

Start/Stop All Services

# Start all
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose up -d"

# Stop all
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose down"

# Restart all
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose restart"

Individual Service Control

# Restart specific service
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose restart sonarr"

# View logs
ssh root@10.89.97.50 "docker logs sonarr --tail=100 -f"

# Recreate container (if config changed)
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose up -d --force-recreate sonarr"

Check VPN Status

Critical: SABnzbd and Deluge route through Gluetun VPN. If VPN is down, downloads will fail.

# Check gluetun health
ssh root@10.89.97.50 "docker ps | grep gluetun"
# Should show: (healthy)

# Check VPN IP
ssh root@10.89.97.50 "docker exec gluetun wget -qO- ifconfig.me"
# Should show Mullvad VPN IP (NOT your real IP)

# Restart VPN
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose restart gluetun"

Update Containers

Watchtower automatically updates containers daily. To manually update:

# Update all
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose pull && docker compose up -d"

# Update specific service
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose pull sonarr && docker compose up -d sonarr"

Access URLs

Internal Access: - Sonarr: http://10.89.97.50:8989 - Radarr: http://10.89.97.50:7878 - Lidarr: http://10.89.97.50:8686 - Bazarr: http://10.89.97.50:6767 - Prowlarr: http://10.89.97.50:9696 - SABnzbd: http://10.89.97.50:7777 (via VPN) - Deluge: http://10.89.97.50:8112 (via VPN) - Overseerr: http://10.89.97.50:5055 - Jellyseerr: http://10.89.97.50:5056

External Access (via Authentik SSO): - Sonarr: https://sonarr.bogocat.com - Radarr: https://radarr.bogocat.com - Bazarr: http://bazarr.internal - (Others may not be exposed externally)


Configuration Files

Location: /opt/arr-stack/

/opt/arr-stack/
├── docker-compose.yml          # Main compose file
├── .env                        # Environment variables (VPN credentials)
└── configs/
    ├── sonarr/                 # Sonarr config
    ├── radarr/                 # Radarr config
    ├── bazarr/                 # Bazarr config
    ├── prowlarr/               # Prowlarr config
    ├── sabnzbd/                # SABnzbd config
    ├── deluge/                 # Deluge config
    ├── overseerr/              # Overseerr config
    └── jellyseerr/             # Jellyseerr config

Backup Critical Files:

# From Proxmox host
rsync -avP root@10.89.97.50:/opt/arr-stack/ /vault/backups/arr-stack/


Troubleshooting

All Services Show 302 Redirects

This is normal! 302 redirects mean the service is up and redirecting to login/auth page.

curl -I http://sonarr.bogocat.com
# HTTP/1.1 302 Found  ← This is GOOD

Can't Access Services

  1. Check VM network:

    ping 10.89.97.50
    

  2. Check Docker is running:

    ssh root@10.89.97.50 "systemctl status docker"
    

  3. Check containers:

    ssh root@10.89.97.50 "docker ps"
    

  4. Check specific service logs:

    ssh root@10.89.97.50 "docker logs sonarr --tail=50"
    

VPN Not Connected

Symptoms: Downloads fail, SABnzbd/Deluge unreachable

Check:

ssh root@10.89.97.50 "docker logs gluetun --tail=50"

Fix:

# Restart gluetun
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose restart gluetun"

# Wait for it to be healthy
ssh root@10.89.97.50 "docker ps | grep gluetun"

# Restart dependent services
ssh root@10.89.97.50 "cd /opt/arr-stack && docker compose restart sabnzbd deluge"



Change Log

  • 2025-12-08: Created systemd service for auto-start after reboot
  • 2025-12-08: Documented SABnzbd exit code 128 issue and fix
  • 2025-12-08: Added post-reboot checklist