plugNmeet 2.5.3 配置参数详解
逐节讲清 plugNmeet 2.5.3 主配置 config.yaml:client 鉴权、LiveKit/NATS/Redis/MariaDB 对接、上传录制与 AI insights 全参数表,并实测验证修改配置重启生效链路。
plugNmeetWebRTC视频会议2026/10/26
plugNmeet 2.5.3 配置参数详解
目标:逐节讲清 plugNmeet 2.5.3 主配置文件
config.yaml的每个配置节——参数含义、默认值、取值约束与生产建议,并实测验证「修改配置 → 重启服务 → 参数生效」的完整链路。
一、环境信息
- plugNmeet 服务端 v2.5.3(官方镜像与源码双查证),配置文件以官方样例
config.yaml(tag v2.5.3)为基准 - 依赖组件:LiveKit 1.13.x、NATS 2.15、Redis 8、MariaDB 12.3
- 实测部署形态:Linux 宿主机上的 systemd 服务与编排部署各一套,参数行为一致(配置解析在服务端二进制内,与部署形态无关)
- 实测时间:2026-10-26
🔗 配置文件的获取与放置位置见 《Ubuntu 24.04 安装 plugNmeet 2.5.3 指南》(裸机)与 《plugNmeet 2.5.3 Docker Compose 部署指南》(编排);组件背景见 《plugNmeet 2.5.3 介绍与选型指南》。
二、加载方式与生效规则
- 启动时用
--config指定:plugnmeet-server --config /opt/plugNmeet/config.yaml,容器部署则挂载进/app/config.yaml。 - YAML 解析失败或必填项缺失时服务直接拒绝启动,日志给出首个错误位置;不会「带病降级运行」。
- 修改配置后必须重启服务进程才生效(无热加载)。实测验证:
$ grep -A2 'prometheus:' config.yaml | head -3 # enable: true 时
prometheus:
enable: true
metrics_path: "/metrics"
$ curl -s -o /dev/null -w 'metrics HTTP %{http_code}\n' http://127.0.0.1:8145/metrics
metrics HTTP 200
# 把 enable 改为 false 并重启服务
$ curl -s -o /dev/null -w 'metrics after disable: HTTP %{http_code}\n' http://127.0.0.1:8145/metrics
metrics after disable: HTTP 404
# 恢复 enable: true 并重启
$ curl -s -o /dev/null -w 'metrics restored: HTTP %{http_code}\n' http://127.0.0.1:8145/metrics
metrics restored: HTTP 200
- 配置中的路径全部相对「服务进程工作目录」(systemd 看
WorkingDirectory,容器默认/app);本文示例统一用绝对路径或容器内约定路径,避免歧义。
三、配置节总览
| 节 | 作用 | 关键参数 |
|---|---|---|
client | Web/API 监听与鉴权、Webhook、Prometheus、代理、版权 | port、api_key、secret |
room_default_settings | 新建房间的默认限制 | max_duration、max_participants |
log_settings | 日志文件与轮转 | log_file、log_level |
livekit_info | 对接 LiveKit SFU | host、api_key、secret |
livekit_sip_info | 电话语音网关(SIP) | enabled、trunk_name |
redis_info | Redis 连接与键 TTL | host、default_ttl |
database_info | MySQL/MariaDB 连接 | host、db、prefix |
nats_info | NATS 总线、WebSocket、KV、频道 | nkey、nats_ws_urls、subjects |
upload_file_settings | 上传文件限制 | max_size、allowed_types |
recorder_info | 录制文件与回收站 | recording_files_path、ping_timeout |
analytics_settings | 会后分析文件 | enabled |
artifacts_settings | AI 摘要等产物存储 | storage_path、备份保留 |
insights | AI 转写/摘要/语音合成供应商 | providers |
hooks | 文件外部存储钩子(可选) | upload_hook、delete_hook |
四、client 节
client:
port: 8080
debug: false
path: "./client/dist"
api_key: PLUG_N_MEET_API_KEY
secret: PLUG_N_MEET_SECRET
token_validity: 10m
webhook_conf:
enable: true
url: ""
enable_for_per_meeting: true
prometheus:
enable: false
metrics_path: "/metrics"
username: ""
password: ""
proxy_conf:
enabled: false
proxy_header: "X-Forwarded-For"
trusted_proxy_ips: [ "127.0.0.0/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "::1/128" ]
copyright_conf:
allow_override: false
text: 'Powered by <a href="https://www.plugnmeet.org" target="_blank">plugNmeet</a>'
bbb_join_host: "https://PLUG_N_MEET_SERVER_DOMAIN"
| 参数 | 类型/默认 | 说明与建议 |
|---|---|---|
port | int,8080 | Web 与 API 共用监听端口;生产经反代 443 转发到这里 |
debug | bool,false | 排障期临时打开;会输出更多请求日志 |
path | string,./client/dist | 客户端静态资源目录;官方镜像已内置,自备客户端时指向含 index.html 的目录 |
api_key | string,必填 | 管理凭证之一:登录页输入、REST API API-KEY 头;建议 openssl rand -hex 32 生成 |
secret | string,必填 | 管理凭证之二:REST API HMAC-SHA256 签名密钥;泄露=任何人可建房/拉会 |
token_validity | duration,10m | 客户端 JWT 有效期;到前自动续期,无需调大 |
webhook_conf.enable/url | bool/string | 全局事件回调地址;enable_for_per_meeting: true 允许建房间时单 rooms 指定 |
prometheus.* | — | enable: true 后 metrics_path 开放 Prometheus 指标(实测 /metrics 200 返回 Go 运行时+业务指标);username/password 非空则启用 Basic Auth |
proxy_conf.enabled | bool,false | 反代后置 true;proxy_header 常用 X-Forwarded-For,trusted_proxy_ips 只填真实反代地址段(防伪造头) |
copyright_conf | — | 底部版权;allow_override: false 时 API 不可改文案;text 仅支持 b/i/em/strong/a 五种标签 |
bbb_join_host | string | BBB 兼容模式下拼 join URL 的对外域名;反代/负载均衡后填公网地址 |
五、room_default_settings 节
room_default_settings:
max_duration: 0
max_participants: 0
max_num_breakout_rooms: 6
max_preloaded_wb_file_size: 5mb
| 参数 | 默认 | 说明 |
|---|---|---|
max_duration | 0 | 新房间默认时长(分钟),0=不限;房间元数据可单独覆盖 |
max_participants | 0 | 单房间人数上限,0=不限(受 SFU 带宽约束,实际几十路小会议单机即可) |
max_num_breakout_rooms | 6 | 分组讨论数上限;最大 16,API 请求超出会被拒 |
max_preloaded_wb_file_size | 5mb | 白板预载文件大小上限(支持 kb/mb 单位写法) |
六、log_settings 节
log_settings:
log_file: "./log/plugNmeet.log"
maxsize: 20
maxbackups: 4
maxage: 2
log_level: "warn"
| 参数 | 默认 | 说明 |
|---|---|---|
log_file | ./log/plugNmeet.log | 日志路径,目录需存在且进程可写 |
maxsize / maxbackups / maxage | 20 / 4 / 2 | lumberjack 轮转:单文件 MB、保留份数、保留天数 |
log_level | warn | debug/info/warn/error/fatal/panic;生产建议 info(本文实测用 info),排障开 debug |
七、livekit_info 与 livekit_sip_info 节
livekit_info:
host: "https://PLUG_N_MEET_SERVER_DOMAIN/livekit"
api_key: LIVEKIT_API_KEY
secret: LIVEKIT_SECRET
livekit_sip_info:
enabled: false
trunk_name: "pnm-inbound-trunk"
phone_numbers: ["+12674777275","+441883778715"]
host:plugNmeet 调 LiveKit HTTP API 的地址。同机部署填http://127.0.0.1:7880(LiveKit 默认端口;本文实验改 8146);反代部署填对外域名路径。api_key/secret:必须与 LiveKit 配置keys:里的键值完全一致(实测口径:两边一致才能建房/发 token)。livekit_sip_info:电话进会(SIP 网关)功能,默认关闭;需要额外部署 livekit-sip 组件并配置phone_numbers入局白名单与可选media_encryption(0 不加密/1 协商/2 强制)。
八、redis_info 节
redis_info:
host: localhost:6379
username: ""
password: ""
db: 0
default_ttl: 24h
- 存房间实时状态(成员、聊天游标等),键带 TTL 自动过期——
default_ttl即键的默认存活期,24h适配常规会议时长;超长会议调大。 - 支持 Sentinel:去掉
host,改配sentinel_master_name+sentinel_addresses(凭据不同再加sentinel_username/password);use_tls: true走 TLS。
九、database_info 节
database_info:
driver_name: mysql
host: localhost
port: 3306
username: plugnmeet
password: DB_PLUGNMEET_PASSWORD
db: plugnmeet
prefix: pnm_
charset: "utf8mb4"
loc: "UTC"
conn_max_lifetime: 4m
max_open_conns: 10
| 参数 | 说明 |
|---|---|
driver_name | 目前仅 mysql(MariaDB 同协议兼容,官方脚本装的就是 MariaDB 12.3) |
prefix | 表名前缀,默认 pnm_;实测四张表:pnm_room_info、pnm_recordings、pnm_room_analytics、pnm_room_artifacts |
charset / loc | utf8mb4 + UTC 基本不用动(go-sql-driver 约定) |
conn_max_lifetime / max_open_conns | 连接池参数;并发大时调高 max_open_conns(如 50) |
replicas | 可选只读副本列表,读多写少场景分流 |
首次建库用源码仓 sql_dump/install.sql 导入,业务账号最小权限:plugnmeet.* 全权即可。
十、nats_info 节(v2.x 核心改动)
nats_info:
nats_urls:
- "nats://localhost:4222"
nats_ws_urls:
- "https://PLUG_N_MEET_SERVER_DOMAIN/ws"
account: NATS_ACCOUNT
nkey: NATS_NKEY_PRIVATE_KEY
auth_callout_issuer_private: NATS_CALLOUT_PRIVATE_KEY
auth_callout_xkey_private: NATS_CALLOUT_XKEY_PRIVATE_KEY
num_replicas: 1
room_stream_name: "pnm-room-stream"
default_ttl: 24h
subjects:
system_api_worker: "sysApiWorker"
system_js_worker: "sysJsWorker"
system_core_worker: "sysCoreWorker"
system_public: "sysPublic"
system_private: "sysPrivate"
chat: "chat"
whiteboard: "whiteboard"
data_channel: "dataChannel"
recorder:
recorder_channel: "recorderChannel"
recorder_info_kv: "pnm-recorderInfo"
transcoding_jobs_subject: "pnm-RecorderTranscoderJobs"
- v2.x 起客户端与会务事件全走 NATS:
nats_urls是服务端连总线,nats_ws_urls是浏览器直连的 WebSocket 入口(生产必须 wss 反代,客户端连不上则无法入会)。 account:NATS 侧账号名(如PNM),需与nats-server.conf一致。- 三个私钥参数:
nkey(SU种子)、auth_callout_issuer_private(SA种子)、auth_callout_xkey_private(SX种子)——私钥种子只出现在这里;对应U/A/X公钥写进nats-server.conf(实测填反直接重启循环,见部署指南篇)。 num_replicas:JetStream 副本数,单机 1;集群 3/5。subjects:各业务频道名;改动牵连多端,保持默认即可。recorder.*是录制组件的频道与 KV。
十一、upload_file_settings 节
upload_file_settings:
path: "./upload"
max_size: 50
max_size_whiteboard_file: 30
keep_forever: false
allowed_types: ["jpg","png","jpeg","svg","pdf","docx","txt","xlsx","pptx","zip","mp4","webm","mp3"]
max_size(聊天上传,MB)/max_size_whiteboard_file(白板上传,MB)分别限流;allowed_types按扩展名白名单。keep_forever: false时会后清理上传文件;需要文件留存(如教学课件)改true。- 多副本部署
path必须是共享存储(NFS 等),否则 A 节点上传 B 节点取不到。
十二、recorder_info 节
recorder_info:
recording_files_path: "./recording_files"
token_validity: 30m
ping_timeout: 8s
enable_del_recording_backup: true
del_recording_backup_path: "./recording_files/del_backup"
del_recording_backup_duration: 72h
recording_files_path必须与录制组件的copy_to_dir一致(录制器生成后落到这里,服务端负责索引与下载)。ping_timeout(8s)内收不到录制器心跳即判离线;token_validity是下载链接的有效期。- 删除保护:
enable_del_recording_backup: true时删除动作只移到del_recording_backup_path回收站,保留del_recording_backup_duration(默认 72h),误删可捞回。
十三、analytics_settings 与 artifacts_settings 节
analytics_settings:
enabled: true
artifacts_settings:
storage_path: "./artifacts"
token_validity: 10m
enable_del_artifacts_backup: true
del_artifacts_backup_path: "./artifacts/trash"
del_artifacts_backup_duration: 72h
analytics_settings.enabled: true后每次会议结束生成分析文件(入会/离会时间、功能使用、发言时长),落pnm_room_analytics与文件系统。artifacts_settings管 AI 产物(摘要、转写文本):目录结构{storage_path}/{service_type}/{room_id}/;回收站机制与录制一致。
十四、insights 节(AI 能力)
insights:
enabled: true
providers:
azure:
- id: "eastus_standard"
credentials:
api_key: "YOUR_AZURE_KEY_1"
region: "eastus"
google:
- id: "default-gemini-creds"
credentials:
api_key: "YOUR_GOOGLE_KEY"
features:
speech-synthesis:
provider: "azure"
id: "eastus_standard"
options:
voice-en: "en-US-JennyNeural"
ai_text_chat:
provider: "google"
id: "default-gemini-creds"
options:
chat_model: "gemini-2.5-pro"
summarize_model: "gemini-2.0-flash"
context_window: 5
meeting_summarizing:
provider: "google"
id: "default-gemini-creds"
options:
summarize_model: "gemini-2.0-flash"
- 结构分两层:
providers定义供应商账号池(azure 语音转写/合成、google Gemini 文本),features把各能力绑定到具体账号与模型。 - 每个 feature 可配
pricing(每百万字符/令牌单价)用于用量统计。 - 不用 AI 功能时置
enabled: false即可(本文实验即 false);注意编译产物链接了 Azure Speech SDK 动态库,运行时库文件仍需在位(裸机编译见安装指南篇 5.2 节)。
十五、hooks 节(外部存储,可选)
hooks 允许用自定义脚本接管文件生命周期,接入 S3/GCS 等外部存储,默认整节注释:
| 钩子 | 触发点 |
|---|---|
upload_hook | 会议文件上传后 |
download_hook | 文件下载前(可做签名/鉴权中转) |
delete_hook | 文件删除时 |
resumable_upload_hook | 断点续传场景 |
room_end_hook | 会议结束 |
每个钩子支持脚本列表、pool_size 并发、hook_timeout、is_one_shot(执行一次)。省略本节=全部本地盘存储(recorder_info/artifacts_settings 的路径)。
十六、安全基线建议
client.api_key/secret、database_info.password、LiveKit/NATS 全套密钥一律openssl rand -hex 32类强随机,禁止示例值上生产。config.yaml含全部明文密钥:属主600,备份与日志不落明文。- MariaDB/Redis/NATS 仅监听回环或内网,不对公网暴露(编排部署端口绑
127.0.0.1,裸机用监听地址控制)。 - 生产公网部署前置反代终结 TLS:Web 443→8145、NATS
wss /ws→8222、LiveKit 走官方 TURN/ICE 拓扑。
十七、常见问题
- 改了配置不生效:必须重启进程(systemd
restart或编排restart);实测/metrics开关即开即关(200↔404),可用作生效性探针。 - 启动即退,日志
invalid seed/Cannot unmarshal:YAML 语法或密钥对位错误;nkey 三参数须SU/SA/SX种子(公钥写 NATS 配置),缩进用空格不用 Tab。 - 客户端进不了会议:
nats_ws_urls不可达(浏览器侧 WebSocket);反代需支持并放行该路径的 Upgrade。 - 文件传不上去:
max_size超限、扩展名不在allowed_types、或path目录不可写。 - 录制文件没出现:
recorder_info.recording_files_path与录制组件copy_to_dir不一致,或录制器未连上(ping_timeout心跳超时日志可见)。
十八、参考链接
- 官方配置样例(v2.5.3):
config.yamlin https://github.com/mynaparrot/plugNmeet-server - 官方文档站配置章节:https://www.plugnmeet.org/docs/intro
- 站内相关文档:《plugNmeet 2.5.3 介绍与选型指南》、《Ubuntu 24.04 安装 plugNmeet 2.5.3 指南》、《plugNmeet 2.5.3 Docker Compose 部署指南》
章节目录