jellyfin-media/scripts/deploy-to-netcup.sh

95 lines
2.5 KiB
Bash
Executable File

#!/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'"