🎬 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>
75 lines
1.8 KiB
Django/Jinja
75 lines
1.8 KiB
Django/Jinja
#!/bin/bash
|
|
# Arrs Configuration Backup Script
|
|
# Generated by Ansible - Do not edit manually
|
|
|
|
set -euo pipefail
|
|
|
|
# Configuration
|
|
BACKUP_DIR="{{ backup_dir }}"
|
|
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
|
BACKUP_NAME="arrs_backup_${TIMESTAMP}"
|
|
BACKUP_PATH="${BACKUP_DIR}/${BACKUP_NAME}"
|
|
LOG_FILE="{{ docker_root }}/logs/backup.log"
|
|
|
|
# Logging function
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
|
}
|
|
|
|
# Create backup directory
|
|
mkdir -p "$BACKUP_PATH"
|
|
|
|
log "Starting Arrs backup: $BACKUP_NAME"
|
|
|
|
# Stop services for consistent backup
|
|
log "Stopping Arrs services..."
|
|
cd {{ docker_compose_dir }}
|
|
docker-compose stop
|
|
|
|
# Backup configurations
|
|
log "Backing up configurations..."
|
|
{% for path in backup_paths %}
|
|
if [ -d "{{ path }}" ]; then
|
|
rsync -av "{{ path }}/" "$BACKUP_PATH/$(basename {{ path }})/"
|
|
log "Backed up {{ path }}"
|
|
fi
|
|
{% endfor %}
|
|
|
|
# Backup Docker Compose files
|
|
log "Backing up Docker Compose configuration..."
|
|
cp -r {{ docker_compose_dir }} "$BACKUP_PATH/compose"
|
|
|
|
# Create backup metadata
|
|
cat > "$BACKUP_PATH/backup_info.txt" << EOF
|
|
Backup Date: $(date)
|
|
Hostname: $(hostname)
|
|
Docker User: {{ docker_user }}
|
|
Media Root: {{ media_root }}
|
|
Docker Root: {{ docker_root }}
|
|
Backup Paths:
|
|
{% for path in backup_paths %}
|
|
- {{ path }}
|
|
{% endfor %}
|
|
EOF
|
|
|
|
# Restart services
|
|
log "Restarting Arrs services..."
|
|
docker-compose up -d
|
|
|
|
# Create compressed archive
|
|
log "Creating compressed archive..."
|
|
cd "$BACKUP_DIR"
|
|
tar -czf "${BACKUP_NAME}.tar.gz" "$BACKUP_NAME"
|
|
rm -rf "$BACKUP_NAME"
|
|
|
|
# Set permissions
|
|
chown {{ docker_user }}:{{ docker_group }} "${BACKUP_NAME}.tar.gz"
|
|
|
|
log "Backup completed: ${BACKUP_NAME}.tar.gz"
|
|
log "Backup size: $(du -h ${BACKUP_NAME}.tar.gz | cut -f1)"
|
|
|
|
# Cleanup old backups
|
|
log "Cleaning up old backups..."
|
|
find "$BACKUP_DIR" -name "arrs_backup_*.tar.gz" -mtime +{{ backup_retention_days }} -delete
|
|
|
|
log "Backup process finished successfully" |