#!/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 '*.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,sonarr,radarr,prowlarr,transmission,rclone,traefik/letsencrypt} mkdir -p cache/{jellyfin,rclone} mkdir -p downloads/{complete/movies,complete/tv} mkdir -p logs/r2-sync mkdir -p /mnt/r2-media # Install FUSE if needed if ! command -v fusermount &> /dev/null; then sudo apt-get update && sudo apt-get install -y fuse3 fi # Install rclone if needed if ! command -v rclone &> /dev/null; then curl https://rclone.org/install.sh | sudo bash fi # Set permissions chmod +x scripts/*.sh chmod 600 config/rclone/rclone.conf 2>/dev/null || true # Build and start services echo "Starting Docker services..." docker compose pull docker compose build 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 (or http://SERVER_IP:8096)" echo " Sonarr: http://SERVER_IP:8989" echo " Radarr: http://SERVER_IP:7878" echo " Prowlarr: http://SERVER_IP:9696" echo " Transmission: http://SERVER_IP:9091" echo "" echo "SSH to server: ssh netcup" echo "View logs: ssh netcup 'cd /opt/media-server && docker compose logs -f'"