Architecture Technique
🧭 Architecture Technique
Section titled “🧭 Architecture Technique”1. Vue d’Ensemble de l’Architecture
Section titled “1. Vue d’Ensemble de l’Architecture”Berth utilise une architecture distribuée où chaque client possède sa propre stack isolée.
Points clés
Section titled “Points clés”- Chaque client déploie une stack complète : API + Front + DB + Agents sur ses propres VMs
- Connexions toujours initiées par l’agent (sortantes, port 443/grpc) — aucun port entrant à ouvrir sur le pare-feu du client
- Isolement total : aucune donnée ne transite entre les instances Berth des différents clients
- L’API est une “passerelle de contrôle” : elle ne fait elle-même PAS de requêtes sortantes vers l’extérieur hormis les pulls d’images Docker
2. Composant Agent (Go) 🏃
Section titled “2. Composant Agent (Go) 🏃”2.1 Rôle
Section titled “2.1 Rôle”L’Agent est un binaire natif Go déployé sur chaque hôte/VM du parc client. Il communique directement avec le socket Docker local (/var/run/docker.sock) et relaie les informations vers l’API via un canal gRPC bidirectionnel toujours initié par lui-même.
2.2 Stack technique
Section titled “2.2 Stack technique”- Langage : Go 1.22+
- SDK Docker :
github.com/docker/docker/client - gRPC :
google.golang.org/grpc - TLS :
crypto/tlsavec validation de certificat côté agent
3. Composant API (Go/Gin) ⚙️
Section titled “3. Composant API (Go/Gin) ⚙️”3.1 Rôle
Section titled “3.1 Rôle”L’API est le coeur nerveux de Berth. Elle centralise toutes les communications, gère la persistance des données, et expose les serveurs gRPC (pour les agents) et REST/WebSocket (pour le front).
3.2 Stack technique
Section titled “3.2 Stack technique”| Composant | Choix |
|---|---|
| Framework HTTP | Gin |
| gRPC | google.golang.org/grpc |
| ORM | GORM |
| DB | PostgreSQL 18 |
| WebSocket | Gorilla WebSocket |
| Auth JWT | github.com/golang-jwt/jwt/v5 |
4. Composant Front (Angular 22) 🖥️
Section titled “4. Composant Front (Angular 22) 🖥️”4.1 Rôle
Section titled “4.1 Rôle”Le front-end est l’interface web à travers laquelle l’utilisateur interagit avec Berth. Déployé via Docker, il communique avec l’API via REST et WebSocket.
4.2 Stack technique
Section titled “4.2 Stack technique”| Composant | Choix |
|---|---|
| Framework | Angular 22 |
| State management | Signals Store |
| UI Framework | Tailwind CSS 4 |
5. Sécurité 🔒
Section titled “5. Sécurité 🔒”5.1 mTLS Agents ↔ API
Section titled “5.1 mTLS Agents ↔ API”Berth utilise une authentification mutuelle TLS (mTLS) pour sécuriser les échanges entre les agents et l’API centrale. L’API génère sa propre autorité de certification (CA) interne au premier démarrage.
5.2 Authentification Utilisateurs
Section titled “5.2 Authentification Utilisateurs”L’accès à l’interface web est sécurisé par des jetons JWT avec des rôles admin, maintainer et viewer.
6. Déploiement 🚀
Section titled “6. Déploiement 🚀”Berth est conçu pour être déployé simplement via Docker Compose. Une fois la stack centrale (API, Front, DB) lancée, les agents peuvent être installés sur les VMs cibles via un script one-liner.
