#!/usr/bin/env bash # Trouve-KA — déploiement sur le node m2m32 (cluster MacLustr) + tunnel ngrok # Author: Simon-Pierre Boucher # Contact: contact@spboucher.ai # # Prérequis sur m2m32 : Docker (ou colima) + docker compose, ngrok authentifié. # Le domaine www.trouve-ka.com doit être réservé dans le compte ngrok. # # ⚠️ OBSOLÈTE pour la prod depuis 2026-08-15 : M2M32 tourne en pm2 NATIF # (docker = Postgres+Redis seulement; OpenSearch sur M2M32b). Déployer par # rsync + pm2 restart tk-api tk-crawler-1 tk-crawler-2 tk-enrichment tk-scheduler # (+ pnpm build dans apps/web puis pm2 restart tk-web si le web change). # Voir la mémoire projet « trouve-ka-architecture-native ». set -euo pipefail NODE="${NODE:-M2M32}" REMOTE_DIR="~/trouve-ka" NGROK_DOMAIN="${NGROK_DOMAIN:-www.trouve-ka.com}" cd "$(dirname "$0")/../.." echo "→ Synchronisation du code vers $NODE:$REMOTE_DIR" # .env est exclu : celui du laptop contient des ports de dev (5435/6380) qui # cassent l'exposition LAN 5432/6379 dont dépendent les workers satellites. rsync -az --delete \ --exclude node_modules --exclude .next --exclude .venv --exclude __pycache__ \ --exclude .git --exclude data --exclude '*.egg-info' --exclude .env \ ./ "$NODE:$REMOTE_DIR/" echo "→ Build et démarrage du stack sur $NODE" ssh "$NODE" "cd $REMOTE_DIR && docker compose up -d --build" echo "→ Chargement des seeds (idempotent)" ssh "$NODE" "cd $REMOTE_DIR && docker compose run --rm migrate && \ docker compose run --rm --entrypoint python crawler-worker -m trouveka.crawler.seed scripts/bootstrap-seeds/seeds.txt" echo "→ Tunnel ngrok ($NGROK_DOMAIN → :3000)" ssh "$NODE" "pgrep -f 'ngrok http.*$NGROK_DOMAIN' > /dev/null || \ nohup ngrok http --url=$NGROK_DOMAIN 3000 > ~/trouve-ka-ngrok.log 2>&1 &" echo "→ Vérification de santé" sleep 5 ssh "$NODE" "cd $REMOTE_DIR && bash scripts/health-check/check.sh" || true echo "✓ Déploiement terminé : https://$NGROK_DOMAIN" echo " N'oublie pas de mettre à jour ~/Desktop/cluster-skill/cluster-deployments.json"