feat: WAN IP Guard - dynamic DNS updater with WhatsApp notifications

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
This commit is contained in:
Eddy de Vink 2026-06-21 09:53:28 +02:00
commit c4c80e98af
9 changed files with 461 additions and 0 deletions

57
deploy.sh Executable file
View file

@ -0,0 +1,57 @@
#!/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"