Mumble 1.3.4 配置参数详解
Mumble 服务端 murmur.ini 配置参数详解:ini 全局层与 D-Bus 数据库覆盖层双层模型、端口/访问/带宽/autoban/管理接口/TLS 证书逐节实测默认值、修改重启读回闭环与 # 注释符陷阱排障,基于 Ubuntu 22.04 + mumble-server 1.3.4 实测。
Mumble 1.3.4 配置参数详解
目标:逐节讲清 Mumble 服务端配置文件 murmur.ini(Ubuntu 22.04 上为 /etc/mumble-server.ini)的核心参数:默认值、修改方法、生效验证与踩坑点,所有参数值与验证输出均在 Ubuntu 22.04 + mumble-server 1.3.4 环境实测取得。已在 Ubuntu 22.04(x86_64)环境实测通过。
一、环境信息
- 操作系统:Ubuntu 22.04(jammy,x86_64);
- 软件版本:mumble-server 1.3.4-1ubuntu1(jammy/universe 仓库;上游最新稳定版为 1.5.939,见《Mumble 1.5.939 介绍与选型指南》,两代配置文件键名高度一致,1.5.x 新增键见各节说明);
- 配置文件:
/etc/mumble-server.ini(实测 15895 字节,root:mumble-server 0640); - 数据库:
/var/lib/mumble-server/mumble-server.sqlite(SQLite,服务专用用户mumble-server读写); - 服务单元:
mumble-server.service(systemd 经 sysv-generator 托管/usr/sbin/murmurd -ini /etc/mumble-server.ini); - 监听端口:64738(TCP+UDP 语音/控制)、6502(ICE 管理接口,本文实测启用后监听
127.0.0.1:6502); - 安装与部署过程见《Ubuntu 22.04 安装 Mumble 指南》。
二、前置条件
本篇的参数修改与验证需要一个运行中的 mumble-server 服务。验证服务是否就绪:
systemctl is-active mumble-server
ss -ltn | grep 64738
ss -lun | grep 64738
实测输出:
active
LISTEN 0 50 0.0.0.0:64738 0.0.0.0:*
UNCONN 0 0 0.0.0.0:64738 0.0.0.0:*
三条都符合预期(服务 active、TCP/UDP 均监听)即可继续;若未安装或未启动,先按《Ubuntu 22.04 安装 Mumble 指南》第四章完成部署。
另外,本篇大量使用 D-Bus 管理接口读回配置做「生效验证」,需确认 murmur 已注册到 system bus:
busctl list --no-pager | grep mumble
实测输出:
:1.17 7646 murmurd mumble-server :1.17 mumble-server.service - -
:1.18 7646 murmurd mumble-server :1.18 mumble-server.service - -
net.sourceforge.mumble.murmur 7646 murmurd mumble-server :1.17 mumble-server.service - -
💡 说明:
net.sourceforge.mumble.murmur名称由配置项dbus=system启用(1.3.4 的 Ubuntu 配置模板默认已开启该行;若被注释,去掉行首;并重启即可)。
三、参数查看与修改方式
Mumble 服务端配置分两层,理解分层是用好管理接口的前提(本层模型经实测确认):
- ini 文件层(全局默认层):
/etc/mumble-server.ini是 Murmur 进程的全局默认配置,对进程内全部虚拟服务器生效;修改后需systemctl restart mumble-server重载; - 数据库覆盖层(单服务器层):每个虚拟服务器可在 SQLite 数据库中按「键=值」覆盖全局默认,经 D-Bus 的
setConf/getConf读写,对运行中的服务立即生效、无需重启。
两层均可在运行期查询:ini 层用 Meta.getDefaultConf(),数据库层用 Meta.getConf(服务器ID, 键)。D-Bus 调用示例(查 ini 层全部默认值,输出为键值字典,节选实测):
dbus-send --system --print-reply \
--dest=net.sourceforge.mumble.murmur / net.sourceforge.mumble.Meta.getDefaultConf
实测输出(节选):
dict entry(
string "port"
string "64738"
)
dict entry(
string "users"
string "200"
)
修改 → 重启 → 读回的完整闭环实例(改欢迎文本、并发数、带宽三项):
1)编辑 /etc/mumble-server.ini(将对应行改为):
welcometext="<br/>Welcome to <b>Quzuo Voice</b> - powered by Murmur 1.3.4<br/>"
users=200
bandwidth=96000
2)重启生效:
sudo systemctl restart mumble-server
systemctl is-active mumble-server
实测输出:
active
3)用 D-Bus 读回验证(ini 层):
dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur / \
net.sourceforge.mumble.Meta.getDefaultConf | grep -A1 -E '"(welcometext|users|bandwidth)"'
实测输出:
string "bandwidth"
string "96000"
string "users"
string "200"
string "welcometext"
string "<br/>Welcome to <b>Quzuo Voice</b> - powered by Murmur 1.3.4<br/>"
三项读回值与所改一致,闭环成立。
数据库层的动态修改实例(不重启立即生效):
dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur / \
net.sourceforge.mumble.Meta.setConf int32:1 string:"welcometext" string:"per-server-override"
dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur / \
net.sourceforge.mumble.Meta.getConf int32:1 string:"welcometext"
实测输出:
method return time=1792582017.381599 sender=:1.43 -> destination=:1.53 serial=12 reply_serial=2
string "per-server-override"
清除覆盖(传空串即回到 ini 层默认):
dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur / \
net.sourceforge.mumble.Meta.setConf int32:1 string:"welcometext" string:""
dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur / \
net.sourceforge.mumble.Meta.getConf int32:1 string:"welcometext"
实测输出:
method return time=1792582017.386932 sender=:1.43 -> destination=:1.55 serial=14 reply_serial=2
string ""
⚠️ 注意:
getConf只查数据库覆盖层,未做覆盖时返回空串(实测首次查询welcometext/users等均返回空)——这不是配置丢失,实际生效值要向getDefaultConf(ini 层)查询。运维排障时先看覆盖层、再看 ini 层。
四、参数总览
murmur.ini 核心参数一览(默认值取自 Ubuntu 22.04 包模板与运行期 getDefaultConf 实测):
| 分类 | 键 | 默认值(实测) | 作用 |
|---|---|---|---|
| 网络 | port | 64738 | 监听端口(TCP+UDP 共用) |
| 网络 | timeout | 30 | 客户端无响应判定超时(秒) |
| 网络 | obfuscate | false | 流量混淆(伪装为随机包,抗 DPI) |
| 网络 | allowping | 模板注释(默认 false) | 允许客户端 ICMP 式 ping 探测 |
| 访问 | serverpassword | (空) | 服务器加入口令 |
| 访问 | username | [-=\w\[\]\{\}\(\)\@|\.]+ | 用户名正则白名单 |
| 访问 | channelname | [ \-=\w\#\[\]\{\}\(\)\@|]+ | 频道名正则白名单 |
| 访问 | rememberchannel | true | 记住用户上次所在频道 |
| 容量 | users | 100(模板)/200(本文已改) | 最大并发用户数 |
| 容量 | bandwidth | 72000(模板)/96000(本文已改) | 单用户语音带宽上限(bps) |
| 体验 | welcometext | 模板欢迎语 | 客户端进入时显示的欢迎文本 |
| 安全 | autobanAttempts / autobanTimeframe / autobanTime | 10 / 120 / 300 | 连接风暴自动封禁三参数 |
| 管理 | dbus | system | 启用 D-Bus 管理接口(system bus) |
| 管理 | ice | (模板 # 注释态) | ZeroC Ice 管理接口端点 |
| 管理 | icesecretread / icesecretwrite | (空) | Ice 连接读/写口令 |
| 存储 | database | /var/lib/mumble-server/mumble-server.sqlite | SQLite 库路径 |
| 存储 | logfile | /var/log/mumble-server/mumble-server.log | 日志文件 |
| TLS | sslCert / sslKey | (空=自动生成自签证书) | 服务器证书与私钥路径 |
| 进程 | pidfile | 模板注释 | 守护进程 pid 文件路径 |
💡 技术拓展:参数名与「运行时键名」并非一一对应,最典型的是
serverpassword——ini 里写serverpassword=team-voice-2026,而 D-BusgetDefaultConf/setConf层的键名为password(实测读回:string "password"/string "team-voice-2026")。经 D-Bus 做数据库层覆盖时应使用运行时键名;直接编辑 ini 则用模板键名。
五、核心参数分类详解
5.1 网络与端口(port / timeout / obfuscate)
这一组决定服务端「在哪里听、怎么听」。默认配置(Ubuntu 模板实测):
port=64738
;timeout=30
;obfuscate=false
- port:TCP 与 UDP 共用端口;TCP 承载 TLS 加密的控制信令,UDP 承载语音。修改后必须同步放行防火墙两个协议,并用双命令验证(见 5.1.1);
- timeout:客户端心跳超时秒数,默认 30;弱网客户端频繁掉线时可适当调大;
- obfuscate:开启后语音包经混淆处理,外观近似随机字节,用于对抗运营商/防火墙的协议识别与 QoS 限速;代价是排障时抓包不可读。实测默认关闭。
5.1.1 端口修改闭环验证(以 64738 为例,改回验证思路相同):
sudo systemctl restart mumble-server
ss -ltn | grep 64738
ss -lun | grep 64738
实测输出:
LISTEN 0 50 0.0.0.0:64738 0.0.0.0:*
UNCONN 0 0 0.0.0.0:64738 0.0.0.0:*
两条都在才代表端口配置生效且双协议就绪。
5.2 认证与访问(serverpassword / username / channelname / rememberchannel)
serverpassword=
;username=[-=\w\[\]\{\}\(\)\@\|\.]+
;channelname=[ \-=\w\#\[\]\{\}\(\)\@\|]+
;rememberchannel=true
- serverpassword:加入口令。设为非空后客户端连接时需输入口令(实测设为
team-voice-2026后经getDefaultConf读回password => team-voice-2026,见第四章键名映射说明)。注意:若服务器要在公共服务器列表注册(registername/registerpassword 一节),该值必须保持为空; - username / channelname:用户名与频道名的正则白名单,正则不匹配的名字会被服务端拒绝。实测运行期默认值:
username = [-=\w\[\]\{\}\(\)\@\|\.]+
channelname = [ \-=\w\#\[\]\{\}\(\)\@\|]+
要点解读:channelname 允许空格而 username 不允许;两者都放行了 -\w[]{}()@| 等常见字符。收紧命名规范时改这两个正则即可(如频道只允许字母数字:channelname=[A-Za-z0-9]+),改后重启生效,可经 getDefaultConf 读回确认;
- rememberchannel:用户重连后自动回到上次频道,默认开启(模板注释态即为默认值 true)。
5.3 容量与带宽(users / bandwidth)
users=200
bandwidth=96000
- users:虚拟服务器最大并发。Ubuntu 模板默认 100,本文实测改为 200 并经 D-Bus 读回生效(
string "users"/string "200"); - bandwidth:单用户语音带宽上限(bit/s)。模板默认 72000;提升到 96000 可改善 Opus 高码率下的音质。容量规划要点:服务器出口带宽 ≈
bandwidth × 并发用户数(每用户向服务端推流一份、服务端向其余用户各转发一份,实际乘数随拓扑增长),小型团队(≤50 人同时在线)千兆内网无压力,公网部署按上行带宽倒推 users 上限。
修改后验证(与第三章闭环一致):
dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur / \
net.sourceforge.mumble.Meta.getDefaultConf | grep -A1 '"bandwidth"'
实测输出:
string "bandwidth"
string "96000"
5.4 欢迎文本(welcometext)
welcometext="<br/>Welcome to <b>Quzuo Voice</b> - powered by Murmur 1.3.4<br/>"
客户端连接成功后在文本聊天区显示的欢迎信息,支持有限 HTML(<b/>、<br/> 等)。实测改动后经 getDefaultConf 读回与所写一致(见第三章闭环)。多行文本直接写一行内嵌 <br/> 更易维护。
5.5 自动封禁(autobanAttempts / autobanTimeframe / autobanTime)
Ubuntu 模板中的说明与默认(实测模板注释原文):
; If a client attempts autobanAttempts connections in autobanTimeframe seconds,
; they will be banned for autobanTime seconds. This is a global ban, from all
; virtual servers on the Murmur process.
;
; To disable, set autobanAttempts or autobanTimeframe to 0. Commenting these
; settings out will cause Murmur to use the defaults:
;
;autobanAttempts = 10
;autobanTimeframe = 120
;autobanTime = 300
语义:120 秒内尝试连接 10 次失败,即全局封禁 300 秒(对 Murmur 进程内全部虚拟服务器生效,普通用户无感知、仅针对异常客户端)。互联网暴露部署时保持默认即可;内网受信环境可设 0 关闭,避免网关代理场景误伤。三键取消注释修改后重启生效。
5.6 管理接口(dbus / ice / icesecretread / icesecretwrite)
murmur 提供两套进程外管理通道,模板相关行(实测原文):
dbus=system
;ice="tcp -h 127.0.0.1 -p 6502"
;icesecretread=
;icesecretwrite=
- dbus=system:启用 D-Bus 管理接口并注册到 system bus(实测
busctl list可见net.sourceforge.mumble.murmur名称,方法清单含start/stop/newServer/setConf/getConf/setSuperUserPassword/getLog等 Meta 层与getPlayers/getChannels/addChannel/kickPlayer/setACL等 Server 层方法;调用实例见第三章与《Mumble 1.3.4 常用 CLI 命令与工具详解》); - ice:ZeroC Ice 端点。实测踩坑(重点):Ubuntu 22.04 模板里该行以
#开头(#ice="tcp -h 127.0.0.1 -p 6502"),而 murmur.ini 采用 Qt QSettings INI 语法只认;注释——#开头的行会被解析成键名#ice,主键ice为空,ICE 静默不启用且日志无任何报错。实测对照:保持#形态重启,ss -ltn | grep 6502无输出;改为无注释符的有效行后重启:
ice=tcp -h 127.0.0.1 -p 6502
sudo systemctl restart mumble-server
ss -ltn | grep 6502
实测输出:
LISTEN 0 4096 127.0.0.1:6502 0.0.0.0:*
- icesecretread / icesecretwrite:Ice 连接的读/写口令。Ice 协议本身无认证(模板注释原文:"Since there is no authentication with ICE, you should only use it if you trust all the users who have shell access to your machine"),生产暴露面建议设置
icesecretwrite并保持 Ice 端点只绑本机回环地址。
5.7 存储与日志(database / logfile)
database=/var/lib/mumble-server/mumble-server.sqlite
logfile=/var/log/mumble-server/mumble-server.log
;pidfile=
- database:SQLite 库路径,承载用户注册、频道结构、ACL、封禁与数据库层配置。备份即备份该文件(停服后拷贝一致性最好,运行期拷贝建议连
-wal/-shm一同处理); - logfile:服务端日志路径(包内默认经 init 脚本落到
/var/log/mumble-server/)。排障时最常用的两行——端口监听与启动完成:
grep -E "listening|Murmur" /var/log/mumble-server/mumble-server.log | tail -3
实测输出:
<W>2026-10-21 11:05:09.352 1 => Server listening on 0.0.0.0:64738
<W>2026-10-21 11:13:36.138 Murmur 1.3.4 (1.3.4-1ubuntu1) running on X11: Linux 6.8.0-138-generic: Booting servers
- pidfile:默认注释。由 systemd/init 脚本托管时无需手工开启。
5.8 TLS 证书(sslCert / sslKey)
;sslCert=
;sslKey=
两键留空时,Murmur 首次启动自动生成自签证书("Murmur Autogenerated Certificate v2"),存入 SQLite 并在控制连接上使用。实测经 OpenSSL 从 64738 端口读回的证书:
timeout 8 openssl s_client -connect 127.0.0.1:64738 </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -fingerprint -sha256
实测输出:
subject=CN = Murmur Autogenerated Certificate v2
issuer=CN = Murmur Autogenerated Certificate v2
notBefore=Oct 21 11:05:09 2026 GMT
notAfter=Oct 16 11:05:09 2046 GMT
sha256 Fingerprint=BF:A0:24:62:3D:4E:04:A7:1E:D1:F9:BA:C5:39:3B:AD:F8:0F:81:AB:B7:95:FC:A1:5B:6D:47:67:22:B3:A0:02
要点解读:自签证书有效期 20 年,客户端首次连接会提示并记忆该指纹(TOFU 信任模型);需要企业 CA 或 Let's Encrypt 证书时,将证书/私钥路径填入 sslCert/sslKey 并重启,客户端指纹提示会随之更换。生产建议固定证书以避免换机/重装后指纹变化引发全员告警。
六、生产配置模板
适用场景:50 人以内团队/社区的自托管语音服务器,8GB 内存、公网或专线接入。以下为整理后的推荐参数集(键值均经本文实测验证可生效):
; ===== 网络 =====
port=64738
timeout=30
obfuscate=false
; ===== 访问控制 =====
serverpassword=team-voice-2026
channelname=[ \-=\w\#\[\]\{\}\(\)\@\|]+
username=[-=\w\[\]\{\}\(\)\@\|\.]+
rememberchannel=true
; ===== 容量与质量 =====
users=50
bandwidth=96000
welcometext="<br/>Welcome to <b>Quzuo Voice</b><br/>"
; ===== 防滥用 =====
autobanAttempts = 10
autobanTimeframe = 120
autobanTime = 300
; ===== 管理接口 =====
dbus=system
ice=tcp -h 127.0.0.1 -p 6502
icesecretwrite=q1w2e3r4
; ===== 存储与日志 =====
database=/var/lib/mumble-server/mumble-server.sqlite
logfile=/var/log/mumble-server/mumble-server.log
逐项说明:users=50 按团队规模收紧上限防资源失控;bandwidth=96000 在音质与带宽间平衡(50 人并发约需上行 5Mbps 转发量级);serverpassword 挡住陌生连接,配合 SuperUser/ACL 做内部权限;ice 显式启用且只绑 127.0.0.1,并设置 icesecretwrite 口令(示例值按 §测试口令惯例,生产请更换);autoban 三键保持默认防连接风暴。落盘后执行重启与双端口验证:
sudo systemctl restart mumble-server
ss -ltn | grep -E "64738|6502"
ss -lun | grep 64738
实测输出(形态):
LISTEN 0 50 0.0.0.0:64738 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:6502 0.0.0.0:*
UNCONN 0 0 0.0.0.0:64738 0.0.0.0:*
七、常见问题(FAQ)
Q1:改了 ini 重启后行为没变?
按顺序排查两层:先用 Meta.getConf 查数据库覆盖层是否被早前的 setConf 覆盖(覆盖层优先于 ini);再用 Meta.getDefaultConf 确认 ini 值是否真正读入(读不到说明键名写错或行首残留了 #/; 注释符——见 5.6 节 ICE 的 # 坑)。实测中 getConf 未覆盖时返回空串,勿误判为「配置丢失」。
Q2:模板里 ; 和 # 注释混用,删哪个才生效?
murmur.ini 按 Qt QSettings INI 语法解析,注释符是 ;。以 # 开头的行不是注释,会被当作键名(如 #ice)处理。因此:想停用一个键,在行首加 ;;想启用一个键,必须删除行首的 # 或 ;(两者都要删干净),使行首直接是键名。
Q3:serverpassword 设置后客户端仍无需口令即可进入?
确认两点:其一,值已读入——getDefaultConf 应返回 password => 你的口令(注意运行时键名是 password);其二,数据库覆盖层没有 password => 空串 的旧覆盖(有则 getConf 层覆盖了 ini)。排除后重启服务再验证。
Q4:想换更高音质,动哪个参数?
调大 bandwidth(默认 72000,可到 96000 或更高)并同步评估上行带宽(≈ bandwidth × 转发份数),重启后经 getDefaultConf 读回确认。
Q5:证书指纹变了,全员客户端提示「证书不匹配」?
说明服务端证书被更换(重装系统/换了 sslCert)。这是 TOFU 机制的安全提示而非故障:管理员应把新指纹(openssl s_client 取回的 sha256 fingerprint,见 5.8 节实测)通过可靠渠道告知成员,确认一致后客户端接受新指纹。避免频繁变更的做法见 5.8 节要点。
八、参考链接
- 官方配置文档(murmur.ini 全量键):
https://wiki.mumble.info/wiki/Murmur.ini - 官方 Server 指南:
https://www.mumble.info/documentation/server/ - v1.5.939 发布公告(1.5 系配置演进):
https://www.mumble.info/blog/mumble-1.5.939/ - Ubuntu 模板文件:
/usr/share/doc/mumble-server/examples/mumble-server.ini(与 /etc/mumble-server.ini 同源,查询日期 2026-10-21) - 本专栏相关篇目:《Mumble 1.5.939 介绍与选型指南》、《Ubuntu 22.04 安装 Mumble 指南》