Skip to content

Migration vers Docker - Vue d'ensemble

Ce document décrit l'architecture cible pour industrialiser la solution Essensys sur Raspberry Pi en utilisant Docker comme runtime de containers et un Control Plane centralisé pour la gestion des versions, des mises à jour et du monitoring.

Pourquoi migrer ?

Problème actuel Solution Docker
Compilation Go/Node sur le Pi (lent, fragile) Images pré-compilées en CI, le Pi ne fait que docker pull
Versions hard-codées dans install.sh et Ansible Registry d'images tagguées, versions déclaratives dans docker-compose.yml
Pas de rollback facile Rollback = changer le tag image et docker compose up -d
Dépendances système manuelles (Go, Node, Python) Tout est embarqué dans les images, le Pi n'a besoin que de Docker
Pas de visibilité centralisée Control Plane avec dashboard pour statut, versions, logs
MCP couplé au backend MCP devient un service autonome avec son propre cycle de vie

Architecture cible

graph TB
    subgraph Internet
        BrowserWAN[Navigateur WAN<br/>essensys.acme.com]
    end

    subgraph Raspberry Pi - Docker Host
        subgraph Essensys Core
            Backend[essensys-backend<br/>:7070 API Go]
            MCP[essensys-mcp<br/>:8083 SSE + JSON-RPC]
            Frontend[essensys-frontend<br/>Fichiers statiques]
            Redis[(redis<br/>:6379)]
        end

        subgraph Réseau & Accès
            Traefik[traefik<br/>:443 HTTPS WAN]
            Nginx[nginx<br/>:80 API locale<br/>:9090 Frontend]
            AdGuard[adguard<br/>:53 DNS]
        end

        subgraph IA & Automatisation
            OpenClaw[OpenClaw<br/>:3100 Agent IA]
            N8N[n8n<br/>:5678 Workflow Automation]
        end

        subgraph Observabilité
            Prometheus[prometheus<br/>:9090 Métriques + Alertes]
            ControlPlane[control-plane<br/>:9100 API + UI]
        end

        subgraph IoT
            Mosquitto[mosquitto<br/>:1883 MQTT]
            Monitor[monitor<br/>:5000 Debug MQTT]
        end
    end

    subgraph LAN
        Client[Client Essensys Legacy<br/>192.168.1.151]
        BrowserLocal[Navigateur Local<br/>mon.essensys.fr]
        AdminUI[Admin<br/>cp.essensys.local]
    end

    Client -->|DNS| AdGuard
    BrowserLocal -->|DNS| AdGuard
    Client -->|/api/*| Nginx
    BrowserLocal -->|/| Nginx
    BrowserWAN -->|HTTPS| Traefik

    Nginx -->|proxy| Backend
    Nginx -->|static| Frontend
    Traefik -->|proxy| Nginx

    MCP -->|ordres| Redis
    Backend -->|file d'ordres| Redis

    OpenClaw -->|SSE + JSON-RPC| MCP
    N8N -->|SSE + JSON-RPC| MCP
    N8N -->|webhooks| OpenClaw

    Prometheus -->|scrape /metrics| Backend
    Prometheus -->|scrape /metrics| MCP
    Prometheus -->|scrape /metrics| ControlPlane
    Prometheus -->|alertmanager| N8N
    Prometheus -->|alertmanager| OpenClaw

    ControlPlane -->|health checks| Backend
    ControlPlane -->|health checks| MCP
    ControlPlane -->|query| Prometheus
    ControlPlane -->|Docker API| Traefik

    Monitor -->|MQTT sub| Mosquitto
    MCP -->|MQTT events| Mosquitto

    AdminUI -->|:9100| ControlPlane

    style MCP fill:#fff3e0,stroke:#e65100,stroke-width:3px
    style ControlPlane fill:#e8eaf6,stroke:#1a237e,stroke-width:3px
    style OpenClaw fill:#fce4ec,stroke:#c62828,stroke-width:3px
    style N8N fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px
    style Prometheus fill:#fff8e1,stroke:#f57f17,stroke-width:3px
    style Redis fill:#ffecb3
    style Backend fill:#f3e5f5
    style Frontend fill:#fff4e1
    style Nginx fill:#e8f5e9
    style Traefik fill:#e3f2fd
    style AdGuard fill:#dcedc8
    style Mosquitto fill:#f1f8e9
    style Monitor fill:#f1f8e9

Services Docker

Core Essensys

Service Image Port(s) Rôle
essensys-backend ghcr.io/essensys-hub/backend 7070 API Go, communication client legacy
essensys-mcp ghcr.io/essensys-hub/mcp 8083 Service central MCP (pilotage IA + diagnostic)
essensys-frontend ghcr.io/essensys-hub/frontend - Build React statique (servi par Nginx)

IA & Automatisation

Service Image Port(s) Rôle
openclaw ghcr.io/essensys-hub/openclaw 3100 Agent IA connecté au MCP pour le pilotage intelligent
n8n n8nio/n8n 5678 Workflow automation : scénarios user/IA, notifications, chaînes d'actions

Observabilité & Gestion

Service Image Port(s) Rôle
prometheus prom/prometheus 9090 Métriques + alertes : collecte, stockage, alertmanager → N8N + OpenClaw
control-plane ghcr.io/essensys-hub/control-plane 9100 Dashboard, gestion versions, logs, updates

Infrastructure

Service Image Port(s) Rôle
nginx nginx:alpine 80, 9090 Reverse proxy local (API + Frontend)
traefik traefik:v2.11 443 Reverse proxy WAN + HTTPS + Basic Auth
redis redis:7-alpine 6379 File d'ordres + cache
adguard adguard/adguardhome 53, 3000 DNS local + filtrage
mosquitto eclipse-mosquitto:2 1883 Broker MQTT
monitor ghcr.io/essensys-hub/monitor 5000 Debug MQTT (Flask + SocketIO)

Pages détaillées