1. Déploiement & Infrastructure
Le déploiement d'ECHO repose sur une philosophie de "Souveraineté par l'Injection". Contrairement aux installations classiques nécessitant un accès internet permanent ou des configurations manuelles fastidieuses, ECHO utilise un pipeline d'automatisation hybride qui transforme le code source en une infrastructure vivante en quelques minutes.
Le Cycle de Vie des 5 Phases
Phase 1 : L'Assemblage & L'Injection (Windows Host)
Tout commence sur le poste de développement via le script deploy-hyperv.ps1. Ce script joue le rôle d'Assembleur.
- Packaging Intelligent : Le script scanne le répertoire du projet et crée une archive ZIP temporaire en excluant les dossiers lourds (
.git,node_modules,.venv). - Encodage Base64 : L'archive est convertie en chaîne Base64 pour être injectée directement dans le YAML de configuration
cloud-init. - Génération du CIDATA : ECHO crée dynamiquement un disque dur virtuel (VHD) de 100 Mo contenant les fichiers
user-dataetmeta-data. Ce disque "Seed" permet de transmettre la configuration et le code à la VM sans réseau. - Provisioning Hyper-V : Crée une VM de Génération 2, désactive le Secure Boot (requis pour l'auto-install Ubuntu) et attache l'ISO d'installation ainsi que le disque Seed.
Phase 2 : Le Provisioning Automatisé (Linux VM)
Dès le premier boot, l'installateur Ubuntu (Subiquity) détecte le disque CIDATA et exécute les instructions cloud-init.
- Installation du Socle : Déploiement automatique de Docker, Docker Compose,
jq,yq,gitetunzip. - Extraction Chirurgicale : L'archive ZIP injectée est décodée et extraite dans
/opt/echo-framework-source. - Amorçage (Bootstrap) : Le système lance immédiatement
sync-echo.sh --local-onlypour finaliser la structure interne.
Phase 3 : La Synchronisation des Sources (sync-echo)
Le script sync-echo.sh est le Distributeur du framework. Il garantit l'intégrité du code sur le système de fichiers Linux.
- Mode Local vs Git : En déploiement initial, il utilise la source injectée. En maintenance, il peut se synchroniser directement avec GitHub (via
git reset --hardpour écraser toute dérive locale). - Cartographie des Cibles :
/opt/echo-scripts: Scripts de contrôle (SH)./opt/config: Fichiers YAML et JSON de configuration./opt/owui-tools/libs/filters/pipes: Logique métier injectée dans Open WebUI./opt/docker-*: Code source des micro-services (Admin Manager, Worker, Browser).
- Normalisation (Sanitization) : Conversion forcée des caractères Windows (CRLF) en Linux (LF) et suppression des BOM UTF-8 pour éviter les erreurs d'exécution silencieuses des scripts Python.
- Universalité : Crée des liens symboliques dans
/usr/local/bin/pour que toutes les commandes ECHO soient accessibles globalement (ex:update-echoau lieu de/opt/echo-scripts/update-echo.sh).
Phase 4 : L'Orchestration & L'Éveil (`install-stack`)
Le script install-stack.sh est le Chef d'Orchestre de Docker Compose, suivi de l'éveil applicatif via config-owui.sh.
- Analyse Dynamique : Le script parse
stack-echo.ymlpour identifier les réseaux et volumes marquésexternal: trueet les crée automatiquement. - CORS IP-Driven : Calcule dynamiquement
ECHO_DETECTED_ORIGINSpour autoriser les communications Cross-Origin locales. - Hard Clean : Purge préventive (
docker rm -f) pour une reconstruction sans résidus. - Bootstrapping de l'Intelligence (`config-owui.sh`) : Une fois les conteneurs levés, ce script prend le relais pour :
- Génération des Secrets : Création automatique d'un compte service interne et du compte administrateur humain (secrets stockés dans
/opt/.owui-secrets). - Auto-Upsert de l'Arsenal : Scan récursif des dossiers
/opt/owui-[tools|filters|pipes|actions]et injection automatique dans la base de données d'Open WebUI via son API. - Alignement du Modèle : Injection du
system-prompt.md, configuration des IDs d'outils par défaut et chargement de l'avatar de la marque ECHO.
- Génération des Secrets : Création automatique d'un compte service interne et du compte administrateur humain (secrets stockés dans
Phase 5 : Cycle de Vie & Maintenance
Une fois déployée, la Citadelle ECHO se gère via trois commandes souveraines et permet un basculement dynamique de sa posture de sécurité :
- Gestion de la Posture de Sécurité :
enable-bunkerweb: Active le WAF, génère les certificats SSL et route le trafic via HTTPS sur vos sous-domaines personnalisés.disable-bunkerweb: Désactive la couche de sécurité, archive la configuration et repasse en mode accès direct HTTP (Local Only).
| Commande | Action | Impact |
|---|---|---|
update-echo |
Mise à jour rapide du code uniquement. | Redémarrage "Hot Reload" des micro-services Python sans couper l'interface utilisateur. |
upgrade-echo |
Mise à niveau majeure. | Re-synchronisation complète, rebuild des images Docker et recréation de la stack. |
rebuild-echo |
Option Nucléaire. | Suppression de TOUS les conteneurs, volumes, images et secrets. Remise à zéro totale (Factory Reset). |
Réseau & Sécurité : Le Bouclier BunkerWeb
Pour l'exposition publique, ECHO intègre BunkerWeb (Secure Edge). L'activation via enable-bunkerweb transforme l'infrastructure locale en une plateforme sécurisée :
- Automated HTTPS : Gestion automatique des certificats Let's Encrypt via DNS ou HTTP challenge.
- Routing Souverain :
ui.votre-domaine.com(IA) etam.votre-domaine.com(Admin). - Hardening WAF : Protection native contre les injections, le brute-force et les scans de vulnérabilités.
rebuild-echo, utilisez la commande show-echo-admin pour afficher (et masquer automatiquement) les identifiants générés pour l'interface d'administration.