Bedrud 文档

本指南介绍如何在 Linux 服务器上安装 Bedrud 服务器(API、Web UI、WebRTC 媒体服务器)。桌面和移动客户端应用请参阅客户端安装


前提条件

需求详情
操作系统Debian 12+、Ubuntu 22.04+、Arch Linux (rolling)、Fedora 39+
架构amd64 (x86_64) 或 arm64 (aarch64)
权限Root 或 sudo
初始化系统systemd
硬件最低 1 vCPU、512 MB RAM。10+ 并发房间建议 2 vCPU、2 GB RAM
端口8090(API + Web UI)、7880(LiveKit WebSocket)、50000–60000/udp(WebRTC 媒体)
自动 TLS需额外开放 80443。需要域名配置 DNS A record 指向此服务器
工具curltar(大多数发行版已预装)

没有域名? Bedrud 可使用 IP 地址配合 self-signed TLS。浏览器会显示证书警告,但音视频功能正常。内网可信证书请参阅内网 TLS 指南


1. 一键安装(推荐)

下载并安装 Bedrud CLI 二进制文件到您的 PATH。支持 Linux、macOS 和 Windows。

curl -fsSL https://get.bedrud.org | bash

安装后重新加载 shell:

source ~/.bashrc  # 或 ~/.zshrc
irm https://get.bedrud.org/install.ps1 | iex

验证:

bedrud --version

自定义安装?使用 --version 0.12.0--install-dir /opt/bedrud--skip-shell 等参数。完整参考:CLI 安装程序


2. 包管理器安装

通过发行版的包管理器安装。

curl -fsSL https://bedrud-ir.github.io/bedrud/bedrud.gpg.key \
  | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/bedrud.gpg
 
echo "deb https://bedrud-ir.github.io/bedrud stable main" \
  | sudo tee /etc/apt/sources.list.d/bedrud.list
 
sudo apt update && sudo apt install bedrud

然后运行交互式安装程序:

sudo bedrud install
yay -S bedrud-bin
sudo bedrud install
sudo curl -fsSL https://bedrud-ir.github.io/bedrud/dnf/bedrud.gpg.key \
  -o /etc/pki/rpm-gpg/RPM-GPG-KEY-bedrud
 
sudo curl -fsSL https://bedrud-ir.github.io/bedrud/dnf/bedrud.repo \
  -o /etc/yum.repos.d/bedrud.repo
 
sudo dnf install bedrud
sudo bedrud install

桌面客户端安装(Linux、macOS、Windows)请参阅客户端安装


3. Docker

在容器中运行 Bedrud - 无需 Linux 服务器配置、无需 systemd、无需下载二进制文件。

预构建镜像(最快)

docker pull ghcr.io/bedrud-ir/bedrud:latest
 
docker run -d --name bedrud \
  -p 8090:8090 \
  -p 7880:7880 \
  -p 50000-60000:50000-60000/udp \
  -v bedrud-data:/var/lib/bedrud \
  ghcr.io/bedrud-ir/bedrud:latest

Docker Compose

services:
  bedrud:
    image: ghcr.io/bedrud-ir/bedrud:latest
    ports:
      - "8090:8090"
      - "7880:7880"
      - "50000-60000:50000-60000/udp"
    volumes:
      - bedrud-data:/var/lib/bedrud
    restart: unless-stopped
 
volumes:
  bedrud-data:

端口

端口服务协议
8090API + Web UIHTTP
7880LiveKitWebSocket + HTTP
50000–60000WebRTC 媒体UDP

配置

传入配置文件或使用环境变量:

docker run -d --name bedrud \
  -p 8090:8090 \
  -p 7880:7880 \
  -e JWT_SECRET=change-this-to-a-random-string \
  -e LIVEKIT_API_KEY=prodkey \
  -e LIVEKIT_API_SECRET=prodsecret \
  -v bedrud-data:/var/lib/bedrud \
  ghcr.io/bedrud-ir/bedrud:latest

默认的 JWT 和 LiveKit 密钥仅用于快速测试。在将容器暴露到互联网之前请更改它们。

完整的 Docker 文档包括卷、反向代理和 TLS 配置:Docker 指南


4. 交互式安装

如果服务器上已有 bedrud 二进制文件:

sudo ./bedrud install

安装程序会自动检测服务器 IP 并提示以下内容:

提示默认值说明
IP 地址自动检测(首个非回环 IPv4)按 Enter 接受,或输入其他 IP
域名空(仅 IP)如果提供域名和邮箱,将启用 Let’s Encrypt TLS
邮箱用于 Let’s Encrypt 注册(仅在设置了域名时)
self-signed TLS未提供域名时显示。默认为 Y

当 stdin 被管道传输时(非交互模式),所有提示将被跳过 - 使用标志和默认值。


5. 非交互式(基于标志)

通过传入标志跳过所有提示。

Let’s Encrypt(需要域名)

前提: 域名的 DNS A record 已指向此服务器的 IP。

sudo ./bedrud install --tls --domain meet.example.com --email webmaster@example.com

self-signed TLS(基于 IP)

前提: 无额外要求。可立即使用。

sudo ./bedrud install --tls --ip 1.2.3.4

纯 HTTP(仅开发/内网)

前提: localhost 或 127.0.0.1。除 localhost 外,浏览器会阻止非 HTTPS 上的摄像头/麦克风。

sudo ./bedrud install --ip 1.2.3.4

域名的 self-signed 证书(DNS 配置前测试)

前提: 域名(DNS 无需解析)。

sudo ./bedrud install --tls --domain meet.example.com

自定义端口

前提: 端口未被占用。

sudo ./bedrud install --tls --port 8443 --domain meet.example.com

外部证书

前提: PEM 格式的 fullchain 和私钥文件。

sudo ./bedrud install --tls --cert /path/to/fullchain.pem --key /path/to/privkey.pem

自定义 LiveKit 端口

前提: 防火墙中三个端口均已开放。

sudo ./bedrud install --lk-port 9000 --lk-tcp-port 9001 --lk-udp-port 9002

反向代理后部署

前提: 前端有一个终止 TLS 的反向代理(Nginx、Caddy、Traefik、Cloudflare)。

sudo ./bedrud install --behind-proxy --domain meet.example.com

在配置中设置 behindProxy: true 并配置可信代理头。

外部 LiveKit 服务器

前提: 已运行独立的 LiveKit 服务器,且可从本机访问。

sudo ./bedrud install --external-livekit https://livekit.example.com

跳过嵌入式 LiveKit 安装。API key 和 secret 必须在两边的配置中匹配。

独立 LiveKit 域名

前提: 一个直接解析到此服务器的域名,绕过任何 CDN。

sudo ./bedrud install --livekit-domain lk.example.com --domain meet.example.com

适用于主域名在 Cloudflare 后面但 WebRTC 媒体需要直连的场景。

所有标志参考

标志默认值说明
--tlsfalse启用 HTTPS(self-signed 或 Let’s Encrypt)
--self-signedfalse生成 self-signed TLS 证书
--no-tlsfalse完全禁用 TLS(覆盖 --tls
--ip自动检测覆盖服务器 IP 地址
--domain""用于 Let’s Encrypt 或 self-signed 证书的域名
--email""用于 Let’s Encrypt 注册的邮箱
--port443(TLS)/ 8090(HTTP)覆盖监听端口
--cert""现有证书文件路径(PEM)
--key""现有私钥文件路径(PEM)
--lk-port7880LiveKit API 端口
--lk-tcp-port7881LiveKit RTC TCP 端口
--lk-udp-port7882LiveKit RTC UDP 端口
--freshfalse安装前删除已有安装
--behind-proxyfalse服务器在反向代理 / CDN 后面
--external-livekit""外部 LiveKit 服务器的 URL
--livekit-domain""LiveKit 专用域名(绕过 CDN)

6. 全自动部署(Python CLI)

从本地机器构建、上传并配置服务器。

前提: Python 3.12+、uv(Python 包运行器)、目标服务器的 SSH 密钥访问权限、本地安装 Go 1.24+ 和 Bun。

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

执行步骤:

  1. 构建后端二进制文件(dist/bedrud
  2. 压缩为 bedrud.tar.xz
  3. 通过 rsync 上传到服务器
  4. 清理冲突服务(Nginx、Apache、Caddy)
  5. 配置防火墙(UFW)
  6. 在服务器上执行内部 install 逻辑
标志说明
--ip服务器 IP 地址
--userSSH 用户(默认:root)
--auth-keySSH 私钥路径
--domain用于 Let’s Encrypt 的域名
--acme-email用于 Let’s Encrypt 的邮箱
--uninstall从服务器上删除 Bedrud

安装程序的工作流程

运行 bedrud install 时,会执行以下操作:

步骤 操作
1 创建目录: /etc/bedrud, /var/lib/bedrud, /var/log/bedrud
2 将二进制文件复制到 /usr/local/bin/bedrud
3 根据你的设置生成 config.yaml /etc/bedrud/config.yaml
4 为媒体服务器生成 livekit.yaml /etc/bedrud/livekit.yaml
5 创建两个 systemd 服务: bedrud.service & livekit.service
6 启用并启动两个服务
7 初始化 SQLite 数据库和证书缓存

服务入口

bedrud --run --config /etc/bedrud/config.yaml       # API + Web 服务器
bedrud --livekit --config /etc/bedrud/livekit.yaml   # 媒体服务器

安装后

提升用户为管理员

通过 Web 界面注册用户,然后提升为管理员:

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

验证服务

systemctl status bedrud livekit

验证 API

curl -s -o /dev/null -w "%{http_code}" http://localhost:8090

预期结果:200

检查防火墙

sudo ufw status

确保以下端口已放行:

sudo ufw allow 8090/tcp
sudo ufw allow 7880/tcp
sudo ufw allow 50000:60000/udp

查看日志

tail -f /var/log/bedrud/bedrud.log

或通过 journalctl:

journalctl -u bedrud -u livekit -f

升级

包管理器

# Ubuntu / Debian
sudo apt update && sudo apt upgrade bedrud
 
# Arch Linux
yay -Syu bedrud-bin
 
# Fedora / RHEL
sudo dnf upgrade bedrud

包升级后服务会自动重启。

二进制下载

下载最新版本并重新运行安装。安装程序可安全地重复运行 - 它会覆盖二进制文件和配置,同时保留数据库:

curl -fsSL -o bedrud.tar.xz https://github.com/bedrud-ir/bedrud/releases/latest/download/bedrud_linux_amd64.tar.xz
tar -xJf bedrud.tar.xz && chmod +x bedrud
sudo ./bedrud install --fresh

--fresh 会先删除旧安装。省略此标志可保留现有配置和数据库。

Docker

docker pull ghcr.io/bedrud-ir/bedrud:latest
docker stop bedrud && docker rm bedrud
docker run -d --name bedrud \
  -p 8090:8090 \
  -p 7880:7880 \
  -p 50000-60000:50000-60000/udp \
  -v bedrud-data:/var/lib/bedrud \
  ghcr.io/bedrud-ir/bedrud:latest

使用 Docker Compose:

docker compose pull
docker compose up -d

卸载

完全删除 Bedrud:

sudo bedrud uninstall

此操作会停止服务、删除 systemd 单元文件、从 /usr/local/bin 中删除二进制文件,并清理 /etc/bedrud/var/lib/bedrud/var/log/bedrud


故障排除

问题解决方案
端口 80/443 被占用停止冲突的 Web 服务器:systemctl stop nginx apache2 caddy
服务无法启动查看日志:journalctl -u bedrud -u livekit --no-pager -n 50
TLS 证书问题验证 DNS:dig +short meet.example.com - 必须返回此服务器的 IP
LiveKit 端口冲突使用 --lk-port--lk-tcp-port--lk-udp-port 标志更改端口
安装成功但 Web UI 显示 404前端未嵌入。在 bedrud install 之前使用 make build 构建。仅二进制构建会跳过前端
安装成功但服务崩溃检查静默失败:journalctl -u bedrud --no-pager -n 100。验证 /etc/bedrud/config.yaml 配置
端口被占用(未知进程)查找:ss -tlnp | grep 8090ss -ulnp | grep 7880
防火墙阻止媒体开放端口:sudo ufw allow 8090/tcp && sudo ufw allow 7880/tcp && sudo ufw allow 50000:60000/udp
self-signed certificate 警告属于正常现象。参阅内网 TLS 指南了解私有 CA 配置
无视频 / WebRTC 失败摄像头访问需要 HTTPS。使用 --tls。确保 UDP 50000–60000 已开放
反向代理:错误的客户端 IP使用 --behind-proxy 标志。会配置可信代理头