
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://docs.bigbluebutton.org/ 是一款用于在线学习的开源网络会议系统。Scalelite 是一款开源负载均衡器,用于管理 BigBlueButton 服务器池,使服务器池呈现为单个(高可扩展的)BigBlueButton 服务器。前端系统(如 https://moodle.org/plugins/mod_bigbluebuttonbn 或 https://github.com/bigbluebutton/greenlight%EF%BC%89%E5%90%91 Scalelite 服务器发送标准 BigBlueButton API 请求,Scalelite 再将这些请求分发到服务器池中负载最低的 BigBlueButton 服务器。
单个满足 http://docs.bigbluebutton.org/2.2/install.html#minimum-server-requirements 的 BigBlueButton 服务器支持约 200 名并发用户。对于许多学校和组织,支持 4 个同时进行的 50 人班级或 8 个同时进行的 25 人会议可能已足够。但如果学校需要支持 50 个同时进行的班级共 1500 名用户,单台服务器无法承担此负载。通过 Scalelite,学校可创建包含 4 台 BigBlueButton 服务器的池,支持 16 个同时进行的 50 人班级;如需更高容量,只需向池中添加更多服务器。
Scalelite 旨在解决单台 BigBlueButton 服务器的并发用户限制问题,通过负载均衡技术将请求分发到多台 BigBlueButton 服务器,实现横向扩展。其核心价值在于:
getRecordings API 请求,快速返回可用录制列表Scalelite 适用于以下场景:
Scalelite 部署需以下组件:
BigBlueButton 服务器
每台服务器需满足 http://docs.bigbluebutton.org/2.2/install.html#minimum-server-requirements%EF%BC%8C%E5%BB%BA%E8%AE%AE%E8%87%B3%E5%B0%91%E9%83%A8%E7%BD%B2 3 台以确保高可用性。
Scalelite 负载均衡服务器
PostgreSQL 数据库
Redis 缓存
推荐使用 https://github.com/bigbluebutton/bbb-install 自动化部署,该脚本可自动完成安装、SSL 配置(Let's Encrypt)及版本更新。每台服务器需配置 TURN 服务器以优化防火墙后的媒体传输(音频、视频、屏幕共享)。
需设置 NFS 共享存储卷,用于集中存储所有 BigBlueButton 服务器的录制文件。详细步骤参见 Setting up a shared volume for recordings。
根据基础设施环境选择合适的部署方式(自建或云服务),确保 DATABASE_URL 环境变量配置正确(格式:postgresql://username:password@connection_url)。
配置 Redis 服务器并启用持久化,确保 REDIS_URL 环境变量正确(格式:redis://username:password@connection_url)。
详细部署步骤参见 Deploying Scalelite Docker Containers,核心为配置环境变量并启动容器。
将前端系统(如 Moodle、Greenlight)的 BigBlueButton 配置修改为:
http(s)://<scalelite-hostname>/bigbluebutton/api/LOADBALANCER_SECRET 值必需变量
| 变量名 | 说明 |
|---|---|
URL_HOST | 应用 API 端点的主机名,用于防止 DNS 重绑定***;如部署在网络负载均衡器后可留空 |
SECRET_KEY_BASE | Rails 内部使用的密钥,需唯一,可通过 bundle exec rake secret 或 openssl rand -hex 64 生成 |
LOADBALANCER_SECRET | 前端调用 Scalelite API 时使用的共享密钥,通过 openssl rand -hex 32 生成 |
LOADBALANCER_SECRETS | 额外共享密钥(用 : 分隔),支持多前端使用不同密钥,便于密钥撤销 |
DATABASE_URL | PostgreSQL 连接 URL,格式:postgresql://username:password@connection_url |
REDIS_URL | Redis 连接 URL,格式:redis://username:password@connection_url |
Docker 专用变量
| 变量名 | 说明 |
|---|---|
NGINX_SSL | 设置为 "true" 启用 SSL,需挂载证书文件(/etc/nginx/ssl/live/$URL_HOST/fullchain.pem 和 privkey.pem) |
NGINX_BEHIND_PROXY | 当 Scalelite 位于代理/负载均衡器后时设为 "true" |
NGINX_RECORDINGS_ONLY | 设为 "true" 时仅用于代理录制文件 |
POLL_INTERVAL | 轮询服务器的时间间隔(秒),默认 60 |
RECORDING_IMPORT_POLL | 是否轮询录制文件目录,默认 "true";如使用 inotify 可设为 "false" 减少 CPU 占用 |
可选变量
包括端口配置(PORT、BIND)、轮询间隔(INTERVAL)、Rails 进程/线程数(WEB_CONCURRENCY、RAILS_MAX_THREADS)、会议时长限制(MAX_MEETING_DURATION)、录制文件路径(RECORDING_SPOOL_DIR 等)、服务器健康阈值(SERVER_HEALTHY_THRESHOLD、SERVER_UNHEALTHY_THRESHOLD)等,详细说明见官方文档。
config/redis_store.yml)Docker 部署建议通过 REDIS_URL 环境变量配置,非 Docker 部署可通过该文件设置每个环境的 Redis 参数,包括连接池大小(pool)、超时时间(pool_timeout)、命名空间(namespace)等。
所有管理命令通过 rake 任务执行,Docker 部署需先进入容器(如 docker exec -it scalelite-api /bin/sh)。
查看服务器详情
sh./bin/rake servers
输出包括服务器 ID、URL、密钥、状态(启用/禁用)、负载、在线状态等。
添加服务器
sh./bin/rake servers:add[url,secret,loadMultiplier]
url:BigBlueButton 服务器 API 完整 URL(需包含 /api)secret:服务器 API 密钥(通过 bbb-conf --secret 获取)loadMultiplier:负载乘数(可选,默认 1,性能较弱的服务器可设更高值)移除服务器
sh./bin/rake servers:remove[id]
警告:不要移除有运行中会议的服务器,以免数据不一致。
启用/禁用服务器
sh./bin/rake servers:enable[id] # 启用服务器 ./bin/rake servers:disable[id] # 禁用服务器(不再分配新会议)
隔离服务器(Cordon)
sh./bin/rake servers:cordon[id]
隔离后不再分配新会议,但保留现有会议,负载降为 0 后自动禁用,适用于维护升级。
修改负载乘数
sh./bin/rake servers:loadMultiplier[id,newLoadMultiplier]
立即轮询所有服务器
sh./bin/rake poll:all
手动触发服务器状态和负载检查,无需等待默认轮询间隔。
检查整体部署状态
sh./bin/rake status
输出服务器列表及关键指标(状态、在线状态、会议数、用户数等)。
升级 Scalelite 至最新版本:
shsystemctl restart scalelite.target
验证升级:访问 http(s)://<scalelite-hostname>/bigbluebutton/api,检查 <build> 标签中的版本号是否为最新。
如需 Scalelite 部署和配置的商业支持,可联系 Blindside Networks。
本项目使用 BigBlueButton,但未经 BigBlueButton Inc. 认可或认证。BigBlueButton 及 BigBlueButton 徽标是 https://bigbluebutton.org 的商标。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务