A production-ready Docker Compose stack for automated media management, featuring Radarr, Sonarr, Prowlarr, Profilarr, Bazarr, and SABnzbd.
- Radarr - Movie collection manager
- Sonarr - TV series collection manager
- Prowlarr - Indexer manager for *arr apps
- Profilarr - Custom format profile manager
- Bazarr - Subtitle management
- SABnzbd - Usenet downloader
- sab-stream-proxy - Stream downloads directly from SABnzbd (optional)
- Docker and Docker Compose installed
- User with appropriate permissions (note your PUID/PGID)
- Storage paths configured (local or NAS-mounted)
-
Clone the repository
git clone <your-repo-url> cd ArrStack
-
Configure environment variables
cp .env.example .env # Edit .env with your values nano .envUpdate at minimum:
PUIDandPGID(runid <username>to find yours)TZ(your timezone, e.g.,America/New_York)MEDIA_PATH(where your media is stored)CONFIG_BASEandDOWNLOADS_BASE(config and download directories)
-
Create directories and set permissions
chmod +x create_dirs.sh sudo ./create_dirs.sh
-
Start the stack
docker compose up -d
-
Access the applications
- Radarr:
http://<server-ip>:7878 - Sonarr:
http://<server-ip>:8989 - Prowlarr:
http://<server-ip>:9696 - Profilarr:
http://<server-ip>:6868 - Bazarr:
http://<server-ip>:6767 - SABnzbd:
http://<server-ip>:8080 - Stream Proxy:
http://<server-ip>:3000
- Radarr:
See the following documentation for detailed setup:
ArrStack/
├── docker-compose.yaml # Service definitions
├── .env.example # Environment variable template
├── .env # Your configuration (gitignored)
├── create_dirs.sh # Directory creation script
├── backup_configs.sh # Backup utility
├── README.md # This file
└── docs/ # Configuration guides
View logs
docker compose logs -f [service-name]Stop the stack
docker compose downUpdate containers
docker compose pull
docker compose up -dBackup configurations
chmod +x backup_configs.sh
./backup_configs.shIf running on TrueNAS or mounting NAS shares:
- Mount SMB/NFS shares with correct
uidandgidoptions - Ensure the mount points match your
.envpaths - Verify permissions:
ls -ln /mnt/media - See Mount-SMB-Share.md for details
- Never commit
.env- It's in.gitignoreby default - Use strong passwords for all services
- Consider a reverse proxy (Traefik/Nginx) with SSL for remote access
- Limit port exposure to trusted networks
- Keep images updated regularly
Container can't write to directories
- Verify PUID/PGID matches file ownership:
ls -ln /srv/config - Re-run
create_dirs.shwith correct values - Check NAS mount options include correct
uid/gid
Services can't communicate
- All services are on the
media-netnetwork - Use service names (e.g.,
sabnzbd) not IPs in configurations
Port conflicts
- Check if ports are already in use:
netstat -tulpn | grep <port> - Update port mappings in
.envif needed
To build and publish custom images:
-
Build the image
docker build -t yourusername/arrstack:latest . -
Push to Docker Hub
docker login docker push yourusername/arrstack:latest
-
Update docker-compose.yaml
image: yourusername/arrstack:latest
See DOCKER_HUB.md for detailed instructions.
- Add Watchtower for automatic container updates
- Implement monitoring with Prometheus/Grafana
- Configure Traefik for SSL/reverse proxy
- Set up automated backups to cloud storage
- Add healthchecks to services
- Report issues via GitHub Issues
- Submit pull requests for improvements
- See contributing guidelines before submitting PRs
[Your License Here]