Bedrud Documentación

Referencia completa para la interfaz de línea de comandos bedrud.

Sinopsis

# Estilo de subcomando
bedrud <command> [flags]
 
# Estilo de flag
bedrud --livekit --config <path>
bedrud --run --config <path>

Comandos

run / server

Inicia el servidor de reuniones Bedrud con API, frontend web integrado y LiveKit integrado (si está configurado).

bedrud run    [--config <path>]
bedrud server [--config <path>]
FlagPredeterminadoDescripción
--config$CONFIG_PATH var de entorno → "config.yaml"Ruta al archivo de configuración YAML de Bedrud

Comportamiento:

  • Carga la configuración desde la ruta especificada o predeterminados
  • Inicia LiveKit integrado si está configurado en modo interno
  • Inicializa la base de datos SQLite/PostgreSQL y ejecuta migraciones
  • Crea el servidor HTTP Fiber con todas las rutas de API
  • Sirve el frontend React integrado
  • Admite ACME (Let’s Encrypt), TLS autofirmado, TLS manual o HTTP simple
  • Apagado elegante en SIGTERM/SIGINT

Implementación: server/internal/server/server.go


--livekit

Inicia solo el servidor de medios LiveKit integrado. Extrae el binario desde Go embed a un directorio temporal.

bedrud --livekit --config <path>
FlagPredeterminadoDescripción
--config(requerido)Ruta al archivo de configuración YAML de LiveKit

Usado por: el servicio init livekit creado por bedrud install

Implementación: server/internal/livekit/server.go


--run

Alias para bedrud run con el mismo comportamiento del flag --config. Usado por el servicio init bedrud.

bedrud --run --config <path>

install

Instala Bedrud en un sistema Debian/Linux. Crea servicios init (systemd, OpenRC o SysV init — detección automática), archivos de configuración, directorios y certificados TLS.

bedrud install [flags]
FlagPredeterminadoDescripción
--tlsfalseHabilitar HTTPS (igual que --self-signed)
--self-signedfalseGenerar certificado TLS autofirmado
--no-tlsfalseDeshabilitar TLS por completo (HTTP simple). Anula --tls y --self-signed
--ipautodetectadoAnular la dirección IP del servidor autodetectada
--domain""Nombre de dominio para Let’s Encrypt o certificado autofirmado
--email""Correo electrónico para el registro de Let’s Encrypt
--port"443" (TLS) / "8090" (HTTP)Anular el puerto de escucha
--cert""Ruta al archivo de certificado PEM existente
--key""Ruta al archivo de clave privada PEM existente
--lk-port"7880"Anular el puerto API/WebSocket de LiveKit
--lk-tcp-port"7881"Anular el puerto TCP RTC de LiveKit
--lk-udp-port"7882"Anular el puerto UDP RTC de LiveKit
--freshfalseEliminar la instalación existente antes de instalar
--behind-proxyfalseEl servidor está detrás de CDN/proxy inverso (Cloudflare, nginx)
--external-livekit""URL del servidor LiveKit completamente externo (máquina diferente)
--livekit-domain""Dominio separado para el servidor LiveKit local (evita CDN)

Lo que hace:

  1. Detiene y elimina la instalación anterior si --fresh
  2. Solicita IP, dominio, correo electrónico, modo TLS (si no es interactivo y no se proporcionan flags)
  3. Crea directorios: /etc/bedrud, /var/lib/bedrud, /var/lib/bedrud/certs, /var/log/bedrud
  4. Copia el binario a /usr/local/bin/bedrud
  5. Genera la configuración del servidor Bedrud en /etc/bedrud/config.yaml
  6. Genera la configuración del servidor de medios LiveKit en /etc/bedrud/livekit.yaml
  7. Genera certificados autofirmados en /etc/bedrud/cert.pem + /etc/bedrud/key.pem (si TLS está habilitado y no hay certificados personalizados)
  8. Crea el servicio init de LiveKit (a menos que use LiveKit externo)
  9. Crea el servicio init de Bedrud
  10. Habilita e inicia los servicios mediante el sistema de inicialización detectado
  11. Imprime las URLs de acceso

Opciones de TLS:

  • --domain + --email → ACME (Let’s Encrypt)
  • --self-signed o --tls → certificado autofirmado
  • --cert + --key → certificados personalizados
  • --no-tls → solo HTTP simple

Topología de LiveKit:

  • Predeterminado (integrado): LiveKit se ejecuta localmente, a través de proxy en Bedrud en /livekit
  • --livekit-domain: LiveKit se ejecuta localmente pero los clientes se conectan directamente a través de su propio dominio
  • --external-livekit: Sin LiveKit local; se conecta a un servidor remoto

Implementación: server/internal/install/linux.go

Documentos relacionados: Guía de instalaciónGuía de implementaciónLógica de implementación del backend


uninstall

Elimina Bedrud del sistema.

bedrud uninstall

Elimina:

  • Detiene y deshabilita los servicios en todos los sistemas de inicialización: bedrud, livekit
  • Elimina los archivos de servicio para systemd, OpenRC y SysV init
  • Elimina el binario: /usr/local/bin/bedrud, /tmp/bedrud, /tmp/bedrud-livekit-server
  • Elimina los directorios: /etc/bedrud, /var/lib/bedrud, /var/log/bedrud
  • Elimina el usuario del sistema: bedrud

Implementación: server/internal/install/ (linux.go, init.go, sysv.go, openrc.go)

Documentos relacionados: Guía de instalación - Desinstalación


user

Gestiona usuarios en la base de datos de Bedrud.

bedrud user [--config <path>] <subcommand> [flags]
Flag globalPredeterminadoDescripción
--config/etc/bedrud/config.yamlRuta al archivo de configuración de Bedrud (para ubicar la base de datos)

create

Crea un nuevo usuario con autenticación local (contraseña con hash bcrypt).

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

Flags requeridos:

  • --email: Dirección de correo electrónico del usuario
  • --password: Contraseña del usuario, con hash bcrypt antes del almacenamiento
  • --name: Nombre para mostrar del usuario

Flags opcionales:

  • --admin: Crear usuario como superadmin

Nivel de acceso: user por defecto. Usa --admin para crear un superadmin en un solo comando.

delete

Elimina un usuario por dirección de correo electrónico.

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

promote

Establece el rol de un usuario reemplazando su array de accesos. Predeterminado: superadmin.

bedrud user [--config <path>] promote --email <email> [--role <role>]
FlagPredeterminadoDescripción
--rolesuperadminRol destino: superadmin, admin, moderator, user, guest

Ejemplos:

# Otorgar superadmin (predeterminado)
bedrud user promote --email admin@example.com
 
# Otorgar admin
bedrud user promote --email admin@example.com --role admin
 
# Otorgar moderator
bedrud user promote --email mod@example.com --role moderator

Cada rol se asigna a un array de accesos:

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

demote

Elimina un rol específico de un usuario. Predeterminado: superadmin.

bedrud user [--config <path>] demote --email <email> [--role <role>]
FlagPredeterminadoDescripción
--rolesuperadminRol a eliminar: superadmin, admin, moderator

Si al usuario no le quedan roles después de la eliminación, se agrega acceso user automáticamente.

Implementación: server/internal/usercli/usercli.go


cert

Gestionar certificados TLS. Relevante solo cuando se usan certificados autofirmados (generados por bedrud install --self-signed).

bedrud cert [--config <path>] <subcommand>
Flag GlobalValor por defectoDescripción
--config/etc/bedrud/config.yamlRuta al archivo de configuración de Bedrud
--algo""Algoritmo de clave: ed25519, ecdsa256, rsa2048, rsa4096 (predeterminado: detectar del certificado existente)

renew

Renovar manualmente el certificado TLS autofirmado. Detecta el algoritmo de clave del certificado existente y regenera con el mismo tipo (predeterminado: Ed25519). El nuevo certificado tiene una validez de 1825 días (~5 años).

bedrud cert renew [--config <path>]

El servidor también renueva el certificado automáticamente a diario mediante su programador integrado cuando faltan menos de 30 días para el vencimiento. Este comando es para renovación manual o extraordinaria.

SANs: Derivados de la configuración del servidor — domain (si está configurado), más localhost, 127.0.0.1 y ::1.

Implementación: server/internal/utils/tls.go (RenewSelfSignedCert)

info

Mostrar metadatos del certificado TLS en stdout.

bedrud cert info [--config <path>]

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

Implementación: server/internal/utils/tls.go (ValidateTLSCertPair)


help

Muestra el mensaje de uso con todos los comandos y flags.

bedrud help

También se activa cuando no se proporcionan argumentos. Muestra la salida de printUsage().


Ejemplos

Inicio básico del servidor de desarrollo

# Ejecutar con config.yaml predeterminado en el directorio actual
bedrud run
 
# Ejecutar con configuración personalizada
bedrud run --config /path/to/config.yaml
 
# Vía var de entorno (fallback)
export CONFIG_PATH=/etc/bedrud/config.yaml
bedrud run

Instalación interactiva (solicita entradas)

bedrud install

Instalación no interactiva con Let’s Encrypt

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

TLS autofirmado con puertos personalizados

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

Detrás de CDN con dominio LiveKit separado

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

Reinstalación fresca

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

Gestión de usuarios

# Crear el primer usuario administrador (un solo comando)
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User" --admin
 
# O crear un usuario regular, luego promover
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User"
bedrud user [--config <path>] promote --email admin@example.com
 
# Crear usuario regular
bedrud user [--config <path>] create --email user@example.com --password pass456 --name "Regular User"
 
# Eliminar un usuario
bedrud user [--config <path>] delete --email user@example.com
 
# Eliminar acceso de administrador
bedrud user [--config <path>] demote --email admin@example.com

Documentación relacionada