#!/bin/bash # Deploy media server stack to Netcup RS 8000 # This script syncs the project and starts the Docker stack set -e REMOTE_HOST="netcup" REMOTE_DIR="/opt/media-server" PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)" echo "Deploying Media Server to Netcup RS 8000" echo "========================================" # Check SSH connection echo "Testing SSH connection..." if ! ssh -q $REMOTE_HOST exit; then echo "Error: Cannot connect to $REMOTE_HOST" echo "Make sure 'ssh netcup' works." exit 1 fi # Create remote directory echo "Creating remote directory..." ssh $REMOTE_HOST "sudo mkdir -p $REMOTE_DIR && sudo chown \$(whoami):\$(whoami) $REMOTE_DIR" # Sync project files echo "Syncing project files..." rsync -avz --progress \ --exclude '.git' \ --exclude 'downloads/*' \ --exclude 'cache/*' \ --exclude 'media/*' \ --exclude '*.log' \ --exclude '__pycache__' \ --exclude '.env' \ "$PROJECT_DIR/" \ "$REMOTE_HOST:$REMOTE_DIR/" # Copy .env if it exists locally (but not in git) if [ -f "$PROJECT_DIR/.env" ]; then echo "Copying .env file..." scp "$PROJECT_DIR/.env" "$REMOTE_HOST:$REMOTE_DIR/.env" fi # Setup on remote echo "Setting up on remote..." ssh $REMOTE_HOST << 'REMOTE_SCRIPT' cd /opt/media-server # Create required directories mkdir -p config/{jellyfin,jellyseerr,sonarr,radarr,prowlarr,lidarr,qbittorrent,gluetun,navidrome} mkdir -p cache/jellyfin mkdir -p downloads/{complete/movies,complete/tv,complete/music} mkdir -p media/{movies,shows,music} # Set permissions chmod +x scripts/*.sh # Rename docker-compose-server.yml to docker-compose.yml for deployment cp docker-compose-server.yml docker-compose.yml # Build and start services echo "Starting Docker services..." docker compose pull docker compose up -d echo "" echo "Waiting for services to start..." sleep 10 docker compose ps REMOTE_SCRIPT echo "" echo "Deployment complete!" echo "" echo "Access your services:" echo " Jellyfin: https://movies.jeffemmett.com" echo " Music: https://music.jeffemmett.com" echo " Requests: https://requests.jeffemmett.com" echo " Sonarr: https://sonarr.jeffemmett.com" echo " Radarr: https://radarr.jeffemmett.com" echo " Lidarr: https://lidarr.jeffemmett.com" echo " Prowlarr: https://prowlarr.jeffemmett.com" echo " Downloads: https://downloads.jeffemmett.com" echo "" echo "Next steps:" echo " 1. Add hostnames to Cloudflare tunnel config (see README.md)" echo " 2. Configure Prowlarr with indexers" echo " 3. Configure Radarr/Sonarr/Lidarr with download client" echo " 4. Configure Jellyseerr to connect to Jellyfin" echo "" echo "SSH to server: ssh netcup" echo "View logs: ssh netcup 'cd /opt/media-server && docker compose logs -f'"