Checks public WAN IP every 5 minutes via systemd timer. On change: - Updates A-records via DirectAdmin API (login key auth) - Sends WhatsApp notification via wwebjs-api
57 lines
1.7 KiB
Shell
Executable file
57 lines
1.7 KiB
Shell
Executable file
#!/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"
|