Skip to content
Étude de cas · Homelab Platform (projet interne) 2026

Un tableau de bord en temps réel pour un cloud IA privé.

Un tableau de bord live pour une plateforme IA privée à 15 conteneurs, usage Claude, pression GPU, plans de file, le tout sur un seul écran.

15

Conteneurs LXC monitorés

<200ms

Latence de mise à jour

Usage Claude · GPU · plans

Intégrations live

Contexte

Une plateforme IA privée à 15 conteneurs produit beaucoup de télémétrie, usage de l’abonnement Claude Code, pression GPU sur le conteneur d’inférence, profondeur de file sur les pipelines de contenu, statut de build sur les projets internes, dates d’expiration de certificats, accessibilité réseau sur les deux nœuds Proxmox. La majeure partie reste dans des logs journalctl que personne ne lit.

Le tableau de bord est ce qui s’ouvre en premier le matin. Il existe pour que la réponse à « est-ce que quelque chose est cassé ? » soit un coup d’œil au lieu d’une session SSH.

Brief

  • Une seule page, un seul écran, pas de scroll sur un moniteur 1080p.
  • Rafraîchissement de données sous 200 ms, rien d’async, rien en attente d’une API lente.
  • Tracking live de l’usage Claude Code (lu depuis le cache local du CLI).
  • Santé par conteneur (CPU, mémoire, dernier restart).
  • Plans de file projet (état actuel des pipelines sur FB-Media + ContentForge).
  • Auth, un seul utilisateur (moi), Basic Auth bcrypt était correct pour le modèle de menace.
  • Hébergé sur la plateforme elle-même, pas sur un SaaS, le tableau de bord ne peut pas dépendre de la chose qu’il monitore.

Architecture

Frontend Vite + React. Backend Fastify sur Node, SQLite pour le petit bout d’état (seuils d’alerte, avertissements en pause). PM2 garde le processus Node en vie au travers des reboots ; tourne dans CT 208 sur le nœud Proxmox de tier services.

La pièce la plus astucieuse est le sidecar Gaming PC. Les données d’usage Claude Code CLI vivent sur un host Windows WSL2 que les conteneurs LXC ne peuvent pas voir directement. Un petit sidecar Node (claude-sidecar service systemd, port 11436) sur le Gaming PC lit le cache local du CLI + sert un endpoint JSON sur le LAN. Le tableau de bord l’interroge toutes les 5 secondes.

Un portproxy Windows fait le pont entre le port LAN et l’adresse interne WSL2, le contournement a pris un après-midi à mettre en place mais signifie que le tableau de bord voit l’usage réel de Claude en temps réel, pas une devinette basée sur du log scraping.

Résultats

  • 15 conteneurs LXC monitorés sur deux nœuds Proxmox.
  • Rafraîchissement sous 200 ms pour les cartes live (usage Claude, GPU, profondeur de file).
  • Layout single-screen, tout visible en 1080p sans scroll.
  • Zéro downtime depuis le lancement, le tableau de bord a tourné à travers chaque cycle de reboot pour upgrade kernel.
  • Coût opérateur, le check-in du matin est passé de 5 minutes de pct list + nvidia-smi + journalctl à un coup d’œil de 10 secondes.

Captures

[FILL: remplacer par des captures du tableau de bord live, écran principal + carte usage Claude + carte pression GPU + carte plans de file. Anonymiser les hostnames de conteneurs si besoin.]

La suite

Deux éléments sur la liste de la prochaine itération :

  1. Pousser la logique du sidecar WSL2 dans un véritable compte de service sur le Gaming PC au lieu de la faire tourner sous le login développeur. La chaîne SSH qui accorde au tableau de bord l’accès en lecture au cache CLI est actuellement un point de défaillance unique si le login développeur expire.
  2. Règles d’alerte par conteneur, l’alerte actuelle est seuil-only (CPU > 90%, mémoire > 95%). Un petit moteur de règles (ex. Prometheus AlertManager-lite) me permettrait de tagger les alertes bruyantes comme en pause sans perdre le signal sous-jacent.

The tech

Technologies utilisées

  • Vite
  • React
  • Fastify
  • SQLite
  • PM2
  • Prometheus

Ce que je ferais autrement

Pousser la logique du sidecar WSL2 dans un véritable compte de service sur le nœud Proxmox au lieu de le faire tourner sous le login développeur, la chaîne SSH est un point de défaillance unique.

Vous voulez quelque chose de similaire pour votre équipe ?

Appel de découverte de 30 minutes. Aucun pitch deck. On parle de ce que vous voulez livrer, de ce qui bloque, et si je peux aider. Si oui, vous obtenez un devis fixe sous une semaine.