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

95 lines
2.7 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 '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'"