#!/bin/bash set -euo pipefail # WAN IP Guard - Deployment script # Configure the variables below for your setup, then run from your local machine REMOTE_USER="your-ssh-user" REMOTE_HOST="your-server" REMOTE_DIR="/home/your-ssh-user/wan-ip-guard" echo "=== WAN IP Guard Deployment ===" echo "" # 1. Sync files to server echo "[1/5] Syncing files to ${REMOTE_HOST}..." rsync -avz --delete \ --exclude 'node_modules' \ --exclude '.git' \ --exclude '*.log' \ --exclude '.env' \ ./ "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/" echo " Done." echo "" # 2. Install dependencies echo "[2/5] Installing npm dependencies..." ssh "${REMOTE_USER}@${REMOTE_HOST}" "cd ${REMOTE_DIR} && npm install --omit=dev" echo " Done." echo "" # 3. Create state directory echo "[3/5] Creating state directory..." ssh "${REMOTE_USER}@${REMOTE_HOST}" "sudo mkdir -p /var/lib/wan-ip-guard && sudo chown ${REMOTE_USER}:${REMOTE_USER} /var/lib/wan-ip-guard" echo " Done." echo "" # 4. Install systemd service + timer echo "[4/5] Installing systemd units..." ssh "${REMOTE_USER}@${REMOTE_HOST}" " sudo cp ${REMOTE_DIR}/systemd/wan-ip-guard.service /etc/systemd/system/ sudo cp ${REMOTE_DIR}/systemd/wan-ip-guard.timer /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable wan-ip-guard.timer sudo systemctl start wan-ip-guard.timer " echo " Done." echo "" # 5. Verify echo "[5/5] Verifying deployment..." ssh "${REMOTE_USER}@${REMOTE_HOST}" "systemctl status wan-ip-guard.timer --no-pager" echo "" echo "=== Deployment complete! ===" echo "The timer runs every 5 minutes." echo "Check logs: ssh ${REMOTE_USER}@${REMOTE_HOST} journalctl -u wan-ip-guard -f" echo "Run manually: ssh ${REMOTE_USER}@${REMOTE_HOST} cd ${REMOTE_DIR} && node index.js"