Architecture

Comment les requetes circulent de votre navigateur jusqu'a un bureau cloud dans l'architecture trois niveaux de Le Bureau.

4 min de lecture

Vue d'ensemble

Le Bureau repose sur une architecture a trois niveaux. Votre navigateur communique avec une couche frontend, qui delegue a un service API backend, qui orchestre des machines virtuelles sur une infrastructure bare-metal.

Les trois couches

Frontend (Next.js BFF)

Le frontend est une application Next.js qui sert le tableau de bord, la documentation et les pages marketing. Il agit egalement comme Backend-for-Frontend (BFF) -- il proxifie les requetes authentifiees vers le service API afin que les endpoints internes ne soient jamais exposes directement au navigateur.

Quand vous ouvrez Le Bureau dans votre navigateur, vous communiquez avec cette couche. Elle gere l'authentification OAuth, la gestion des sessions et le rendu de l'interface. Toute action touchant l'infrastructure -- creer un bureau, recuperer des metriques, telecharger des fichiers -- est transmise au service API.

Service API (Hono)

Le service API est une application Hono autonome qui porte toute la logique metier. Il gere :

  • Le cycle de vie des bureaux (creation, demarrage, arret, suppression)
  • L'orchestration des VM Proxmox (clonage, cloud-init, health checks)
  • Les operations de fichiers via SFTP
  • Les taches Mission Control et les flux d'activite
  • La facturation Stripe et la gestion des abonnements
  • L'authentification par cle API pour l'acces programmatique

Le service API est le seul composant qui communique directement avec Proxmox et les machines virtuelles. La surface d'attaque reste ainsi reduite et la frontiere de confiance claire.

Infrastructure (VM Proxmox)

Les bureaux tournent en tant que machines virtuelles completes sur des hyperviseurs Proxmox heberges sur des serveurs bare-metal dedies. Chaque bureau est un clone d'une image de reference -- un template Ubuntu 22.04 + XFCE pre-construit avec le framework d'agent IA pre-installe.

Les VM sont isolees les unes des autres au niveau de l'hyperviseur. Chacune dispose de son propre CPU, RAM, disque et interface reseau.

Flux d'une requete

Voici ce qui se passe quand vous creez un nouveau bureau :

  1. Navigateur -- vous cliquez sur "Nouveau Bureau" et remplissez le formulaire.
  2. Next.js BFF -- valide votre session et transmet la requete au service API.
  3. API Hono -- verifie votre plan d'abonnement, clone l'image de reference sur Proxmox, injecte votre configuration via cloud-init et demarre la VM.
  4. Proxmox -- cree la VM, la demarre et renvoie le statut a l'API.
  5. API -- interroge la VM jusqu'a ce qu'elle passe de "booting" a "running", puis marque le bureau comme pret.

L'ensemble du processus prend 30 a 60 secondes.

Connexions temps reel

Trois fonctionnalites utilisent des connexions WebSocket persistantes au lieu du HTTP standard :

  • Viewer VNC -- diffuse l'affichage du bureau dans votre navigateur en temps reel via le support WebSocket natif de KasmVNC.
  • Terminal -- fournit une session shell complete via xterm.js sur WebSocket.
  • Panneau chat -- se connecte a l'agent IA qui tourne dans la VM pour une conversation en direct.

Un proxy WebSocket se situe entre votre navigateur et les VM, authentifiant chaque connexion et routant le trafic vers la bonne machine virtuelle.

Provisionnement des VM avec cloud-init

Quand une nouvelle VM demarre pour la premiere fois, cloud-init execute un script de provisionnement qui :

  • Configure le compte utilisateur et les cles SSH
  • Injecte la configuration de votre fournisseur IA (cle API, selection du modele)
  • Configure le framework d'agent IA
  • Demarre les services en arriere-plan (serveur KasmVNC, serveur terminal, gateway de l'agent)
  • Active optionnellement la memoire persistante avec les embeddings

Chaque bureau part donc de la meme image de base mais recoit une configuration personnalisee au demarrage.

Decisions de conception

  • BYOK (Bring Your Own Key) -- Le Bureau ne stocke pas vos identifiants de fournisseur IA sur nos serveurs au-dela de l'injection initiale. Votre cle API va directement dans la VM.
  • Clonage d'image de reference -- plutot que d'installer des logiciels au demarrage, nous clonons un template pre-construit. Le provisionnement est rapide et reproductible.
  • VM isolees -- chaque bureau est une machine virtuelle complete, pas un conteneur. L'isolation est plus forte et l'environnement plus realiste pour les agents IA.
  • Pattern BFF -- le frontend Next.js proxifie les appels API, ce qui garde les URLs de services internes et les tokens d'authentification hors du client.