Bedrud 文档

bedrud 命令行界面的完整参考。

概要

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

命令

run / server

启动 Bedrud 会议服务器,包含 API、嵌入式 Web 前端和嵌入式 LiveKit(如已配置)。

bedrud run    [--config <path>]
bedrud server [--config <path>]
标志默认值说明
--config$CONFIG_PATH 环境变量 → "config.yaml"Bedrud YAML 配置文件路径

行为:

  • 从指定路径或默认路径加载配置
  • 如配置为内部模式则启动嵌入式 LiveKit
  • 初始化 SQLite/PostgreSQL 数据库并运行迁移
  • 创建包含所有 API 路由的 Fiber HTTP 服务器
  • 提供嵌入式 React 前端
  • 支持 ACME(Let’s Encrypt)、self-signed TLS、手动 TLS 或纯 HTTP
  • 收到 SIGTERM/SIGINT 时优雅关闭

实现: server/internal/server/server.go


--livekit

仅启动嵌入式 LiveKit 媒体服务器。从 Go embed 中提取二进制文件到临时目录。

bedrud --livekit --config <path>
标志默认值说明
--config(必需)LiveKit YAML 配置文件路径

使用者: bedrud install 创建的 init 服务 livekit.service

实现: server/internal/livekit/server.go


--run

bedrud run 的别名,--config 标志行为相同。由 init 服务 bedrud.service 使用。

bedrud --run --config <path>

install

在 Debian/Linux 系统上安装 Bedrud。创建 init 服务(systemd、OpenRC 或 SysV init — 自动检测)、配置文件、目录和 TLS 证书。

bedrud install [flags]
标志默认值说明
--tlsfalse启用 HTTPS(等同于 --self-signed
--self-signedfalse生成 self-signed TLS 证书
--no-tlsfalse完全禁用 TLS(纯 HTTP)。覆盖 --tls--self-signed
--ip自动检测覆盖自动检测的服务器 IP 地址
--domain""用于 Let’s Encrypt 或 self-signed 证书的域名
--email""用于 Let’s Encrypt 注册的邮箱
--port"443"(TLS)/ "8090"(HTTP)覆盖监听端口
--cert""现有 PEM 证书文件路径
--key""现有 PEM 私钥文件路径
--lk-port"7880"覆盖 LiveKit API/WebSocket 端口
--lk-tcp-port"7881"覆盖 LiveKit RTC TCP 端口
--lk-udp-port"7882"覆盖 LiveKit RTC UDP 端口
--freshfalse安装前删除已有安装
--behind-proxyfalse服务器在 CDN/反向代理后面(Cloudflare、nginx)
--external-livekit""完全外部 LiveKit 服务器的 URL(不同机器)
--livekit-domain""本地 LiveKit 服务器的独立域名(绕过 CDN)

执行步骤:

  1. 如果使用 --fresh,停止并删除之前的安装
  2. 提示输入 IP、域名、邮箱、TLS 模式(非交互且未提供标志时)
  3. 创建目录:/etc/bedrud/var/lib/bedrud/var/lib/bedrud/certs/var/log/bedrud
  4. 将二进制文件复制到 /usr/local/bin/bedrud
  5. /etc/bedrud/config.yaml 生成 Bedrud 服务器配置
  6. /etc/bedrud/livekit.yaml 生成 LiveKit 媒体服务器配置
  7. /etc/bedrud/cert.pem + /etc/bedrud/key.pem 生成 self-signed 证书(如启用 TLS 且无自定义证书)
  8. 创建 LiveKit init 服务 livekit.service(除非使用外部 LiveKit)
  9. 创建 Bedrud init 服务 bedrud.service
  10. 通过检测到的 init 系统启用并启动服务
  11. 打印访问 URL

TLS 选项:

  • --domain + --email → ACME(Let’s Encrypt)
  • --self-signed--tls → self-signed 证书
  • --cert + --key → 自定义证书
  • --no-tls → 仅纯 HTTP

LiveKit 拓扑:

  • 默认(嵌入式):LiveKit 本地运行,通过 Bedrud 在 /livekit 代理
  • --livekit-domain:LiveKit 本地运行但客户端通过其独立域名直连
  • --external-livekit:无本地 LiveKit;连接到远程服务器

实现: server/internal/install/linux.go

相关文档: 安装指南部署指南后端部署逻辑


uninstall

从系统中删除 Bedrud。

bedrud uninstall

删除内容:

  • 停止并禁用所有 init 系统中的服务:bedrudlivekit
  • 删除 systemd、OpenRC 和 SysV init 的服务文件
  • 删除二进制文件:/usr/local/bin/bedrud/tmp/bedrud/tmp/bedrud-livekit-server
  • 删除目录:/etc/bedrud/var/lib/bedrud/var/log/bedrud
  • 删除系统用户: bedrud

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

相关文档: 安装指南 - 卸载


user

管理 Bedrud 数据库中的用户。

bedrud user [--config <path>] <subcommand> [flags]
全局标志默认值说明
--config/etc/bedrud/config.yamlBedrud 配置文件路径(用于定位数据库)

create

使用本地身份验证(bcrypt 哈希密码)创建新用户。

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

必需标志:

  • --email:用户邮箱地址
  • --password:用户密码,存储前使用 bcrypt 哈希
  • --name:用户显示名称

可选标志:

  • --admin:以超级管理员身份创建用户

访问级别: 默认为 user。使用 --admin 一步创建超级管理员。

delete

通过邮箱地址删除用户。

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

promote

通过替换访问数组设置用户角色。默认值:superadmin

bedrud user [--config <path>] promote --email <email> [--role <role>]
标志默认值描述
--rolesuperadmin目标角色:superadminadminmoderatoruserguest

示例:

# 授予 superadmin 权限(默认)
bedrud user promote --email admin@example.com
 
# 授予 admin 权限
bedrud user promote --email admin@example.com --role admin
 
# 授予 moderator 权限
bedrud user promote --email mod@example.com --role moderator

每个角色映射到一个特定的访问数组:

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

demote

移除用户的特定角色。默认值:superadmin

bedrud user [--config <path>] demote --email <email> [--role <role>]
标志默认值描述
--rolesuperadmin要移除的角色:superadminadminmoderator

如果移除后用户没有剩余角色,将自动添加 user 访问权限。

实现: server/internal/usercli/usercli.go


cert

管理 TLS 证书。仅在使用自签名证书(由 bedrud install --self-signed 生成)时相关。

bedrud cert [--config <path>] <subcommand>
全局标志默认值描述
--config/etc/bedrud/config.yamlBedrud 配置文件路径
--algo""密钥算法: ed25519, ecdsa256, rsa2048, rsa4096(默认:从现有证书检测)

renew

强制续订自签名 TLS 证书。检测现有证书的密钥算法并使用相同类型重新生成(默认:Ed25519)。新证书有效期为 1825 天(约 5 年)。

bedrud cert renew [--config <path>]

服务器还会在证书到期前 30 天内通过内置调度器每天自动续订证书。此命令用于手动或计划外续订。

SANs: 从服务器配置中派生 — domain(如果已设置),以及 localhost127.0.0.1::1

实现: server/internal/utils/tls.goRenewSelfSignedCert

info

将 TLS 证书元数据输出到标准输出。

bedrud cert info [--config <path>]

输出字段: subject、issuer、notBefore、notAfter、daysRemaining、status(valid/expiring/error)、SANs。

实现: server/internal/utils/tls.goValidateTLSCertPair


help

显示包含所有命令和标志的使用说明。

bedrud help

不提供参数时也会触发。显示 printUsage() 输出。


示例

基本开发服务器启动

# 使用当前目录的默认 config.yaml 运行
bedrud run
 
# 使用自定义配置运行
bedrud run --config /path/to/config.yaml
 
# 通过环境变量(回退方式)
export CONFIG_PATH=/etc/bedrud/config.yaml
bedrud run

交互式安装(提示输入)

bedrud install

使用 Let’s Encrypt 的非交互式安装

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

自定义端口的 self-signed TLS

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

CDN 后部署 + 独立 LiveKit 域名

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

全新重新安装

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

用户管理

# 创建第一个管理员用户(单条命令)
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User" --admin
 
# 或者先创建普通用户,再提升权限
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User"
bedrud user [--config <path>] promote --email admin@example.com
 
# 创建普通用户
bedrud user [--config <path>] create --email user@example.com --password pass456 --name "Regular User"
 
# 删除用户
bedrud user [--config <path>] delete --email user@example.com
 
# 移除管理员权限
bedrud user [--config <path>] demote --email admin@example.com

相关文档