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:
commit
c4c80e98af
9 changed files with 461 additions and 0 deletions
57
deploy.sh
Executable file
57
deploy.sh
Executable 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"
|
||||
Loading…
Reference in a new issue