15. Déploiement & Infra

ECHO est conçu pour transformer une machine standard en un serveur d'intelligence souveraine. Le scénario nominal consiste à utiliser un poste Windows 11 Pro comme hôte matériel, exécutant une Machine Virtuelle Ubuntu 24.04 isolée via Hyper-V. La totalité de la pile Docker ECHO s'exécute dans cette VM, garantissant une étanchéité totale entre les outils quotidiens de l'utilisateur et son infrastructure IA personnelle.

💡 Trois voies d'installation

ECHO supporte trois méthodes de déploiement selon le contexte : Hyper-V (production souveraine, isolation maximale), Linux natif (serveur dédié) et WSL2 (développement ou test unitaire sur Windows). Toutes convergent vers la même pile Docker et le même état final.

Voie A - Hyper-V (Production Souveraine)

Le scénario Hyper-V est le plus abouti. Il utilise le script PowerShell install-hyperv.ps1 exécuté depuis le poste Windows, lequel orchestre la création et le provisioning automatique d'une VM Ubuntu fraîche via le mécanisme cloud-init.

Phase 1 - Assemblage et injection (hôte Windows)

Le script d'installation rassemble les sources locales et provisionne de manière transparente la machine virtuelle. Il prépare les fondations en allouant les ressources matérielles nécessaires au bon fonctionnement de l'intelligence artificielle, sans exiger de paramétrage complexe.

Phase 2 - Provisioning automatisé (VM Linux)

Au premier démarrage, le système s'installe de lui-même de manière silencieuse. Il déploie l'ensemble des prérequis logiciels nécessaires au fonctionnement du serveur de manière autonome, assurant un système opérationnel et sécurisé.

Phase 3 - Synchronisation des sources

L'outil de synchronisation distribue les fichiers sources vers leur emplacement définitif au sein de la machine virtuelle Linux.

Phase 4 - Orchestration Docker

L'orchestrateur de déploiement assure le démarrage séquentiel de toute la pile applicative ECHO, configurant au passage les variables d'environnement globales et connectant Open WebUI au moteur d'IA.

Voie B - Linux Natif (Serveur Dédié)

Installation Linux natif - branche main
curl -fsSL https://raw.githubusercontent.com/Wilfried-Barnavon-Perso/echo-framework/main/install-linux.sh | sudo bash

# Ou sur une branche spécifique :
sudo bash <(curl -fsSL https://raw.githubusercontent.com/Wilfried-Barnavon-Perso/echo-framework/main/install-linux.sh) --branch dev

install-linux.sh est idempotent : si ECHO est déjà installé, une seconde exécution effectue une mise à jour propre. Il installe Docker, Docker Compose v2, jq, yq, git, chrony, puis clone le dépôt dans /opt/ECHO/source et enchaîne sync-echo.sh et install-stack.sh.

Voie C - WSL2 (Développement)

Installation WSL2 - depuis un terminal Ubuntu WSL2
curl -fsSL https://raw.githubusercontent.com/Wilfried-Barnavon-Perso/echo-framework/main/install-wsl2.sh | sudo bash

Spécificités gérées par install-wsl2.sh :

Activer systemd dans WSL2

Ajouter dans /etc/wsl.conf :

[boot]
systemd=true

Puis exécuter wsl --shutdown depuis PowerShell et relancer la distribution. Docker démarrera alors automatiquement à chaque ouverture de WSL2.

Comparatif des trois méthodes

Critère Hyper-V Linux Natif WSL2
IsolationMaximale (VM dédiée)OS dédiéPartielle (noyau partagé)
PrérequisWindows 11 Pro + Hyper-V + 8 Go RAMUbuntu 22.04+ / Debian 12+WSL2 activé sur Windows 10/11
Complexité de démarrageÉlevée (VM + cloud-init)FaibleFaible
IdempotentNon (VM recréée)OuiOui
Accès depuis WindowsVia IP statique de la VMNon directlocalhost natif
Usage recommandéProduction souveraineServeur dédiéDéveloppement / test unitaire

Cycle de vie et maintenance

Une fois déployée, l'infrastructure ECHO se gère via des commandes globales disponibles partout dans le shell Linux :

CommandeActionImpact
update-echo Mise à jour du code Python uniquement. Redémarrage « hot reload » des micro-services. Données préservées.
upgrade-echo Mise à niveau majeure de l'infrastructure. Re-synchronisation complète + rebuild des images Docker locales.
rebuild-echo Réinitialisation intégrale (destructrice). Suppression de tous les conteneurs, volumes, images et secrets. Remise à zéro totale - données perdues.
clean-echo Maintenance et purge de sécurité Docker. Nettoyage des images orphelines, du cache de build et des logs sans perte de données.
logs-echo / ps-echo Diagnostic et supervision en ligne de commande. Suivi en temps réel des journaux et de l'état des conteneurs de la pile.
show-echo-admin Affiche les identifiants administrateur. Lecture seule depuis /opt/ECHO/.secrets.

Quickstart depuis sources locales

Déploiement automatisé depuis un clone local du dépôt
# Depuis la racine du dépôt git ECHO cloné localement :
sudo bash 00-echo-scripts/sync-echo.sh --local-only
sudo bash 00-echo-scripts/install-stack.sh

# Interface disponible sur http://localhost:3000
⚙️ Dossier d'Ingénierie & Spécifications

1. Configuration Hyper-V & Provisioning (install-hyperv.ps1 v5.210.0)

Lors du déploiement Windows, install-hyperv.ps1 crée une archive ZIP pointant par défaut sur la branche dev du projet (hors .git, .venv, node_modules), génère un disque CIDATA de 64 Mo contenant user-data, meta-data, vendor-data et source.zip, puis provisionne une VM Hyper-V Génération 2 sous Ubuntu 24.04 (4 vCPUs, 8 Go de RAM au démarrage avec allocation dynamique 4 Go – 10 Go, et VHDX dynamique de 100 Go). Au premier démarrage, Subiquity exécute cloud-init, installe Docker Compose v2, jq, yq, git et lance sync-echo.sh puis install-stack.sh.

2. Cartographie Déclarative des Sources (sync-echo.sh v4.11)

Source (dépôt git)Destination sur la VMContenu
00-echo-scripts//opt/ECHO/echo-scripts/Scripts Bash d'administration et liens /usr/local/bin/
01-config//opt/ECHO/config/Manifestes Compose, Kernel statique, webui-settings.json, webui-banners.json, logging.json
_assets/images//opt/ECHO/echo-images/Ressources graphiques et avatars des modèles ECHO
docker-python-base//opt/ECHO/docker-python-base/Image mutualisée echo-python-base:latest
10-owui-pipes//opt/ECHO/owui-pipes/Orchestrateur Cognitif Python (echo_orchestrator.py, Cortex)
11-owui-filters//opt/ECHO/owui-filters/Filtres Inlet & Outlet
12-owui-tools//opt/ECHO/owui-tools/Outils de l'Arsenal
13-owui-actions//opt/ECHO/owui-actions/Actions interactives HUD
14-owui-libs//opt/ECHO/owui-libs/ et /app/backend/echo_libs/Librairies centrales partagées
20-docker-admin-manager//opt/ECHO/docker-admin-manager/Console Admin Manager (Port 3001)
21-docker-coding-worker//opt/ECHO/docker-coding-worker/Sandbox Code Python 3.14 / Node 22 (Port 5000)
22-docker-browser-worker//opt/ECHO/docker-browser-worker/Browser Worker Playwright (Port 5002)
23-docker-mcp-broker//opt/ECHO/docker-mcp-broker/MCP Broker Proxy HTTP (Port 8000)
24-docker-echo-auth-manager//opt/ECHO/docker-echo-auth-manager/ECHO Auth Manager IdP SSO & MFA (Port 8000)
25-docker-download-broker//opt/ECHO/docker-download-broker/Download Broker Daemon
26-docker-n8n-worker//opt/ECHO/docker-n8n-worker/Headless N8N Worker (Port 5003)
30-docker-embedding-worker//opt/ECHO/docker-embedding-worker/Embedding Worker Harrier-OSS (Port 7997)

Le script applique un nettoyage conditionnel sed des caractères CRLF/BOM uniquement sur les fichiers impactés afin de préserver les horodatages (mtime) et le cache Docker BuildKit.

3. Séquençage Docker & Autosafety (stack-echo.yml v9.83 & install-stack.sh v6.33)

  • Tier 1 (Fondations) : Qdrant (v1.19.1, IP .103), SearXNG (.101), Watchtower (.102).
  • Tier 2 (Workers) : Embedding (.30), Coding Worker (.21 sur echo-sandbox), Browser Worker (.22), MCP Broker (.23, volume persistant echo-mcp-cache), Download Broker (.25), N8N Worker (.26).
  • Tier 3 (Cortex) : Open WebUI (main-slim, IP .100, ENABLE_CONTEXT_COMPACTION=false neutralisant la compaction native d'Open WebUI au profit du moteur ECHO, label bunkerweb.MAX_CLIENT_SIZE=4096m, cache persistant PIP_CACHE_DIR=/app/backend/data/.cache/pip, mgzip, dulwich, markitdown[all], h2, pybase64, edge-tts).
  • Tier 4 (Gouvernance) : Admin Manager (.20, montages Hot-Reload en lecture seule :ro de server.py, core/, services/, routes/, templates/ et accès aux 5 volumes de données dont echo-n8n-data et echo-mcp-cache) et ECHO Auth Manager (.24).

install-stack.sh configure l'Autosafety Docker (logs max 10 Mo, cron quotidien /etc/cron.daily/clean-echo), compile l'image socle echo-python-base:latest avec CMAKE_BUILD_PARALLEL_LEVEL=2 et un throttle de 30 jours (.last_base_pull), puis exécute config-owui.sh (v7.69) qui synchronise webui-settings.json et webui-banners.json, purge les modèles fantômes obsolètes en base SQLite et enregistre l'Orchestrateur Cognitif echo_orchestrator ainsi que les filtres, outils et actions HUD. Les conteneurs labellisés echo.hot-reload=true sont rechargés à chaud par update-echo, tandis que rebuild-echo (upgrade-echo.sh v2.8) exige une double saisie de sécurité (CONFIRMER puis DETRUIRE).

← 14. Agents & Automatisation    16. Périphériques & Infra →