🎬 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>
104 lines
2.8 KiB
Django/Jinja
104 lines
2.8 KiB
Django/Jinja
#!/bin/bash
|
|
# Configure Bazarr Connections
|
|
|
|
echo "🔧 Configuring Bazarr connections..."
|
|
|
|
# Create Bazarr configuration directory if it doesn't exist
|
|
mkdir -p /config/config
|
|
|
|
# Configure Sonarr connection in Bazarr
|
|
cat > /tmp/sonarr_config.py << 'EOF'
|
|
import sqlite3
|
|
import json
|
|
|
|
# Connect to Bazarr database
|
|
conn = sqlite3.connect('/config/db/bazarr.db')
|
|
cursor = conn.cursor()
|
|
|
|
# Update Sonarr settings
|
|
sonarr_settings = {
|
|
'ip': 'sonarr',
|
|
'port': 8989,
|
|
'base_url': '',
|
|
'ssl': False,
|
|
'apikey': '{{ api_keys.sonarr }}',
|
|
'full_update': 'Daily',
|
|
'only_monitored': False,
|
|
'series_sync': 60,
|
|
'episodes_sync': 60
|
|
}
|
|
|
|
# Insert or update Sonarr settings
|
|
for key, value in sonarr_settings.items():
|
|
cursor.execute(
|
|
"INSERT OR REPLACE INTO table_settings_sonarr (key, value) VALUES (?, ?)",
|
|
(key, json.dumps(value) if isinstance(value, (dict, list)) else str(value))
|
|
)
|
|
|
|
conn.commit()
|
|
conn.close()
|
|
print("✅ Sonarr configuration updated in Bazarr")
|
|
EOF
|
|
|
|
# Configure Radarr connection in Bazarr
|
|
cat > /tmp/radarr_config.py << 'EOF'
|
|
import sqlite3
|
|
import json
|
|
|
|
# Connect to Bazarr database
|
|
conn = sqlite3.connect('/config/db/bazarr.db')
|
|
cursor = conn.cursor()
|
|
|
|
# Update Radarr settings
|
|
radarr_settings = {
|
|
'ip': 'radarr',
|
|
'port': 7878,
|
|
'base_url': '',
|
|
'ssl': False,
|
|
'apikey': '{{ api_keys.radarr }}',
|
|
'full_update': 'Daily',
|
|
'only_monitored': False,
|
|
'movies_sync': 60
|
|
}
|
|
|
|
# Insert or update Radarr settings
|
|
for key, value in radarr_settings.items():
|
|
cursor.execute(
|
|
"INSERT OR REPLACE INTO table_settings_radarr (key, value) VALUES (?, ?)",
|
|
(key, json.dumps(value) if isinstance(value, (dict, list)) else str(value))
|
|
)
|
|
|
|
conn.commit()
|
|
conn.close()
|
|
print("✅ Radarr configuration updated in Bazarr")
|
|
EOF
|
|
|
|
# Run the configuration scripts if Python is available
|
|
if command -v python3 >/dev/null 2>&1; then
|
|
python3 /tmp/sonarr_config.py 2>/dev/null || echo "⚠️ Sonarr config update failed - configure manually"
|
|
python3 /tmp/radarr_config.py 2>/dev/null || echo "⚠️ Radarr config update failed - configure manually"
|
|
else
|
|
echo "⚠️ Python not available - configure Bazarr manually via web interface"
|
|
fi
|
|
|
|
# Enable Sonarr and Radarr in Bazarr settings
|
|
cat > /tmp/enable_services.py << 'EOF'
|
|
import sqlite3
|
|
|
|
conn = sqlite3.connect('/config/db/bazarr.db')
|
|
cursor = conn.cursor()
|
|
|
|
# Enable Sonarr and Radarr
|
|
cursor.execute("INSERT OR REPLACE INTO table_settings_general (key, value) VALUES ('use_sonarr', 'True')")
|
|
cursor.execute("INSERT OR REPLACE INTO table_settings_general (key, value) VALUES ('use_radarr', 'True')")
|
|
|
|
conn.commit()
|
|
conn.close()
|
|
print("✅ Sonarr and Radarr enabled in Bazarr")
|
|
EOF
|
|
|
|
if command -v python3 >/dev/null 2>&1; then
|
|
python3 /tmp/enable_services.py 2>/dev/null || echo "⚠️ Service enabling failed"
|
|
fi
|
|
|
|
echo "✅ Bazarr configuration complete!" |