Introduction
Le backend Bedrud est une plateforme de réunion binaire unique écrite en Go 1.24+. Toutes les dépendances - serveur média, frontend web, serveur TURN - sont intégrées dans un seul exécutable.
Technologies Clés
- Framework Principal : Fiber v2 (Routeur sans allocation, API de type Express).
- Couche Base de Données : GORM avec support de SQLite (standard) et PostgreSQL (production).
- Moteur Média : LiveKit (Intégré comme binaire frère).
- Système d’Auth : Auth multicauche supportant JWT, OAuth2 (Google/GitHub/Twitter), et Passkeys FIDO2 sans mot de passe.
- Actifs Statiques Intégrés : Utilise le package
embedde Go 1.16+ pour regrouper le frontend React (actifs client pré-rendus SSR). - Déploiement : Installateur automatique intégré Debian/Ubuntu avec orchestration systemd et support ACME (Let’s Encrypt).
Pourquoi cette Architecture ?
Les plateformes WebRTC exécutent généralement des services séparés pour la signalisation, TURN, service web, et gestion de base de données. Bedrud consolide ces services dans un seul binaire en :
- Extrayant le binaire du serveur média au moment de l’exécution.
- Proxyant le trafic média via le port HTTP(S) principal.
- Automatisant la configuration au niveau de l’OS (SSL, systemd) via le binaire lui-même.
Architecture de Haut Niveau
Le backend suit une architecture en couches standard :
- Couche Serveur (
internal/server) : Configure l’application Fiber, les routes et les middlewares. - Couche Handler (
internal/handlers) : Gère les requêtes et réponses HTTP. - Couche Référentiel (
internal/repository) : Gère les requêtes de base de données en utilisant GORM. - Couche Modèle (
internal/models) : Définit les tables de base de données et les structures Go. - Couche Service/Logique : Intégrée dans les handlers et référentiels pour la simplicité, avec des packages spécialisés comme
internal/authetinternal/livekit.
Point d’Entrée Principal
L’application démarre dans server/cmd/bedrud/main.go. Elle a trois modes principaux :
run: Démarre le serveur de réunion complet.livekit: Démarre uniquement le serveur média intégré.install: Configure automatiquement le serveur sur les systèmes Debian/Ubuntu.
Sections de Documentation
- Structure du Code : Où tout est-il situé ?
- Base de Données & Modèles : Comment les données sont-elles stockées ?
- Authentification : Comment les utilisateurs se connectent-ils ?
- Handlers API : Comment les requêtes sont-elles traitées ?
- Intégration LiveKit : Comment le serveur vidéo fonctionne-t-il ?
- Connectivité WebRTC : Comment les clients établissent-ils des connexions média ? (STUN/ICE/TURN/SFU)
- Serveur TURN : Architecture, configuration et dépannage du relais TURN
- Installation & Déploiement : Comment l’installateur automatique fonctionne-t-il ?