🎬 ARR Suite Template Bootstrap - Complete Media Automation Stack Features: - 16 production services (Prowlarr, Sonarr, Radarr, Plex, etc.) - One-command Ansible deployment - VPN-protected downloads via Gluetun - Tailscale secure access - Production-ready security (UFW, Fail2Ban) - Automated backups and monitoring - Comprehensive documentation Ready for customization and deployment to any VPS. Co-authored-by: openhands <openhands@all-hands.dev>
7.6 KiB
7.6 KiB
🎯 Template Setup Guide
Complete setup instructions for the ARR Suite Template Bootstrap
This guide will walk you through customizing and deploying this template for your own VPS.
🚀 Quick Setup (5 Minutes)
Step 1: Clone and Prepare
git clone <your-repo-url> my-arr-suite
cd my-arr-suite
Step 2: Configure Your VPS
Edit inventory/production.yml:
all:
children:
arrs_servers:
hosts:
your-vps:
ansible_host: YOUR_VPS_IP_ADDRESS # ← Your VPS IP
ansible_user: root # ← Your SSH user
ansible_ssh_private_key_file: ~/.ssh/your_private_key # ← Your SSH key
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
tailscale_ip: YOUR_TAILSCALE_IP_ADDRESS # ← Optional: Tailscale IP
Step 3: Set Up Secrets
# Copy the vault template
cp group_vars/all/vault.yml.example group_vars/all/vault.yml
# Encrypt it (you'll set a password)
ansible-vault encrypt group_vars/all/vault.yml
# Edit your secrets
ansible-vault edit group_vars/all/vault.yml
Required secrets to configure:
# VPN Credentials (REQUIRED)
vault_vpn_provider: "nordvpn" # Your VPN provider
vault_vpn_username: "your_username" # Your VPN username
vault_vpn_password: "your_password" # Your VPN password
# Optional: Indexer credentials
vault_nzbgeek_api_key: "your_api_key"
vault_nzbgeek_username: "your_username"
# Optional: Usenet provider
vault_usenet_provider_host: "news.your-provider.com"
vault_usenet_provider_username: "your_username"
vault_usenet_provider_password: "your_password"
Step 4: Deploy
# Deploy everything
ansible-playbook -i inventory/production.yml ansible-deployment.yml
# Or use the helper script
./deploy.sh
🔧 Detailed Configuration
VPN Provider Setup
NordVPN
vault_vpn_provider: "nordvpn"
vault_vpn_username: "your_nordvpn_email"
vault_vpn_password: "your_nordvpn_password"
Surfshark
vault_vpn_provider: "surfshark"
vault_vpn_username: "your_surfshark_username"
vault_vpn_password: "your_surfshark_password"
ExpressVPN
vault_vpn_provider: "expressvpn"
vault_vpn_username: "your_expressvpn_username"
vault_vpn_password: "your_expressvpn_password"
Optional Services Configuration
Edit ansible-deployment.yml to enable/disable services:
# Service toggles
enable_whisparr: false # Adult content automation
enable_tailscale: true # Secure remote access
enable_plex_claim: false # Auto Plex setup
enable_backup_system: true # Automated backups
enable_monitoring: true # Health monitoring
Resource Customization
Adjust resource limits in ansible-deployment.yml:
# Docker resource limits
docker_memory_limit: "2g" # Per container memory limit
docker_cpu_limit: "1.0" # Per container CPU limit
# Storage paths
media_root: "/home/docker/media"
downloads_root: "/home/docker/downloads"
config_root: "/home/docker"
🌐 Domain & SSL Setup (Optional)
Custom Domain Configuration
# In vault.yml
vault_domain: "yourdomain.com"
vault_ssl_email: "you@yourdomain.com"
vault_cloudflare_api_token: "your_cloudflare_token" # If using Cloudflare
Reverse Proxy Setup
The template includes Traefik configuration for SSL:
# Enable reverse proxy
enable_traefik: true
enable_ssl: true
🔐 Security Customization
SSH Key Setup
# Generate SSH key if you don't have one
ssh-keygen -t ed25519 -f ~/.ssh/arr_suite_key -C "arr-suite-deployment"
# Copy to your VPS
ssh-copy-id -i ~/.ssh/arr_suite_key.pub root@YOUR_VPS_IP
# Update inventory with key path
ansible_ssh_private_key_file: ~/.ssh/arr_suite_key
Tailscale Setup (Recommended)
# Install Tailscale on your local machine
curl -fsSL https://tailscale.com/install.sh | sh
# Get your Tailscale auth key
tailscale up
# Visit the URL to authenticate
# Add auth key to vault.yml
vault_tailscale_auth_key: "tskey-auth-your-key-here"
📊 Post-Deployment Configuration
1. Access Your Services
After deployment, services will be available at:
http://YOUR_VPS_IP:9696 - Prowlarr
http://YOUR_VPS_IP:8989 - Sonarr
http://YOUR_VPS_IP:7878 - Radarr
http://YOUR_VPS_IP:8686 - Lidarr
http://YOUR_VPS_IP:6767 - Bazarr
http://YOUR_VPS_IP:5055 - Jellyseerr
http://YOUR_VPS_IP:8080 - SABnzbd
http://YOUR_VPS_IP:8112 - Deluge
http://YOUR_VPS_IP:32400 - Plex
http://YOUR_VPS_IP:8181 - Tautulli
2. Configure Indexers in Prowlarr
- Access Prowlarr at
http://YOUR_VPS_IP:9696 - Go to Settings → Indexers
- Add your indexers (NZBgeek, NZBHydra2, etc.)
- Test connections
3. Connect Applications
- In Prowlarr → Settings → Apps
- Add each application:
- Sonarr:
http://sonarr:8989 - Radarr:
http://radarr:7878 - Lidarr:
http://lidarr:8686 - Bazarr:
http://bazarr:6767
- Sonarr:
4. Setup Download Clients
In each *arr application:
- Go to Settings → Download Clients
- Add SABnzbd:
http://gluetun:8080 - Add Deluge:
http://gluetun:8112
5. Configure Plex
- Access Plex at
http://YOUR_VPS_IP:32400 - Complete initial setup
- Add libraries:
- Movies:
/media/movies - TV Shows:
/media/tv - Music:
/media/music
- Movies:
🛠️ Customization Examples
Add Custom Service
- Create
compose/my-service.yml:
services:
my-service:
image: my-service:latest
container_name: my-service
ports:
- "8090:8090"
volumes:
- ./my-service:/config
restart: unless-stopped
- Add to
ansible-deployment.yml:
- name: Deploy my custom service
docker_compose:
project_src: "{{ docker_dir }}/compose"
files:
- docker-compose-vpn.yml
- my-service.yml
Custom Backup Schedule
# In ansible-deployment.yml
backup_schedule: "0 2 * * *" # Daily at 2 AM
backup_retention_days: 30 # Keep 30 days of backups
backup_encryption: true # Encrypt backups
🔧 Troubleshooting
Common Issues
Ansible Connection Failed
# Test SSH connection
ssh -i ~/.ssh/your_key root@YOUR_VPS_IP
# Check inventory syntax
ansible-inventory -i inventory/production.yml --list
VPN Not Working
# Check VPN container logs
docker logs gluetun
# Test VPN connection
docker exec gluetun curl -s ifconfig.me
Services Not Accessible
# Check container status
docker ps
# Check firewall
sudo ufw status
# Check service logs
docker logs prowlarr
Useful Commands
# Check deployment status
ansible-playbook -i inventory/production.yml ansible-deployment.yml --check
# Run specific tasks
ansible-playbook -i inventory/production.yml ansible-deployment.yml --tags "docker"
# View vault contents
ansible-vault view group_vars/all/vault.yml
# Edit vault
ansible-vault edit group_vars/all/vault.yml
📚 Next Steps
- Read the full documentation: ANSIBLE_DEPLOYMENT.md
- Configure your indexers: Add your favorite indexers to Prowlarr
- Set up automation: Configure quality profiles and release profiles
- Add media: Start adding movies and TV shows to your libraries
- Monitor performance: Use Tautulli to monitor your Plex usage
🆘 Getting Help
- Documentation: Check the
docs/directory - Troubleshooting: See docs/TROUBLESHOOTING.md
- Community: Join the discussion forums
- Issues: Report bugs in the issue tracker
🎉 You're ready to deploy your own media automation empire!