#!/bin/bash # Deployment script for Livestream Archiver # Usage: ./deploy.sh SERVER="rockvilleav@remote.rockvilletollandsda.church" PORT="8443" REMOTE_PATH="/home/rockvilleav/livestream-archiver" SERVICE_NAME="livestream-archiver" echo "🚀 Starting deployment to $SERVER:$PORT" # Build release binary echo "📦 Building release binary..." cargo build --release if [ $? -ne 0 ]; then echo "❌ Build failed!" exit 1 fi echo "✅ Build successful!" # Create deployment directory echo "📁 Creating deployment directory..." mkdir -p deploy # Copy necessary files to deploy directory echo "📋 Copying files..." cp target/release/livestream_archiver deploy/ cp livestream-archiver.service deploy/ cp README.md deploy/ # Create deployment package echo "📦 Creating deployment package..." tar -czf livestream-archiver-deploy.tar.gz -C deploy . # Copy to server echo "🔄 Copying to server..." scp -P $PORT livestream-archiver-deploy.tar.gz $SERVER:/tmp/ # Deploy on server echo "🚀 Deploying on server..." ssh -p $PORT $SERVER << 'EOF' # Stop existing service if running sudo systemctl stop livestream-archiver 2>/dev/null || true # Create application directory sudo mkdir -p /home/rockvilleav/livestream-archiver # Extract deployment package cd /tmp tar -xzf livestream-archiver-deploy.tar.gz -C /home/rockvilleav/livestream-archiver/ # Set permissions sudo chown -R rockvilleav:rockvilleav /home/rockvilleav/livestream-archiver sudo chmod +x /home/rockvilleav/livestream-archiver/livestream_archiver # Install systemd service sudo cp /home/rockvilleav/livestream-archiver/livestream-archiver.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable livestream-archiver # Create required directories sudo mkdir -p /home/rockvilleav/Sync/Livestreams sudo mkdir -p /media/archive/jellyfin/livestreams sudo chown -R rockvilleav:rockvilleav /home/rockvilleav/Sync/Livestreams # Start service sudo systemctl start livestream-archiver # Check status echo "📊 Service status:" sudo systemctl status livestream-archiver --no-pager # Clean up rm -f /tmp/livestream-archiver-deploy.tar.gz EOF echo "✅ Deployment complete!" echo "📊 To check logs: ssh -p $PORT $SERVER 'sudo journalctl -u livestream-archiver -f'" echo "🔄 To restart: ssh -p $PORT $SERVER 'sudo systemctl restart livestream-archiver'" # Clean up local files rm -rf deploy livestream-archiver-deploy.tar.gz echo "🎉 All done!"