87 lines
2.3 KiB
Bash
Executable File
87 lines
2.3 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,sonarr,radarr,prowlarr,transmission}
|
|
mkdir -p cache/jellyfin
|
|
mkdir -p downloads/{complete/movies,complete/tv}
|
|
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 " 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'"
|