Bedrud Documentation

Référence complète pour l’interface en ligne de commande bedrud.

Synopsis

# Style sous-commande
bedrud <command> [flags]
 
# Style drapeau
bedrud --livekit --config <path>
bedrud --run --config <path>

Commandes

run / server

Démarre le serveur de réunion Bedrud avec API, frontend web intégré et LiveKit intégré (si configuré).

bedrud run    [--config <path>]
bedrud server [--config <path>]
DrapeauPar défautDescription
--config$CONFIG_PATH env var → "config.yaml"Chemin vers le fichier de configuration YAML Bedrud

Comportement :

  • Charge la configuration depuis le chemin spécifié ou utilise les valeurs par défaut
  • Démarre LiveKit intégré si configuré en mode interne
  • Initialise la base de données SQLite/PostgreSQL et exécute les migrations
  • Crée le serveur HTTP Fiber avec toutes les routes API
  • Sert le frontend React intégré
  • Prend en charge ACME (Let’s Encrypt), TLS auto-signé, TLS manuel ou HTTP simple
  • Arrêt gracieux sur SIGTERM/SIGINT

Implémentation : server/internal/server/server.go


--livekit

Démarre uniquement le serveur média LiveKit intégré. Extrait le binaire depuis Go embed vers un répertoire temporaire.

bedrud --livekit --config <path>
DrapeauPar défautDescription
--config(requis)Chemin vers le fichier de configuration YAML LiveKit

Utilisé par : le service init livekit créé par bedrud install

Implémentation : server/internal/livekit/server.go


--run

Alias pour bedrud run avec le même comportement du drapeau --config. Utilisé par le service init bedrud.

bedrud --run --config <path>

install

Installe Bedrud sur un système Debian/Linux. Crée les services init (systemd, OpenRC ou SysV init — détection automatique), fichiers de configuration, répertoires et certificats TLS.

bedrud install [flags]
DrapeauPar défautDescription
--tlsfalseActiver HTTPS (identique à --self-signed)
--self-signedfalseGénérer un certificat TLS auto-signé
--no-tlsfalseDésactiver TLS entièrement (HTTP simple). Remplace --tls et --self-signed
--ipdétecté automatiquementRemplacer l’adresse IP du serveur détectée automatiquement
--domain""Nom de domaine pour Let’s Encrypt ou certificat auto-signé
--email""E-mail pour l’enregistrement Let’s Encrypt
--port"443" (TLS) / "8090" (HTTP)Remplacer le port d’écoute
--cert""Chemin vers un fichier de certificat PEM existant
--key""Chemin vers un fichier de clé privée PEM existant
--lk-port"7880"Remplacer le port API/WebSocket LiveKit
--lk-tcp-port"7881"Remplacer le port TCP RTC LiveKit
--lk-udp-port"7882"Remplacer le port UDP RTC LiveKit
--freshfalseSupprimer l’installation existante avant d’installer
--behind-proxyfalseServeur derrière CDN/reverse-proxy (Cloudflare, nginx)
--external-livekit""URL d’un serveur LiveKit entièrement externe (machine différente)
--livekit-domain""Domaine séparé pour le serveur LiveKit local (contourne le CDN)

Ce qu’il fait :

  1. Arrête et supprime l’installation précédente si --fresh
  2. Invite pour l’IP, domaine, e-mail, mode TLS (si non interactif et drapeaux non fournis)
  3. Crée les répertoires : /etc/bedrud, /var/lib/bedrud, /var/lib/bedrud/certs, /var/log/bedrud
  4. Copie le binaire vers /usr/local/bin/bedrud
  5. Génère la configuration du serveur Bedrud dans /etc/bedrud/config.yaml
  6. Génère la configuration du serveur média LiveKit dans /etc/bedrud/livekit.yaml
  7. Génère des certificats auto-signés dans /etc/bedrud/cert.pem + /etc/bedrud/key.pem (si TLS activé et pas de certificats personnalisés)
  8. Crée le service init LiveKit (sauf si utilisation de LiveKit externe)
  9. Crée le service init Bedrud
  10. Active et démarre les services via le système d’initialisation détecté
  11. Affiche les URL d’accès

Options TLS :

  • --domain + --email → ACME (Let’s Encrypt)
  • --self-signed ou --tls → certificat auto-signé
  • --cert + --key → certificats personnalisés
  • --no-tls → HTTP simple uniquement

Topologie LiveKit :

  • Par défaut (intégré) : LiveKit s’exécute localement, proxifié via Bedrud sur /livekit
  • --livekit-domain : LiveKit s’exécute localement mais les clients se connectent directement via son propre domaine
  • --external-livekit : Pas de LiveKit local ; connexion à un serveur distant

Implémentation : server/internal/install/linux.go

Documentation connexe : Guide d’installationGuide de déploiementLogique de déploiement backend


uninstall

Supprime Bedrud du système.

bedrud uninstall

Supprime :

  • Arrête et désactive les services sur tous les systèmes d’initialisation : bedrud, livekit
  • Supprime les fichiers de service pour systemd, OpenRC et SysV init
  • Supprime les binaires : /usr/local/bin/bedrud, /tmp/bedrud, /tmp/bedrud-livekit-server
  • Supprime les répertoires : /etc/bedrud, /var/lib/bedrud, /var/log/bedrud
  • Supprime l’utilisateur système : bedrud

Implémentation : server/internal/install/ (linux.go, init.go, sysv.go, openrc.go)

Documentation connexe : Guide d’installation - Désinstallation


user

Gère les utilisateurs dans la base de données Bedrud.

bedrud user [--config <path>] <subcommand> [flags]
Drapeau globalPar défautDescription
--config/etc/bedrud/config.yamlChemin vers le fichier de configuration Bedrud (pour localiser la base de données)

create

Crée un nouvel utilisateur avec authentification locale (mot de passe haché avec bcrypt).

bedrud user [--config <path>] create --email <email> --password <password> --name <name> [--admin]

Drapeaux requis :

  • --email : Adresse e-mail de l’utilisateur
  • --password : Mot de passe de l’utilisateur, haché avec bcrypt avant stockage
  • --name : Nom d’affichage de l’utilisateur

Drapeaux optionnels :

  • --admin : Créer l’utilisateur en tant que superadmin

Niveau d’accès : user par défaut. Utilisez --admin pour créer un superadmin en une commande.

delete

Supprime un utilisateur par adresse e-mail.

bedrud user [--config <path>] delete --email <email>

promote

Définit le rôle d’un utilisateur en remplaçant son tableau d’accès. Par défaut : superadmin.

bedrud user [--config <path>] promote --email <email> [--role <role>]
FlagDéfautDescription
--rolesuperadminRôle cible : superadmin, admin, moderator, user, guest

Exemples :

# Accorder superadmin (par défaut)
bedrud user promote --email admin@example.com
 
# Accorder admin
bedrud user promote --email admin@example.com --role admin
 
# Accorder moderator
bedrud user promote --email mod@example.com --role moderator

Chaque rôle correspond à un tableau d’accès spécifique :

  • superadmin['superadmin', 'user']
  • admin['admin', 'user']
  • moderator['moderator', 'user']
  • user['user']
  • guest['guest']

demote

Supprime un rôle spécifique d’un utilisateur. Par défaut : superadmin.

bedrud user [--config <path>] demote --email <email> [--role <role>]
FlagDéfautDescription
--rolesuperadminRôle à supprimer : superadmin, admin, moderator

Si l’utilisateur n’a plus de rôles après la suppression, l’accès user est ajouté automatiquement.

Implémentation : server/internal/usercli/usercli.go


cert

Gérer les certificats TLS. Pertinent uniquement lors de l’utilisation de certificats auto-signés (générés par bedrud install --self-signed).

bedrud cert [--config <path>] <subcommand>
Drapeau globalDéfautDescription
--config/etc/bedrud/config.yamlChemin vers le fichier de configuration
--algo""Algorithme de clé : ed25519, ecdsa256, rsa2048, rsa4096 (par défaut : détection depuis le certificat existant)

renew

Renouveler manuellement le certificat TLS auto-signé. Détecte l’algorithme de clé du certificat existant et régénère avec le même type (par défaut : Ed25519). Le nouveau certificat est valable 1825 jours (~5 ans).

bedrud cert renew [--config <path>]

Le serveur renouvelle également le certificat automatiquement chaque jour via son planificateur intégré lorsqu’il reste moins de 30 jours avant l’expiration. Cette commande est destinée au renouvellement manuel ou exceptionnel.

SANs : Dérivés de la configuration du serveur — domain (si défini), ainsi que localhost, 127.0.0.1 et ::1.

Implémentation : server/internal/utils/tls.go (RenewSelfSignedCert)

info

Afficher les métadonnées du certificat TLS sur stdout.

bedrud cert info [--config <path>]

Champs de sortie : subject, issuer, notBefore, notAfter, daysRemaining, status (valid/expiring/error), SANs.

Implémentation : server/internal/utils/tls.go (ValidateTLSCertPair)


help

Affiche le message d’utilisation avec toutes les commandes et drapeaux.

bedrud help

Déclenché également lorsqu’aucun argument n’est fourni. Affiche la sortie de printUsage().


Exemples

Démarrage de serveur de développement de base

# Exécuter avec config.yaml par défaut dans le répertoire courant
bedrud run
 
# Exécuter avec une configuration personnalisée
bedrud run --config /path/to/config.yaml
 
# Via variable d'environnement (fallback)
export CONFIG_PATH=/etc/bedrud/config.yaml
bedrud run

Installation interactive (invite pour les entrées)

bedrud install

Installation non interactive avec Let’s Encrypt

bedrud install --domain example.com --email admin@example.com

TLS auto-signé avec ports personnalisés

bedrud install --self-signed --port 8443 --lk-port 7880 --lk-tcp-port 7881 --lk-udp-port 7882

Derrière CDN avec domaine LiveKit séparé

bedrud install --domain bedrud.example.com --email admin@example.com --livekit-domain lk.example.com --behind-proxy

Réinstallation fraîche

bedrud install --fresh --domain example.com --email admin@example.com

Gestion des utilisateurs

# Créer le premier utilisateur administrateur (une seule commande)
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User" --admin
 
# Ou créer un utilisateur régulier, puis promouvoir
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User"
bedrud user [--config <path>] promote --email admin@example.com
 
# Créer un utilisateur régulier
bedrud user [--config <path>] create --email user@example.com --password pass456 --name "Regular User"
 
# Supprimer un utilisateur
bedrud user [--config <path>] delete --email user@example.com
 
# Retirer l'accès administrateur
bedrud user [--config <path>] demote --email admin@example.com

Documentation connexe