BigBlueButton 配置文件完全指南:从本地覆盖机制到客户端日志采集实战
发布时间:2026/9/25 12:43:32 锦皓数字建站

教育音视频后端前端【免费下载链接】bigbluebuttonA complete web conferencing system for virtual classes and more!项目地址https://gitcode.com/gh_mirrors/bi/bigbluebutton点击查看免费下载本篇技术指南围绕 BigBlueButton 的配置文件体系展开系统梳理自 2.3 版本起引入的“默认配置 /etc/bigbluebutton本地覆盖”双轨机制逐一讲解bbb-web、bbb-apps-akka、bbb-html5、GraphQL 中间件、FreeSWITCH 与录制流程等核心组件的配置文件格式与覆盖方式并深入拆解 HTML5 客户端日志上报clientLog的完整落地步骤。读完本文你将掌握在不被升级包覆盖的前提下安全修改 BigBlueButton 各项配置的规范做法并能独立搭建一套客户端日志采集与监控链路。Overview为什么需要本地覆盖文件BigBlueButton 各组件在安装时会将默认配置写入系统目录如/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties、/usr/share/bbb-apps-akka/conf/application.conf等。直接修改这些文件虽然可行但当你升级到更新版本的 BigBlueButton 时新安装的软件包会以全新文件覆盖这些目录下的内容导致你的定制配置丢失。为此官方明确建议只修改覆盖文件override files位于/etc/bigbluebutton下。这样即使升级包重新写入默认配置你的本地定制也会在加载时被重新套用实现“升级不丢配置”。从源码结构看这一机制是各组件在启动时显式读取覆盖路径实现的。例如在 akka-bbb-apps/src/universal/conf/application.conf 中可以看到client { clientSettingsFilePath /usr/share/bigbluebutton/html5-client/private/config/settings.yml clientSettingsOverrideFilePath /etc/bigbluebutton/bbb-html5.yml }即默认配置文件与覆盖文件路径同时被声明运行时以覆盖文件优先。本地覆盖配置总览表下表列出各软件包的默认配置文件与对应的本地覆盖文件这是管理员日常最常查阅的一张表软件包默认配置覆盖文件说明/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties/etc/bigbluebutton/bbb-web.properties至少应包含通用配置securitySalt与serverURL/usr/share/bbb-apps-akka/conf/application.conf/etc/bigbluebutton/bbb-apps-akka.conf/usr/share/bbb-fsesl-akka/conf/application.conf/etc/bigbluebutton/bbb-fsesl-akka.conf/usr/share/bigbluebutton/html5-client/private/config/settings.yml/etc/bigbluebutton/bbb-html5.yml数组采用“替换式合并”自 2.4-rc-5 起/etc/default/bbb-graphql-server/etc/bigbluebutton/bbb-graphql-server.env可替换任意 Hasura 配置但HASURA_GRAPHQL_ADMIN_SECRET除外/usr/share/bbb-graphql-server/admin-secret—存放 Hasura 管理员密码HASURA_GRAPHQL_ADMIN_SECRET可直接编辑/usr/share/bbb-graphql-middleware/config.yml/etc/bigbluebutton/bbb-graphql-middleware.yml/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml/etc/bigbluebutton/turn-stun-servers.xml整体替换原文件/usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml/etc/bigbluebutton/bbb-webrtc-sfu/production.yml数组采用“替换式合并”/usr/local/bigbluebutton/bbb-pads/config/settings.json/etc/bigbluebutton/bbb-pads.json数组采用“替换式合并”/usr/share/bbb-shared-notes-server/config/default.yml/etc/bigbluebutton/bbb-shared-notes-server.yml/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml/etc/bigbluebutton/recording/recording.yml/usr/local/bigbluebutton/core/scripts/presentation.yml/etc/bigbluebutton/recording/presentation.yml/etc/cron.daily/bigbluebutton/etc/default/bigbluebutton-cron-config覆盖文件中只允许使用变量几点值得注意数组语义bbb-html5.yml、bbb-webrtc-sfu/production.yml、bbb-pads.json三处覆盖文件中的数组采用“替换式合并”merge by replacement即覆盖文件中定义的数组会整体替换默认数组而不是追加元素。这在覆盖如虚拟背景文件列表等配置时尤其关键。Hasura 特例bbb-graphql-server.env可以替换大部分 Hasura 配置但HASURA_GRAPHQL_ADMIN_SECRET例外它由/usr/share/bbb-graphql-server/admin-secret文件单独存放可直接编辑该文件修改管理员密码。bbb-webbigbluebutton.properties与bbb-web.properties配置格式与典型示例bbb-web是 BigBlueButton 的核心 Web 应用其默认配置位于/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties本地覆盖文件为/etc/bigbluebutton/bbb-web.properties。覆盖文件使用**键值对name/value pair**格式例如# # Use this file to override default entries in /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties # bigbluebutton.web.serverURLhttps://droplet-7162.meetbbb.com securitySaltUsanRxRk938d02cTWfAqSM9Cvin7bnzsREfqFfzpf2U只要在覆盖文件中写入上述内容无论升级包如何改写默认属性文件bbb-web都会以覆盖值为准。关键属性在源码中的体现默认属性文件 bigbluebutton-web/grails-app/conf/bigbluebutton.properties仓库内共 613 行中可以看到serverURL与securitySalt是大量派生配置的基座bigbluebutton.web.serverURL默认值为http://bigbluebutton.example.com它派生出一系列 URL 配置如defaultHTML5ClientUrl${bigbluebutton.web.serverURL}/html5client/、graphqlWebsocketUrl${bigbluebutton.web.serverURL}/graphql、graphqlApiUrl${bigbluebutton.web.serverURL}/api/rest、defaultLogoURL${bigbluebutton.web.serverURL}/images/logo.png等因此修改serverURL会联动影响客户端入口、GraphQL 连接与静态资源地址securitySalt默认值为示例字符串同时被pageTokenSecret${securitySalt}引用作为签名与令牌生成的共享密钥文件还包含大量可直接覆盖的运维参数例如maxNumPages200演示文稿最大页数、maxFileSizeUpload30000000上传文件大小上限 30MB、numConversionThreads5演示文稿转换线程数、numFileProcessorThreads2上传处理线程数等这些都可以在bbb-web.properties中按需覆盖。bbb-apps-akka 与 bbb-fsesl-akkaHOCON 格式覆盖bbb-apps-akka会议室核心逻辑与bbb-fsesl-akkaFreeSWITCH ESL 桥接的默认配置文件均为 HOCON 格式的application.conf覆盖文件使用相同的格式并在文件开头include默认配置例如/etc/bigbluebutton/bbb-apps-akka.conf// include default config from upstream include /usr/share/bbb-apps-akka/conf/application.conf // you can customize everything here. API endpoint and secret have to be changed // This file will not be overridden by packages services { bbbWebAPIhttps://bbb.example.com/bigbluebutton/api sharedSecretUsanRxRk938d02cTWfAqSM9Cvin7bnzsREfqFfzpf2U }通过include先载入上游默认配置再对其中的字段进行覆盖即可保证升级后其余默认值仍然生效。对照仓库中的默认配置 akka-bbb-apps/src/universal/conf/application.conf可以看到services块中实际存在的字段services { bbbWebAPI https://192.168.23.33/bigbluebutton/api sharedSecret changeme checkSumAlgorithmForBreakouts sha256 graphqlMiddlewareAPI http://127.0.0.1:8378 }其中bbbWebAPI指向 bbb-web 的 API 端点sharedSecret必须与bbb-web.properties中的securitySalt保持一致否则 Akka 应用对 API 请求的校验签名将不通过graphqlMiddlewareAPI则指向本地 GraphQL 中间件默认127.0.0.1:8378与 bbb-graphql-middleware/config/config.yml 中server.listen_port: 8378对应。类似的akka-bbb-fsesl/src/universal/conf/application.conf 中freeswitch.esl块包含host、port8021、passwordClueCon等 ESL 连接参数同样可以在/etc/bigbluebutton/bbb-fsesl-akka.conf中覆盖。HTML5 客户端settings.yml与bbb-html5.ymlYAML 覆盖机制HTML5 客户端的默认配置位于/usr/share/bigbluebutton/html5-client/private/config/settings.yml覆盖文件为/etc/bigbluebutton/bbb-html5.yml采用 YAML 格式。覆盖文件中的任一设置都会覆盖默认文件中对应的设置例如以下内容将public.kurento.screenshare.constraints.audio覆盖为truepublic: kurento: screenshare: constraints: audio: true不需要把整个settings.yml复制过来——只需写上与默认结构同级的局部路径即可。HTML5 客户端日志clientLog配置与外部上报日志架构变化BigBlueButton 3.0在 BigBlueButton 3.0 中架构经过调整将负载从旧的前后端 bbb-html5 服务池转移走新服务的日志可以通过 systemd journal 查看journalctl -f -u bbb-html5.service由于 Akka-apps 承担了大部分业务逻辑关键信息可通过以下命令获得journalctl -f -u bbb-apps-akka.serviceSYSTEMD_LESSFRXMK journalctl -u bbb-graphql-middleware.service -f对于排查 GraphQL 中间件问题也很有用。客户端日志目标与参数为了辅助监控与调试HTML5 客户端可以通过logger函数将日志直接发送到 BigBlueButton 服务器。客户端 logger 支持两个日志目标console与external。名称默认值可接受值描述targetconsoleconsole, external日志发送到何处levelinfodebug, info, warn, error最低发送的日志级别高于此级别的日志也会发送url--当 target 为 external 时的日志接收端点method-POST, PUT使用 target external 时的 HTTP 方法enableRuntimeErrorLoggingfalsetrue / false为 true 时客户端安装全局监听器以捕获运行时错误、未处理的 Promise rejection 与资源加载失败默认值如下clientLog: console: { enabled: true, level: debug, enableRuntimeErrorLogging: false, } external: { enabled: false, level: info, url: https://LOG_HOST/html5Log, method: POST, throttleInterval: 400, flushOnClose: true, }对照仓库默认配置 bigbluebutton-html5/private/config/settings.yml可以看到clientLog块完全一致额外还有一个logTag: 字段用于给日志打标签。注意external目标默认处于禁用状态需要自行在服务器上做少量配置后启用。在服务器端搭建日志接收端点启用external输出后客户端会以POST方式把日志事件发送到url指定的端点。要在 BigBlueButton 服务器上为这个 POST 请求创建对应的端点先创建文件/etc/bigbluebutton/nginx/html5-client-log.nginx内容如下location /html5Log { access_log /var/log/nginx/html5-client.log postdata; echo_read_request_body; }再创建文件/etc/nginx/conf.d/html5-client-log.conf内容如下log_format postdata $remote_addr [$time_iso8601] $request_body;接着安装完整版 nginx因为echo_read_request_body指令需要nginx-full才可用$ sudo apt-get install nginx-full你可能还需要创建外部日志输出文件并赋予合适的权限与属主$ sudo touch /var/log/nginx/html5-client.log $ sudo chown www-data:adm /var/log/nginx/html5-client.log $ sudo chmod 640 /var/log/nginx/html5-client.log验证日志链路重启 BigBlueButton 并新开一个 HTML5 客户端会话$ sudo bbb-conf --restart随后应能在/var/log/nginx/html5-client.log中看到类似如下的日志99.239.102.0 [2018-09-09T14:59:1000:00] [{\x22name: .. }]在服务器上可以实时跟踪日志并做转义还原以便阅读$ tail -f /var/log/nginx/html5-client.log | sed -u -e s/\\x22//g -e s/\\x5C/\\/g一条典型日志条目内容如下JSON 格式包含请求者、会议、URL、User-Agent 等信息requesterUserId:w_klfavdlkumj8, fullname:Ios, confname:Demo Meeting, externUserID:w_klfavdlkumj8 }, url:https://demo.bigbluebutton.org/html5client/users, userAgent:Mozilla/5.0 (iPad; CPU OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1, count:1 }nginx站点配置与日志配置文件BigBlueButton 的 nginx 站点配置位于/etc/nginx/sites-enabled/bigbluebutton该配置将/var/www/bigbluebutton-default/assets设为默认站点用于托管客户端的静态资源如 logo、图标等。日志文件日志描述/var/log/nginx/bigbluebutton.access.log对 BigBlueButton HTML 页面的访问 Web 日志/var/log/nginx/error.lognginx 基于浏览器请求产生的错误日志FreeSWITCH语音相关配置FreeSWITCH 的配置文件如下/opt/freeswitch/conf/vars.xml用于设置主机名host与外部 IP 值。/opt/freeswitch/conf/autoload_configs/conference.conf.xml用于设置语音会议voice conference相关属性。/opt/freeswitch/conf/dialplan/default /opt/freeswitch/conf/dialplan/public分别对应默认与公网拨号计划。需要说明的是仓库中的 bbb-voice-conference/config/freeswitch/conf 目录保存了这些配置的模板/参考版本实际部署时以服务器上/opt/freeswitch/conf下的文件为准。录制Recording分阶段日志日志文件录制流程分为 archive归档、process处理、publish发布等多个阶段每个工作流与每次会议都有独立的日志文件命名格式为workflow-meetingId.log日志描述/var/log/bigbluebutton/archive- .logarchive 阶段的所有日志/var/log/bigbluebutton/presentation/process- .logprocess 阶段的所有日志/var/log/bigbluebutton/presentation/publish- .logpublish 阶段的所有日志从仓库中的录制脚本 record-and-playback/core/scripts/README 可以看到各阶段脚本archive 归档、process 处理、publish 发布运行时会分别写入~/temp/log/archive-meeting-id.log、~/temp/log/presentation/process-meeting-id.log等对应文件与文档所述命名规则一致。录制配置覆盖录制相关配置同样支持覆盖默认的/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml对应/etc/bigbluebutton/recording/recording.yml默认的/usr/local/bigbluebutton/core/scripts/presentation.yml对应/etc/bigbluebutton/recording/presentation.yml。仓库中的 record-and-playback/core/scripts/bigbluebutton.yml 展示了该文件的关键字段例如raw_audio_src: /var/freeswitch/meetings、raw_presentation_src: /var/bigbluebutton等各媒体类型的原始数据来源目录notes_formats笔记归档格式支持 etherpad、html、pdf、txt、doc、odt与notes_endpointanonymize_chat/anonymize_chat_moderators聊天消息匿名化开关可用 meeting create 的 meta 参数覆盖video_compositing_parallel_workers视频合成并行 worker 数与steps录制步骤流转关系。其他覆盖文件速查bbb-graphql-server 与 bbb-graphql-middleware/etc/default/bbb-graphql-server的覆盖文件为/etc/bigbluebutton/bbb-graphql-server.env可以替换任何 Hasura 配置唯独HASURA_GRAPHQL_ADMIN_SECRET除外——该值存放在/usr/share/bbb-graphql-server/admin-secret文件中可直接编辑。/usr/share/bbb-graphql-middleware/config.yml的覆盖文件为/etc/bigbluebutton/bbb-graphql-middleware.yml。从仓库默认配置 bbb-graphql-middleware/config/config.yml 看其主要包含server监听地址与端口、各类限流与查询深度上限、redis连接信息、hasuraGraphQL 端点ws://127.0.0.1:8185/v1/graphql、graphql-actions、auth_hook、session_vars_hook等配置块。其他组件/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml由/etc/bigbluebutton/turn-stun-servers.xml整体替换非合并用于配置 TURN/STUN 服务器列表。/usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml覆盖文件为/etc/bigbluebutton/bbb-webrtc-sfu/production.yml数组按替换式合并。/usr/local/bigbluebutton/bbb-pads/config/settings.json覆盖文件为/etc/bigbluebutton/bbb-pads.json数组按替换式合并。/usr/share/bbb-shared-notes-server/config/default.yml覆盖文件为/etc/bigbluebutton/bbb-shared-notes-server.yml。/etc/cron.daily/bigbluebutton覆盖文件为/etc/default/bigbluebutton-cron-config且覆盖文件中只允许使用变量。总结安全配置的三条准则只改覆盖文件所有自定义配置一律写入/etc/bigbluebutton下对应的覆盖文件绝不直接编辑/usr/share、/usr/local下的默认文件确保升级时配置不丢失。按格式覆盖bbb-web用键值对、Akka 应用用带include的 HOCON、HTML5 客户端用 YAML、cron 配置只用变量覆盖文件必须与默认文件保持同构涉及数组时牢记“替换式合并”语义。改动后验证修改bbb-web/ Akka 类配置后建议执行sudo bbb-conf --restart重启相关服务并通过journalctl、/var/log/bigbluebutton与/var/log/nginx下的日志确认配置生效与功能正常。赞分享教育音视频后端前端【免费下载链接】bigbluebuttonA complete web conferencing system for virtual classes and more!项目地址https://gitcode.com/gh_mirrors/bi/bigbluebutton点击查看免费下载相关推荐Fluentd配置实战从日志采集到文件输出的完整指南Fluentd配置实战从日志采集到文件输出的完整指南 你是否还在为系统日志分散在不同服务器难以集中管理而烦恼是否尝试过编写复杂脚本却依然无法实时追踪日志变化日志分析可观测性后端Grafana Loki 日志收集实战Fluentd 客户端配置指南Grafana Loki 日志收集实战Fluentd 客户端配置指南 前言 在云原生时代日志管理是系统可观测性的重要组成部分。Grafana Loki 作为可观测性日志分析后端微服务对象存储云原生告别日志困境FastDFS客户端日志配置完全指南告别日志困境FastDFS客户端日志配置完全指南 你是否还在为FastDFS客户端日志混乱而头疼上传文件失败时找不到关键错误信息本文将带你一步掌握Fast分布式文件系统存储后端上一篇如何高效获取Steam交易卡牌HourBoostr与SingleBoostr全攻略下一篇YouTube.js 源码解析SideEffectMode 类型与 JS 提取器的副作用安全策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。