#!/usr/bin/env bash # Foodlinkk Command Center — volledige deploy (migraties + build + health) set -euo pipefail PASS="${FOODLINKK_SSH_PASS:-Foodlinkk#2026}" VM="${FOODLINKK_VM:-aissa@10.4.7.18}" REMOTE_DIR="${FOODLINKK_REMOTE_DIR:-/home/aissa/foodlinkk-command-center}" LOCAL_DIR="$(cd "$(dirname "$0")" && pwd)" echo "=== Foodlinkk deploy-all ===" echo "Local: $LOCAL_DIR" echo "Remote: $VM:$REMOTE_DIR" if ! command -v sshpass >/dev/null 2>&1; then echo "sshpass is vereist (apt install sshpass)" exit 1 fi echo "=== Rsync naar VM106 ===" sshpass -p "$PASS" rsync -az --delete \ --exclude '.git' \ --exclude '__pycache__' \ --exclude '*.pyc' \ --exclude '.env' \ --exclude 'node_modules' \ -e "ssh -o StrictHostKeyChecking=no" \ "$LOCAL_DIR/" "$VM:$REMOTE_DIR/" echo "=== Migraties + Docker rebuild op VM106 ===" sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$VM" bash -s </dev/null || true bash scripts/setup_gitea_sysops.sh || true echo "=== SysOps + Herman cron ===" (crontab -l 2>/dev/null || true | grep -v sysops_daily.py | grep -v herman_daily_digest.py | grep -v herman_platform_update.py; \ echo "0 7 * * * cd $REMOTE_DIR && /usr/bin/python3 scripts/sysops_daily.py >> /tmp/sysops-daily.log 2>&1"; \ echo "30 7 * * * cd $REMOTE_DIR && /usr/bin/python3 scripts/herman_daily_digest.py >> /tmp/herman-daily.log 2>&1") | sort -u | crontab - echo "Cron: SysOps 07:00, Herman briefing 07:30" echo "=== Run SysOps daily now (test) ===" cd "$REMOTE_DIR" && python3 scripts/sysops_daily.py || true echo "=== Schedule Herman platform update over 2 uur ===" if command -v at >/dev/null 2>&1; then echo "cd $REMOTE_DIR && /usr/bin/python3 scripts/herman_platform_update.py >> /tmp/herman-update.log 2>&1" | at now + 2 hours 2>&1 || true echo "Gepland via 'at now + 2 hours'" else UPD_H=$(date -d '+2 hours' +%H 2>/dev/null || date -v+2H +%H 2>/dev/null || echo "09") UPD_M=$(date -d '+2 hours' +%M 2>/dev/null || date -v+2H +%M 2>/dev/null || echo "00") (crontab -l 2>/dev/null || true; echo "\$UPD_M \$UPD_H * * * cd $REMOTE_DIR && /usr/bin/python3 scripts/herman_platform_update.py >> /tmp/herman-update.log 2>&1 # once") | sort -u | crontab - echo "Gepland via cron om \$UPD_H:\$UPD_M" fi echo "=== SysOps Gitea sync (volledige repo) ===" docker exec foodlinkk_tools_api python3 -c " from app.connectors.gitea_repo_sync import run_gitea_repo_sync import json print(json.dumps(run_gitea_repo_sync('deploy-all'), indent=2)) " || echo "Gitea sync warning — check tools-api logs" echo "=== Herman briefing nu genereren ===" cd "$REMOTE_DIR" && python3 scripts/herman_daily_digest.py || true REMOTE echo "=== Deploy voltooid ===" echo "Cockpit: http://10.4.7.18:8600" echo "Tools API: http://10.4.7.18:8700" echo "Gitea: http://10.4.7.18:3001"