10e. Scripts d'Infrastructure
L'orchestration, le déploiement et la maintenance du framework ECHO reposent sur un ensemble de scripts Shell et PowerShell. Ils garantissent la reproductibilité stricte de l'environnement, de l'hôte Windows jusqu'aux conteneurs Docker de la machine virtuelle Ubuntu.
Cartographie des Scripts
| Script | Environnement | Rôle Principal |
|---|---|---|
install-hyperv.ps1 | Windows (Hôte) | Injection Zip via VHDX et démarrage VM |
sync-echo.sh | Ubuntu (VM) | Extraction, distribution des fichiers et attribution des droits |
install-stack.sh | Ubuntu (VM) | Orchestration globale Docker (stack-echo.yml) |
enable-bunkerweb.sh / disable-bunkerweb.sh | Ubuntu (VM) | Bascule (toggle) de l'exposition sécurisée via BunkerWeb et lancement d'ECHO Auth |
config-owui.sh | Ubuntu (VM) | Provisionnement de l'API Open WebUI (Arsenal et Configuration) |
upgrade-echo.sh | Ubuntu (VM) | Mise à niveau majeure de l'infrastructure hôte |
Architecture de Déploiement (Windows vers VM)
Le déploiement d'une nouvelle version d'ECHO s'effectue sans connexion réseau entre l'hôte et la machine virtuelle.
install-hyperv.ps1
Ce script PowerShell s'exécute avec des privilèges administrateur sur l'hôte Windows. Il orchestre le transfert physique des données en contournant les limitations réseau :
- Archivage : Compresse l'intégralité du dépôt courant (ciblant par défaut la branche
main, la version de ce script d'installation étant la 5.147.43) en un fichier d'archive compactecho-update.zip. - Provisionnement VM : Allocation garantie de 8 Go de RAM dynamique (pour respecter les exigences système d'Ubuntu 24.04/26.04) et création d'une VM Hyper-V de Génération 2 sécurisée.
- Injection VHDX (Disque Seed) : Monte localement le disque virtuel VHDX de la VM de destination via WMI.
- Transfert de Fichiers : Copie l'archive ZIP et le script d'amorçage Linux (
sync-echo.sh) directement dans le système de fichiers du disque virtuel, puis le démonte proprement. - Démarrage : Démarre la machine virtuelle Hyper-V, amorçant le processus de boot Linux.
L'orchestration interne est assurée par le déploiement de stack-echo.yml (Docker Compose). Une fois les services en ligne, la sécurisation réseau (BunkerWeb) est initialisée ou arrêtée dynamiquement via enable-bunkerweb.sh.
config-owui.sh (Configuration Automatique)
Ce script d'orchestration post-déploiement est exécuté par la grappe pour configurer automatiquement l'interface et le modèle.
- Boot API : Le script attend (jusqu'à 20 min) que l'API Open WebUI (
http://localhost:3000/health) soit opérationnelle. - Authentification de Service : Il génère un mot de passe unique aléatoire (64 caractères) et enregistre le compte administrateur racine (ex:
install-stack@echo.local) pour obtenir un jeton JWT d'administration. - Configuration Dynamique : À l'aide de l'API, il injecte toutes les directives d'environnement (modèle par défaut, restrictions d'accès, permissions, désactivation d'OpenAI/Ollama au profit d'ECHO) définies dans le template statique de vérité
01-config/webui-settings.json. - Finalisation : Les ressources additionnelles de l'Arsenal sont synchronisées, assurant une conformité stricte dès le premier démarrage, sans aucune intervention manuelle.
Mise à Niveau Majeure
upgrade-echo.sh
Ce script prend en charge la mise à niveau majeure de l'infrastructure hôte (Ubuntu) de la machine virtuelle. Il assure la transition sécurisée vers les nouvelles versions d'ECHO en mettant à jour les dépendances système, en migrant les bases de données si nécessaire, et en réalignant la configuration Docker Compose avec le nouveau référentiel, tout en préservant l'intégrité des données utilisateur stockées dans l'Espace Personnel.
Orchestration Interne (VM)
sync-echo.sh
Une fois la VM démarrée, ce script extrait l'archive echo-update.zip depuis le point de montage du disque Seed. Il distribue les fichiers dans l'arborescence de production (/opt/ECHO) et rétablit les permissions d'exécution (chmod +x) sur l'ensemble des scripts de la grappe.
install-stack.sh
Il s'agit de l'ordonnanceur principal de la grappe Docker. Ses responsabilités incluent :
- Autosafety Docker : Configuration idempotente (via
jq) de la politique de rotation des logs globaux (max-size: 50m,max-file: 3) dans/etc/docker/daemon.jsonpour garantir la stabilité de l'hôte. - Génération du contexte : Calcul dynamique des
ECHO_DETECTED_ORIGINS(CORS) à partir des interfaces réseau actives (Wi-Fi, Ethernet, Tailscale). - Injection des secrets : Génération automatique (si absents) de
BW_DB_PASSWORD,SEARXNG_SECRET, etECHO_SSO_SECRET, et consolidation dans le fichier/opt/ECHO/.envde production. - Lancement de la pile : Exécution conditionnelle avec
bunkerweb-stack.yml(si mode SECURE EDGE actif) oustack-echo.ymlstandard.
config-owui.sh
Ce script intervient dans la phase de post-démarrage (Post-Start Provisioning). Il interagit directement avec l'API REST d'Open WebUI pour :
- Importer les configurations : Pousse le fichier
webui-settings.jsonvia l'endpoint/api/v1/configs/import, configurant dynamiquement le modèle par défaut (pipe_engine) et les endpoints TTS/STT. - Déléguer l'authentification : Désactive l'authentification native de WebUI pour imposer le flux OAuth2 géré par l'infrastructure Antigravity.
- Injecter l'Arsenal : Charge les outils (Tools), filtres (Filters) et actions (Actions) dans l'écosystème Open WebUI, les rendant immédiatement accessibles au Modèle.