#!/bin/bash # Deploy script for SD Park Pass Monitor # This script uploads files to Linode server and restarts the service set -e # Exit on any error REMOTE_HOST="linode" REMOTE_PATH="/opt/sd-park-pass-ntfy" # Change this to your desired path SERVICE_NAME="sd-park-pass-ntfy" echo "๐Ÿš€ Starting deployment to $REMOTE_HOST..." # Create remote directory if it doesn't exist echo "๐Ÿ“ Creating remote directory..." ssh $REMOTE_HOST "sudo mkdir -p $REMOTE_PATH && sudo chown \$(whoami):\$(whoami) $REMOTE_PATH" # Copy main files to remote server echo "๐Ÿ“ค Uploading files..." scp index.js package.json sd-park-pass-ntfy.service $REMOTE_HOST:$REMOTE_PATH/ # Copy any additional config files if they exist if [ -f "ecosystem.config.js" ]; then scp ecosystem.config.js $REMOTE_HOST:$REMOTE_PATH/ fi # Install dependencies and restart service on remote server echo "๐Ÿ“ฆ Installing dependencies on remote server..." ssh $REMOTE_HOST "cd $REMOTE_PATH && npm install --production" # Install systemd service file echo "โš™๏ธ Installing systemd service..." ssh $REMOTE_HOST "sudo cp $REMOTE_PATH/sd-park-pass-ntfy.service /etc/systemd/system/ && sudo systemctl daemon-reload" # Test the application echo "๐Ÿงช Testing application on remote server..." ssh $REMOTE_HOST "cd $REMOTE_PATH && timeout 10s npm test || true" # Stop existing service (if running) echo "๐Ÿ›‘ Stopping existing service..." ssh $REMOTE_HOST "sudo systemctl stop $SERVICE_NAME || true" # Start the service echo "โ–ถ๏ธ Starting service..." ssh $REMOTE_HOST "sudo systemctl start $SERVICE_NAME" # Enable service to start on boot echo "๐Ÿ”„ Enabling service for auto-start..." ssh $REMOTE_HOST "sudo systemctl enable $SERVICE_NAME" # Check service status echo "โœ… Checking service status..." ssh $REMOTE_HOST "sudo systemctl status $SERVICE_NAME --no-pager" echo "๐ŸŽ‰ Deployment completed successfully!" echo "๐Ÿ“‹ Service logs: ssh $REMOTE_HOST 'sudo journalctl -u $SERVICE_NAME -f'"