Bedrud Dokumentation

Vollständige Referenz für die bedrud-Befehlszeilenschnittstelle.

Übersicht

# Subcommand style
bedrud <command> [flags]
 
# Flag style
bedrud --livekit --config <path>
bedrud --run --config <path>

Befehle

run / server

Startet den Bedrud-Meeting-Server mit API, eingebettetem Web-Frontend und eingebettetem LiveKit (falls konfiguriert).

bedrud run    [--config <path>]
bedrud server [--config <path>]
FlagStandardBeschreibung
--config$CONFIG_PATH-Umgebungsvariable → "config.yaml"Pfad zur Bedrud-YAML-Konfigurationsdatei

Verhalten:

  • Lädt die Konfiguration aus dem angegebenen Pfad oder den Standardwerten
  • Startet den eingebetteten LiveKit, wenn für den internen Modus konfiguriert
  • Initialisiert die SQLite-/PostgreSQL-Datenbank und führt Migrationen durch
  • Erstellt einen Fiber-HTTP-Server mit allen API-Routen
  • Serviert das eingebettete React-Frontend
  • Unterstützt ACME (Let’s Encrypt), selbstsigniertes TLS, manuelles TLS oder Plain HTTP
  • Ordungsgemäßes Herunterfahren bei SIGTERM/SIGINT

Implementierung: server/internal/server/server.go


--livekit

Startet nur den eingebetteten LiveKit-Medienserver. Extrahiert die Binärdatei aus dem Go-Embed in ein temporäres Verzeichnis.

bedrud --livekit --config <path>
FlagStandardBeschreibung
--config(erforderlich)Pfad zur LiveKit-YAML-Konfigurationsdatei

Verwendet von: Init-Service livekit, erstellt von bedrud install

Implementierung: server/internal/livekit/server.go


--run

Alias für bedrud run mit gleichem --config-Flag-Verhalten. Verwendet von Init-Service bedrud.

bedrud --run --config <path>

install

Installiert Bedrud auf einem Debian/Linux-System. Erstellt Init-Services (systemd, OpenRC oder SysV init — automatisch erkannt), Konfigurationsdateien, Verzeichnisse und TLS-Zertifikate.

bedrud install [flags]
FlagStandardBeschreibung
--tlsfalseHTTPS aktivieren (entspricht --self-signed)
--self-signedfalseSelbstsigniertes TLS-Zertifikat generieren
--no-tlsfalseTLS vollständig deaktivieren (Plain HTTP). Überschreibt --tls und --self-signed
--ipautomatisch erkanntAutomatisch erkannte Server-IP-Adresse überschreiben
--domain""Domainname für Let’s Encrypt oder selbstsigniertes Zertifikat
--email""E-Mail für Let’s Encrypt-Registrierung
--port"443" (TLS) / "8090" (HTTP)Listening-Port überschreiben
--cert""Pfad zur vorhandenen PEM-Zertifikatsdatei
--key""Pfad zur vorhandenen PEM-Private-Key-Datei
--lk-port"7880"LiveKit API/WebSocket-Port überschreiben
--lk-tcp-port"7881"LiveKit RTC TCP-Port überschreiben
--lk-udp-port"7882"LiveKit RTC UDP-Port überschreiben
--freshfalseVorhandene Installation vor der Neuinstallation entfernen
--behind-proxyfalseServer befindet sich hinter CDN/Reverse-Proxy (Cloudflare, nginx)
--external-livekit""URL eines vollständig externen LiveKit-Servers (andere Maschine)
--livekit-domain""Separate Domain für lokalen LiveKit-Server (umgeht CDN)

Was es macht:

  1. Stoppt und entfernt eine vorherige Installation, wenn --fresh
  2. Fragt nach IP, Domain, E-Mail, TLS-Modus (wenn nicht-interaktiv und keine Flags angegeben)
  3. Erstellt Verzeichnisse: /etc/bedrud, /var/lib/bedrud, /var/lib/bedrud/certs, /var/log/bedrud
  4. Kopiert die Binärdatei nach /usr/local/bin/bedrud
  5. Generiert Bedrud-Serverkonfiguration unter /etc/bedrud/config.yaml
  6. Generiert LiveKit-Medienserver-Konfiguration unter /etc/bedrud/livekit.yaml
  7. Generiert selbstsignierte Zertifikate unter /etc/bedrud/cert.pem + /etc/bedrud/key.pem (wenn TLS aktiviert und keine benutzerdefinierten Zertifikate)
  8. Erstellt LiveKit-Init-Service (außer bei externem LiveKit)
  9. Erstellt Bedrud-Init-Service
  10. Aktiviert und startet Services über das erkannte Init-System
  11. Gibt Zugangs-URLs aus

TLS-Optionen:

  • --domain + --email → ACME (Let’s Encrypt)
  • --self-signed oder --tls → selbstsigniertes Zertifikat
  • --cert + --key → benutzerdefinierte Zertifikate
  • --no-tls → nur Plain HTTP

LiveKit-Topologie:

  • Standard (eingebettet): LiveKit läuft lokal, proxied über Bedrud unter /livekit
  • --livekit-domain: LiveKit läuft lokal, aber Clients verbinden sich direkt über eine eigene Domain
  • --external-livekit: Kein lokaler LiveKit; verbindet sich mit einem Remote-Server

Implementierung: server/internal/install/linux.go

Verwandte Dokumentation: InstallationsanleitungDeployment-LeitfadenBackend-Deployment-Logik


uninstall

Entfernt Bedrud vom System.

bedrud uninstall

Entfernt:

  • Stoppt und deaktiviert Services über alle Init-Systeme: bedrud, livekit
  • Entfernt Service-Dateien für systemd, OpenRC und SysV init
  • Entfernt Binärdatei: /usr/local/bin/bedrud, /tmp/bedrud, /tmp/bedrud-livekit-server
  • Entfernt Verzeichnisse: /etc/bedrud, /var/lib/bedrud, /var/log/bedrud
  • Entfernt den Systembenutzer: bedrud

Implementierung: server/internal/install/ (linux.go, init.go, sysv.go, openrc.go)

Verwandte Dokumentation: Installationsanleitung - Deinstallation


user

Verwaltet Benutzer in der Bedrud-Datenbank.

bedrud user [--config <path>] <subcommand> [flags]
Globaler FlagStandardBeschreibung
--config/etc/bedrud/config.yamlPfad zur Bedrud-Konfigurationsdatei (zum Auffinden der Datenbank)

create

Erstellt einen neuen Benutzer mit lokaler Authentifizierung (bcrypt-gehashtes Passwort).

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

Erforderliche Flags:

  • --email: Benutzer-E-Mail-Adresse
  • --password: Benutzerpasswort, vor der Speicherung mit bcrypt gehasht
  • --name: Anzeigename des Benutzers

Optionale Flags:

  • --admin: Benutzer als Superadmin erstellen

Zugriffsstufe: Standardmäßig user. Verwenden Sie --admin, um einen Superadmin in einem Befehl zu erstellen.

delete

Löscht einen Benutzer anhand der E-Mail-Adresse.

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

promote

Legt die Rolle eines Benutzers fest, indem das Zugriffsarray ersetzt wird. Standard: superadmin.

bedrud user [--config <path>] promote --email <email> [--role <role>]
FlagStandardBeschreibung
--rolesuperadminZielrolle: superadmin, admin, moderator, user, guest

Beispiele:

# Superadmin-Rechte vergeben (Standard)
bedrud user promote --email admin@example.com
 
# Admin-Rechte vergeben
bedrud user promote --email admin@example.com --role admin
 
# Moderator-Rechte vergeben
bedrud user promote --email mod@example.com --role moderator

Jede Rolle entspricht einem bestimmten Zugriffsarray:

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

demote

Entfernt eine bestimmte Rolle von einem Benutzer. Standard: superadmin.

bedrud user [--config <path>] demote --email <email> [--role <role>]
FlagStandardBeschreibung
--rolesuperadminZu entfernende Rolle: superadmin, admin, moderator

Falls nach der Entfernung keine Rollen übrig bleiben, wird automatisch user-Zugriff hinzugefügt.

Implementierung: server/internal/usercli/usercli.go


cert

TLS-Zertifikate verwalten. Nur relevant bei selbstsignierten Zertifikaten (erzeugt durch bedrud install --self-signed).

bedrud cert [--config <path>] <subcommand>
Globales FlagStandardBeschreibung
--config/etc/bedrud/config.yamlPfad zur Bedrud-Konfigurationsdatei
--algo""Schlüsselalgorithmus: ed25519, ecdsa256, rsa2048, rsa4096 (Standard: aus vorhandenem Zertifikat erkennen)

renew

Selbstsigniertes TLS-Zertifikat manuell erneuern. Erkennt den Schlüsselalgorithmus des vorhandenen Zertifikats und generiert mit demselben Typ neu (Standard: Ed25519). Das neue Zertifikat ist 1825 Tage (~5 Jahre) gültig.

bedrud cert renew [--config <path>]

Der Server erneuert das Zertifikat automatisch täglich über den integrierten Scheduler, wenn weniger als 30 Tage verbleiben. Dieser Befehl ist für manuelle oder außerplanmäßige Erneuerungen gedacht.

SANs: Werden aus der Serverkonfiguration abgeleitet — domain (falls gesetzt), sowie localhost, 127.0.0.1 und ::1.

Implementierung: server/internal/utils/tls.go (RenewSelfSignedCert)

info

TLS-Zertifikat-Metadaten auf stdout ausgeben.

bedrud cert info [--config <path>]

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

Implementierung: server/internal/utils/tls.go (ValidateTLSCertPair)


help

Zeigt die Verwendungsnachricht mit allen Befehlen und Flags an.

bedrud help

Wird auch ausgelöst, wenn keine Argumente angegeben werden. Zeigt die printUsage()-Ausgabe an.


Beispiele

Einfacher Entwicklungsserver-Start

# Run with default config.yaml in current directory
bedrud run
 
# Run with custom config
bedrud run --config /path/to/config.yaml
 
# Via env var (fallback)
export CONFIG_PATH=/etc/bedrud/config.yaml
bedrud run

Interaktive Installation (fragt nach Eingaben)

bedrud install

Nicht-interaktive Installation mit Let’s Encrypt

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

Selbstsigniertes TLS mit benutzerdefinierten Ports

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

Hinter CDN mit separater LiveKit-Domain

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

Neuinstallation

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

Benutzerverwaltung

# Create first admin user (single command)
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User" --admin
 
# Or create a regular user, then promote
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User"
bedrud user [--config <path>] promote --email admin@example.com
 
# Create regular user
bedrud user [--config <path>] create --email user@example.com --password pass456 --name "Regular User"
 
# Remove a user
bedrud user [--config <path>] delete --email user@example.com
 
# Remove admin access
bedrud user [--config <path>] demote --email admin@example.com

Verwandte Dokumentation