Date: 16/02/2026 Status: TERMINE
Repo: gouroubleu/dashboard-33800 (monitoring/)
Commit: e811139
Pipeline: #1104 success
backend/src/collectors/ssh.ts — collectZfsDetail() :
zpool status (nom pool, state, RAID type, scan/scrub, disques avec erreurs R/W/cksum)zfs list (datasets avec used/avail/mountpoint)backend/src/collectors/alerts.ts — NOUVEAU :
backend/src/routes/infra.ts — Ajout /api/infra/zfs/detail (cache 120s)
backend/src/routes/alerts.ts — NOUVEAU /api/alerts (pas de cache, lit le cache existant)
backend/src/index.ts — Enregistrement alertsRoutes
GET /api/infra/zfs/detail → 2 pools (stock_36to: 5 disks, stock_8to: 3 disks)
GET /api/alerts → 2 alertes (gitlab error, container dead)
Repo: gouroubleu/dashboard-33800-frontend
Commit: 222686c
Pipeline: #1105 success
src/lib/types.ts — Types ZfsPoolDetail et Alertsrc/lib/api.ts — Methodes infraZfsDetail() et alerts()src/routes/raidz/index.tsx — Page RAIDZ :src/routes/alerts/index.tsx — Page Alerts :src/routes/layout.tsx — Navbar :GET /raidz/ → 200 OK
GET /alerts/ → 200 OK
Contexte: L'audit securite (commit 2f8786c du 15/02) a active l'auth Bearer sur ai-orchestrator. Les services appelant ai-orchestrator via le proxy connectors-api recevaient 401.
| Service | Appel direct/proxy | Auth avant fix | Action |
|---|---|---|---|
| dashboard-33800 backend | Direct | Bearer OK | Aucune |
| connectors-api (proxy) | Proxy | Instance sans api_key | Fix ci-dessous |
| needfinder | Direct | Bearer OK | Aucune |
| qwik-interface-generator | Direct | Bearer OK | Aucune |
| browser-connector | Direct | Aucune | Code modifie (non commite) |
| claude-memory | Direct | Aucune | Code modifie (non commite) |
Instance Supabase connectors.user_connectors :
be38d9cf-90c0-4836-be73-260cb9c51e5capi_key mis a jour avec la valeur de AI_ORCHESTRATOR_API_KEY depuis prod.envai-orchestrator a auth_type: 'api_key' avec header: Authorization, prefix: BearerAuthorization: Bearer <api_key> depuis l'instance| Service | Test sans auth | Resultat |
|---|---|---|
| web-search (SearXNG) | GET /search?q=test&format=json |
200 — pas d'auth |
| browser-connector | GET /health, GET /api/status |
200 — JWT passthrough deja en place |
| ai-orchestrator | GET /api/gpu |
401 — seul service bloque |
Contexte: connectors-api chiffre les passwords SSH avec AES-256-CBC (cle derivee via scrypt depuis SSH_ENCRYPTION_KEY). Le code avait un fallback hardcode default-key-change-in-production-32! utilise en prod car la cle n'etait pas dans prod.env.
Fix: Ajout de SSH_ENCRYPTION_KEY=default-key-change-in-production-32! dans /stock_8to/33800-stack/docker/secrets/prod.env
@SSH_ENCRYPTION_KEY dans conf.prod de connectors-apiFichier: connectors-api/src/services/ssh.ts lignes 105-124
Algo: AES-256-CBC, IV random 16 bytes, cle derivee via crypto.scryptSync(key, 'salt', 32)
Format stocke: <iv_hex>:<encrypted_hex> dans token_metadata.password_encrypted
src/services/ai.ts)AI_ORCHESTRATOR_API_KEY env varauthHeaders() helper (Content-Type + Bearer si cle presente)conf.prod.gouroubleu.yml: ajout AI_ORCHESTRATOR_API_KEY: @AI_ORCHESTRATOR_API_KEYsrc/config.py: ajout AI_ORCHESTRATOR_API_KEY env varsrc/embeddings.py: ajout _auth_headers() helper + Bearer sur POST /api/jobs et GET /api/toolsconf.prod.gouroubleu.yml: pas encore modifie (a faire)Ces changements sont necessaires car browser-connector et claude-memory appellent ai-orchestrator directement (pas via le proxy connectors-api). Sans le Bearer, leurs appels retournent 401.
| Fichier | Repo | Status |
|---|---|---|
backend/src/collectors/ssh.ts |
monitoring | Commite + pushe |
backend/src/collectors/alerts.ts |
monitoring | Commite + pushe |
backend/src/routes/infra.ts |
monitoring | Commite + pushe |
backend/src/routes/alerts.ts |
monitoring | Commite + pushe |
backend/src/index.ts |
monitoring | Commite + pushe |
src/routes/raidz/index.tsx |
dashboard-frontend | Commite + pushe |
src/routes/alerts/index.tsx |
dashboard-frontend | Commite + pushe |
src/lib/api.ts |
dashboard-frontend | Commite + pushe |
src/lib/types.ts |
dashboard-frontend | Commite + pushe |
src/routes/layout.tsx |
dashboard-frontend | Commite + pushe |
docker/secrets/prod.env |
33800-stack | Modifie (pas de CI/CD) |
src/services/ai.ts |
browser-connector | Modifie, non commite |
conf.prod.gouroubleu.yml |
browser-connector | Modifie, non commite |
src/config.py |
claude-memory | Modifie, non commite |
src/embeddings.py |
claude-memory | Modifie, non commite |