Files
LoreMind/demo/README.md

3.2 KiB

Demo publique LoreMind

Instance de demo ephemere hebergee sur loremind-demo.igmlcreation.fr.

Principe

Chaque visiteur recoit un trio isole postgres + core + brain spawne a la volee par un orchestrateur Go, detruit au bout de 20 min. Donnees en memoire (tmpfs). Max 10 sessions concurrentes.

Le mode demo est active via DEMO_MODE=true cote core :

  • Settings et Export VTT masques cote frontend
  • Endpoints GET/PUT /api/settings verrouilles (403) cote serveur

Architecture

Internet
   |
   v
Traefik (service permanent sur le serveur, reseau "traefik")
   |
   v
Orchestrateur (Go, reseau "traefik" + "loremind-demo-sessions")
   |
   v  (via Docker API, cree un trio par visiteur)
+------------------- reseau "loremind-demo-sessions" ---------------------+
|   demo-<id>-postgres   demo-<id>-core   demo-<id>-brain                 |
+-------------------------------------------------------------------------+

L'orchestrateur fait aussi reverse proxy : il sert l'Angular statique et transfere les /api/* vers le core de la session (via cookie).

Deploiement

Prerequis sur le serveur :

  • Reseau Traefik existant (docker network ls | grep traefik)
  • Images core et brain pushees au registre (TAG=latest par defaut)

Procedure :

# Sur le serveur
git clone <repo>
cd LoreMind/demo
cp .env.example .env
# Editer .env si besoin
docker compose -f docker-compose.infra.yml up -d --build

Le premier --build compile l'orchestrateur + build l'Angular (5-10 min). Les builds suivants sont incrementaux.

Mise a jour

# Pull des nouvelles images core/brain
docker compose -f docker-compose.infra.yml pull
# Rebuild orchestrateur si son code a change
docker compose -f docker-compose.infra.yml up -d --build

Les sessions en cours sont tuees au redemarrage de l'orchestrateur.

Observations

  • docker logs loremind-demo-orchestrator -f
  • docker ps --filter "name=demo-" (conteneurs de sessions actifs)

Pas d'endpoint de monitoring HTTP expose : volontaire pour eviter de leaker des informations sur les sessions actives a des scrapers externes.

Securite — points mis en place

  • dockerproxy (tecnativa/docker-socket-proxy) expose l'API Docker en lecture seule sauf pour Containers/Images/Networks ; pas d'EXEC, VOLUMES, BUILD.
  • Rate limiting : 1 creation de session par IP / fenetre de 60s.
  • Cookie session : HttpOnly + Secure + SameSite=Lax, 128 bits d'entropie.
  • Conteneurs de session : no-new-privileges, PidsLimit=200, limites RAM/CPU.
  • Timeouts HTTP anti-slowloris sur l'orchestrateur.
  • Body max 10 Mo sur les proxys /api/*.
  • Reseau socket-proxy interne (pas d'acces au host reseau).

Securite — a surveiller / ameliorer plus tard

  • Fail2ban cote host avec regle sur les 429/503 de Traefik.
  • Rotation des logs Docker (log-opts: max-size: 10m dans /etc/docker/daemon.json).
  • CapDrop sur les conteneurs de session (non configure : risque de casser core/brain sans audit prealable).
  • Ne JAMAIS mettre de vraie cle API LLM dans l'environnement des brain de demo.

Desactiver la demo

docker compose -f docker-compose.infra.yml down
# Nettoyer les conteneurs de session residuels
docker ps -q --filter "name=demo-" | xargs -r docker rm -f