docs: update runbook for Hermes Hub deployment with exact code blocks

This commit is contained in:
2026-08-19 19:47:58 +00:00
parent bc1467b060
commit 12366c881d
+31 -13
View File
@@ -10,10 +10,10 @@
## Problème
Nabil dispose de 4 instances Hermes strictement cloisonnées :
- **TT** (, port 3010, NAS Synology) — Achats Zone Sud, Tunisie Telecom
- **Nyora** (, port 3020, NAS Synology) — Venture perso, Dr Nexum
- **Perso** (, port 3031, NAS Synology) — Famille, personnel, santé
- **Nabil** (, local loopback, VPS Contabo) — Master agent & DSH
- **TT** (`hermes-tt`, port 3010, NAS Synology) — Achats Zone Sud, Tunisie Telecom
- **Nyora** (`hermes-nyora`, port 3020, NAS Synology) — Venture perso, Dr Nexum
- **Perso** (`hermes-perso`, port 3031, NAS Synology) — Famille, personnel, santé
- **Nabil** (`hermes-nabil`, local loopback, VPS Contabo) — Master agent & DSH
L'objectif est d'offrir une interface web unifiée sur le VPS Contabo avec un sélecteur d'univers (workspace switcher), tout en garantissant :
1. L'absence totale de fuite de contexte ou de mémoire JS entre univers.
@@ -24,11 +24,11 @@ L'objectif est d'offrir une interface web unifiée sur le VPS Contabo avec un s
## Contexte et contraintes
- **Réseau** : Communication exclusive via le maillage **Tailscale** ( NAS ↔ VPS).
- **Réseau** : Communication exclusive via le maillage **Tailscale** (`100.86.197.88` NAS ↔ `100.94.90.119` VPS).
- **Port Hermes Perso** : Port **3031** fixé définitivement (port 3030 orphelin sur l'hôte NAS).
- **Sécurité** : Authentification **Cloudflare Access** en amont du Cloudflare Tunnel sur le VPS.
- **UID/GID** : Conteneurs exécutés sous .
- **Frontend** : Dark Mode par défaut, palette et typographie basées sur des CSS custom properties () facilement substituables par Claude Design.
- **UID/GID** : Conteneurs exécutés sous `1026:100`.
- **Frontend** : Dark Mode par défaut, palette et typographie basées sur des CSS custom properties (`tokens.css`) facilement substituables par Claude Design.
---
@@ -46,25 +46,43 @@ L'objectif est d'offrir une interface web unifiée sur le VPS Contabo avec un s
## Solution validée
### 1. Dépôt & Code source
- Dépôt Gitea :
- Architecture : FastAPI + Async Proxy Streaming () + Dynamic Tokens Engine.
- Dépôt Gitea : `http://192.168.100.33:3232/bolbol/hermes-hub.git`
- Architecture : FastAPI + Async Proxy Streaming (`httpx`) + Dynamic Tokens Engine.
### 2. Déploiement sur VPS Contabo ()
### 2. Déploiement sur VPS Contabo (`100.94.90.119`)
```bash
# 1. Cloner le dépôt
git clone http://bolbol:PASSWORD@100.86.197.88:3232/bolbol/hermes-hub.git ~/hermes-hub
cd ~/hermes-hub
# 2. Configurer l'environnement
cp .env.example .env
# 3. Lancer le conteneur
docker compose up -d --build
```
### 3. Routage Cloudflare Tunnel & Access
- Ingress Cloudflare Tunnel :
- Ingress Cloudflare Tunnel : `hub.yesminedor.tn -> http://127.0.0.1:8080`
- Application Cloudflare Access configurée avec politique OTP / Email autorisée.
---
## Vérification
```bash
# 1. Vérification santé Hub
curl -fsS http://localhost:8080/api/health
# Résultat attendu : {"status":"healthy","universes_configured":4}
# 2. Vérification connectivité multi-univers
curl -fsS http://localhost:8080/api/universes
# Résultat attendu : Statut 'online' sur tt, nyora, perso et nabil
```
---
## Pièges spécifiques
- **DNS Docker sur VPS Contabo** : Toujours inclure dans le compose car le local n'est pas résolu depuis les ponts Docker.
- **Purge mémoire front-end** : La fonction dans force systématiquement le déchargement de l'iframe () avant de monter le nouvel univers pour interdire toute fuite d'état JS.
- **DNS Docker sur VPS Contabo** : Toujours inclure `dns: [1.1.1.1, 8.8.8.8]` dans le compose car le `10.100.0.1` local n'est pas résolu depuis les ponts Docker.
- **Purge mémoire front-end** : La fonction `switchUniverse()` dans `hub.js` force systématiquement le déchargement de l'iframe (`about:blank`) avant de monter le nouvel univers pour interdire toute fuite d'état JS.