SPB Git forge

spb/api-ka

Public

API-KA — plateforme centrale : collecte quotidienne des 8 services KA, historisation append-only et API publique sur www.api-ka.com

48commits 1branches 0releases
5.9 MBsize
maindefault branch
19 days agolast push
Python 60.9% HTML 21% TypeScript 7.3% JavaScript 5.2% CSS 4.8% Shell 0.8%
2.5 KB · 67 lines shellscript
Raw Blame History
1#!/usr/bin/env bash2# ============================================3# Projet   : API-KA4# Fichier  : scripts/deploy_m3u96b.sh5# Node     : m3u96b6# Author   : Simon-Pierre Boucher7# Contact  : contact@spboucher.ai8# Date     : 2026-08-169# ============================================10# Déploiement complet d'API-KA sur le node m3u96b (/opt/api-ka).11# À exécuter depuis le laptop, à la racine du projet.1213set -euo pipefail1415NODE="m3u96b"16REMOTE_DIR="/opt/api-ka"17PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"1819echo "==> [1/6] Déploiement API-KA vers ${NODE}:${REMOTE_DIR}"20ssh "$NODE" "sudo mkdir -p '$REMOTE_DIR' && sudo chown \"\$(whoami)\" '$REMOTE_DIR'"2122echo "==> [2/6] Synchronisation des fichiers (rsync)"23rsync -az --delete \24    --exclude '.env' \25    --exclude 'venv/' \26    --exclude '__pycache__/' \27    --exclude '.pytest_cache/' \28    --exclude '.ruff_cache/' \29    --exclude '.git/' \30    --exclude 'logs/' \31    --exclude 'data/' \32    "$PROJECT_DIR/" "$NODE:$REMOTE_DIR/"3334echo "==> [3/6] Environnement virtuel + dépendances"35ssh "$NODE" "cd '$REMOTE_DIR' \36    && mkdir -p logs data/backups \37    && (python3.11 -m venv venv 2>/dev/null || python3 -m venv venv) \38    && ./venv/bin/pip install --quiet --upgrade pip \39    && ./venv/bin/pip install --quiet -r requirements.txt"4041echo "==> [4/6] Vérification du .env"42if ! ssh "$NODE" "test -f '$REMOTE_DIR/.env'"; then43    echo "⚠️  $REMOTE_DIR/.env manquant sur $NODE — copier .env.example et le remplir avant de démarrer les services."44fi4546echo "==> [5/6] Installation des services (systemd si disponible)"47ssh "$NODE" "if command -v systemctl >/dev/null 2>&1; then \48    sudo cp '$REMOTE_DIR'/systemd/apika-*.service /etc/systemd/system/ \49    && sudo systemctl daemon-reload \50    && sudo systemctl enable --now apika-api apika-scheduler apika-ngrok \51    && sudo systemctl restart apika-api apika-scheduler apika-ngrok; \52else \53    echo '⚠️  systemd indisponible sur ce node (macOS) — démarrer les services manuellement :'; \54    echo '    cd $REMOTE_DIR && ./venv/bin/uvicorn src.api.main:app --host 127.0.0.1 --port 8000 &'; \55    echo '    cd $REMOTE_DIR && ./venv/bin/python -m src.scheduler.daily_job &'; \56    echo '    bash $REMOTE_DIR/scripts/start_ngrok.sh &'; \57fi"5859echo "==> [6/6] Healthcheck"60sleep 361if ssh "$NODE" "curl -fsS --max-time 10 http://127.0.0.1:8000/health" >/dev/null 2>&1; then62    echo "✅ API-KA déployée et en bonne santé sur $NODE."63else64    echo "⚠️  /health ne répond pas encore sur $NODE — vérifier les services (systemctl status apika-*)."65    exit 166fi67