shieldx/scripts/deploy-monitor-erik.sh
Rene Fichtmueller 915b6ab285 feat(scripts): daily arXiv + HackerNews security monitor
Autonomous monitoring script for Erik VPS:
- Fetches arXiv cs.CR + cs.AI RSS feeds daily
- Fetches HackerNews top stories + keyword RSS feeds
- Classifies relevance via Claude Haiku API (HIGH/MEDIUM/LOW/SKIP)
- HIGH findings: generates TypeScript detection rules via Claude
- Appends rules to src/detection/AutoGeneratedRules.ts
- Runs tsc --noEmit before committing (zero errors required)
- Commits + pushes to Gitea on success
- JSON report saved to /opt/scripts/logs/shieldx-report-YYYY-MM-DD.json
- Cron: 0 6 * * * (6:00 UTC = 8:00 Berlin)
- deploy-monitor-erik.sh: one-command deploy to Erik
2026-03-31 16:52:09 +02:00

42 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# Deploy arXiv monitor script to Erik VPS
# Run once from local machine: bash scripts/deploy-monitor-erik.sh
set -euo pipefail
ERIK="root@217.154.82.179"
SCRIPTS_DIR="/opt/scripts"
echo "=== Deploying ShieldX arXiv Monitor to Erik ==="
# 1. Copy monitor script
scp scripts/arxiv-monitor.mjs "${ERIK}:${SCRIPTS_DIR}/arxiv-monitor.mjs"
ssh "$ERIK" "chmod +x ${SCRIPTS_DIR}/arxiv-monitor.mjs"
# 2. Create .env if not exists
ssh "$ERIK" "if [ ! -f ${SCRIPTS_DIR}/.env ]; then
cat > ${SCRIPTS_DIR}/.env << 'ENVEOF'
# ShieldX Monitor Config
ANTHROPIC_API_KEY=YOUR_KEY_HERE
GITEA_TOKEN=5df44f12b35bdbb69f78004aa494cb8dea41bc87
GITEA_BASE_URL=https://gitea.context-x.org
GITEA_USER=rene
LOG_DIR=/opt/scripts/logs
WORK_DIR=/tmp/shieldx-monitor
ENVEOF
echo 'Created .env — set ANTHROPIC_API_KEY!'
else
echo '.env already exists — not overwriting'
fi"
# 3. Add cron if not already set
ssh "$ERIK" "(crontab -l 2>/dev/null | grep -q 'arxiv-monitor') && echo 'Cron already set' || (crontab -l 2>/dev/null; echo '0 6 * * * node /opt/scripts/arxiv-monitor.mjs >> /opt/scripts/logs/arxiv-monitor.log 2>&1') | crontab -"
echo ""
echo "=== Done ==="
echo ""
echo "Next steps on Erik:"
echo " 1. Set ANTHROPIC_API_KEY in ${SCRIPTS_DIR}/.env"
echo " 2. Test run: node /opt/scripts/arxiv-monitor.mjs"
echo " 3. Check logs: tail -f /opt/scripts/logs/arxiv-monitor.log"
echo " 4. Cron runs daily at 6:00 UTC (8:00 Berlin)"