Bedrud Documentación

Esta guía explica cómo desplegar Bedrud en un servidor de producción.

Opciones de despliegue

MétodoIdeal para
Gestor de paquetes (apt/AUR)Instalación gestionada en distribuciones Linux compatibles
CLI automatizadaConfiguración remota rápida
Instalación manualControl total sobre la configuración
DockerEntornos conteinerizados
Modo applianceConfiguración todo-en-uno de binario único

Gestor de paquetes

Instala Bedrud en Debian/Ubuntu o Arch Linux usando el gestor de paquetes nativo. Este es el método recomendado para despliegues de servidor persistentes donde quieres actualizaciones automáticas mediante apt upgrade o AUR.

Consulta la guía de instalación por paquetes para instrucciones completas, incluyendo cómo añadir la clave GPG y el repositorio de apt.

# Ubuntu / Debian
sudo apt install bedrud
 
# Arch Linux (AUR)
yay -S bedrud-bin

Después de la instalación, ejecuta el instalador interactivo para configurar TLS, servicios systemd y la base de datos:

sudo bedrud install

Despliegue automatizado con CLI

La forma más rápida de desplegar. Ejecuta desde tu máquina local:

Requisitos previos: Python 3.10+, uv y acceso SSH al servidor de destino.

cd tools/cli
uv run python bedrud.py --auto-config \
  --ip <server-ip> \
  --user root \
  --auth-key ~/.ssh/id_rsa \
  --domain meet.example.com \
  --acme-email admin@example.com

Esto hará lo siguiente:

  1. Compilar el binario del backend localmente
  2. Comprimir y subirlo mediante rsync
  3. Limpiar servidores web conflictivos
  4. Configurar el firewall
  5. Instalar e iniciar los servicios en el servidor

Opciones de CLI

OpciónDescripción
--ipDirección IP del servidor
--userUsuario SSH (predeterminado: root)
--auth-keyRuta a la clave privada SSH
--domainNombre de dominio para Let’s Encrypt
--acme-emailEmail para Let’s Encrypt
--uninstallEliminar Bedrud del servidor

Instalación manual

1. Compilar el binario

make build-dist

Esto genera dist/bedrud_linux_amd64.tar.xz.

2. Subir al servidor

scp dist/bedrud_linux_amd64.tar.xz root@server:/tmp/
ssh root@server "cd /tmp && tar xf bedrud_linux_amd64.tar.xz"

3. Instalar

ssh root@server
sudo /tmp/bedrud install --tls --domain meet.example.com --email admin@example.com

Consulta la guía de instalación para todos los escenarios de instalación.

4. Crear usuario administrador

Promote User to Admin

Register via the web UI at your server URL, then promote the user to admin:

			
sudo ./bedrud user promote --email admin@example.com
		

Despliegue con Docker

Compila y ejecuta con Docker:

docker build -t bedrud .
docker run -d --name bedrud -p 8090:8090 -p 7880:7880 -v bedrud-data:/var/lib/bedrud bedrud

También hay una imagen precompilada disponible:

docker pull ghcr.io/bedrud-ir/bedrud:latest

Consulta la guía de Docker para obtener detalles completos incluyendo volúmenes, configuración y Docker Compose.


Arquitectura de producción

flowchart TB
    NET[Internet] --> TRAEFIK["Traefik (443)<br/>TLS termination, reverse proxy"]
    TRAEFIK --> BEDRUD["Bedrud (8090)<br/>API + Web UI"]
    TRAEFIK --> LIVEKIT["LiveKit (7880)<br/>WebRTC media"]
    BEDRUD --> DB["SQLite<br/>(or PostgreSQL)"]

Para la conectividad WebRTC, también abre estos puertos en el firewall:

PuertoProtocoloPropósito
3478UDPTURN/UDP + STUN
5349TCPTURN/TLS (o usar 443)
7881TCPICE/TCP fallback
50000-60000UDPFlujos de medios RTC

Consulta Conectividad WebRTC para la pila completa de conectividad.

Systemd Services

The installer creates two systemd services:

Service Command Purpose
bedrud.service bedrud --run --config /etc/bedrud/config.yaml API + web
livekit.service bedrud --livekit --config /etc/bedrud/livekit.yaml Media server

Gestión de servicios

# Verificar estado
systemctl status bedrud livekit
 
# Reiniciar
systemctl restart bedrud
 
# Ver logs
journalctl -u bedrud -f
tail -f /var/log/bedrud/bedrud.log

Ubicación de archivos (producción)

RutaContenido
/usr/local/bin/bedrudBinario
/etc/bedrud/config.yamlConfiguración del servidor
/etc/bedrud/livekit.yamlConfiguración de LiveKit
/var/lib/bedrud/bedrud.dbBase de datos SQLite
/var/log/bedrud/bedrud.logLogs de la aplicación

CI/CD

Pipeline de lanzamientos

El workflow release.yml se dispara con tags de versión (v*) y produce:

ArtefactoDescripción
bedrud_linux_amd64.tar.xz / bedrud_linux_arm64.tar.xzBinarios del servidor (Linux x86_64 / ARM64)
bedrud_amd64.deb / bedrud_arm64.debPaquetes Debian/Ubuntu (servidor)
Imagen Docker (ghcr.io/bedrud-ir/bedrud)Imagen contenedora multi-arquitectura publicada en GHCR
bedrud-desktop-linux-x86_64.AppImageEscritorio - AppImage universal de Linux
bedrud-desktop-linux-x86_64.debEscritorio - Paquete Debian/Ubuntu
bedrud-desktop-linux-x86_64.tar.xzEscritorio - Tarball portátil de Linux
bedrud-desktop-windows-x86_64-setup.exe / -arm64-setup.exeEscritorio - Instalador NSIS de Windows
bedrud-desktop-windows-x86_64.zip / -arm64.zipEscritorio - Portable de Windows
bedrud-desktop-macos-x86_64.tar.gz / -arm64.tar.gzEscritorio - Portable de macOS (sin firmar)
Android APK (depuración + producción, por arquitectura)Builds del cliente Android
iOS IPA (opcional, requiere firma)Archivo del cliente iOS

Todos los artefactos se adjuntan al lanzamiento en GitHub.

Builds nocturnos

El workflow dev-nightly.yml produce builds de desarrollo de forma programada.

Verificaciones de CI

Cada push a main y cada pull request ejecuta:

VerificaciónPlataforma
go vet + build + testsubuntu-latest (Go 1.24)
Verificación de tipos + buildubuntu-latest (Bun)
Lint + tests unitariosubuntu-latest (JDK 17)
Build + testmacos-15 (Xcode)