介绍

  Mumble 是一款开源、低延迟、高音质的用于语音通信的 VoIP 应用程序。它主要是为游戏玩家设计的,并且是十多年前率先建立了真正低延迟语音通信的工具。Murmur 是 Mumble 的服务器组件。

准备工作

创建用户组与用户

groupadd -r murmur; useradd -r -g murmur -m -d /var/lib/murmur -s /sbin/nologin murmur

Debian 无需此操作

创建目录与权限结构

mkdir /usr/local/murmur; mkdir /var/log/murmur
chown -R murmur:murmur /var/log/murmur; chmod 0770 /var/log/murmur

安装

yum install -y bzip2
wget https://github.com/mumble-voip/mumble/releases/download/1.3.4/murmur-static_x86-1.3.4.tar.bz2
tar jxvf murmur-static_x86-1.3.4.tar.bz2
cp -R murmur-static_x86-1.3.4/* /usr/local/murmur
cp murmur-static_x86-1.3.4/murmur.ini /etc/murmur.ini

Debian:
apt update
apt install -y mumble-server

修改配置 vi /etc/murmur.ini

Debian:
nano /etc/mumble-server.ini
database=
logfile=/var/log/murmur/murmur.log
pidfile=/var/run/murmur/murmur.pid

; for Debian
; database=/var/lib/mumble-server/mumble-server.sqlite
; icesecretwrite=
; logfile=/var/log/mumble-server/mumble-server.log
; pidfile=/run/mumble-server/mumble-server.pid

welcometext="<br /><span style="color:#fbbc05">Mumble 是一个免费、开源的语音聊天应用程序,具有低延迟和高音质的特点。<br>它是十多年前首个实现真正低延迟语音通信的 VoIP 应用程序,低延迟和游戏并不是它唯一擅长的领域。</span><br /><br /><a href="https://blog.benhon.net/mumble.html"><span style="color:#349c50"><b>查看 Mumble 使用指南</b></span></a>"
;welcometext="<br /><span style="color:#fbbc05">Mumble is a free, open source, low latency, high quality voice chat application.<br>Mumble was the first VoIP application to establish true low latency voice communication over a decade ago. But low latency and gaming are not the only use cases it shines in.</span><br /><br /><a href="https://blog.benhon.net/mumble.html"><span style="color:#349c50"><b>View User's Guide</b></span></a>"

port=64738
;host=
serverpassword=
bandwidth=72000
timeout=30
users=50
;usersperchannel=12
messageburst=5
messagelimit=1
allowping=true
;rememberchannel=true
;textmessagelength=5000
;imagemessagelength=131072
;allowhtml=false
logdays=7

; 注册为公共服务器
;registerName=Mumble Server
;registerPassword=secret
;registerUrl=http://benhon.net
;registerHostname=static IP addresses
;registerLocation=CN

sslCert=/etc/nginx/ssl/benhon.net.crt
sslKey=/etc/nginx/ssl/benhon.net.key

uname=murmur
; for Debian
; uname=mumble-server

; 如果启用,则会向客户端发送有关服务器版本和操作系统的信息。
;sendversion=False

; 请注意,suggest* 选项出现在 1.2.3 之后,并且对客户端版本 1.2.3 和更早版本没有影响。
; 您可以为服务器设置建议的最低版本,如果客户端不满足最低要求,则在客户端连接时会在日志中通知客户端。
; suggestVersion 版本格式 X.X.X.
;suggestVersion=

; 设置为 true 将警告所有未启用位置音频的用户,服务器管理员建议启用它。
; 将其设置为 false 将具有相反的效果,如果您不关心用户是否启用位置音频,请将其设置为空白。
;suggestPositional=

; 设置为 true 将警告所有未启用即按即说的用户,服务器管理员建议启用它。
; 将其设置为 false 将产生相反的效果,如果您不关心用户是否启用 PTT,请将其设置为空白。
;suggestPushToTalk=

; 如客户端在 autobanTimeframe 秒内尝试 autobanAttempts 次连接则会被禁封 autobanTime 秒;
; 将 autobanAttempts 或 autobanTimeframe 设置为 0 则禁用此功能。
autobanAttempts=10
autobanTimeframe=120
autobanTime=300

; 您可以在此处配置Ice的任何配置选项。我们建议保留默认值。
; 请注意,此部分必须位于配置文件的最后。
[Ice]
Ice.Warn.UnknownProperties=1
Ice.MessageSizeMax=65536

设置防火墙

Murmur 监听 64738 端口,使用 TCP 与 UDP 协议,添加 iptables 放行规则。

/sbin/iptables -I INPUT -p tcp --dport 64738 -j ACCEPT
/sbin/iptables -I INPUT -p udp --dport 64738 -j ACCEPT
service iptables save

运行

/usr/local/murmur/murmur.x86 -fg -ini /etc/murmur.ini

Debian:
ll /etc/init.d/
systemctl stop mumble-server
systemctl disable mumble-server

/usr/sbin/murmurd -fg -ini /etc/mumble-server.ini

或
systemctl status mumble-server
systemctl start mumble-server

使用参数 -fg 将使 Murmur 运行于前台,方便查看 console 中显示的 SuperUser 密码。不使用参数 -fg 的话,Murmur 默认运行于后台,看不到 console 输出的信息。

SuperUser 密码

SuperUser 是服务器最高权限的管理员。SuperUser 密码只会在 Murmur 第一次运行时随机生成并显示在 console。当然,在日志中也可查询到,类似如下字样:

2015-10-15 20:37:34.805 1 => Password for 'SuperUser' set to 'EgYANjexEMyb'

重置 SuperUser 密码

如果遗失了 SuperUser 的密码,可以使用指令重置。

/usr/local/murmur/murmur.x86 -fg -ini /etc/murmur.ini -supw <password>

此指令只用于重置 SuperUser 密码,并不会运行 Murmur。运行 Murmur 时不要使用 -supw 选项。

进程守护

这里需要用到进程管理工具 Supervisor。它会在后台监控 Murmur 进程,一旦发现 Murmur 异常终止便自动重新启动。这样就可以保证 Mumble 语音通讯服务一直在线。参照 进程管理工具 Supervisor

管理服务器

使用 SuperUser 登入

具体操作参照 Mumble 使用指南 - 连接服务器

superuser_login
superuser_login

SuperUser 用户无法参与语音聊天,SuperUser 只能管理服务器。

superuser_ui
superuser_ui

新增管理员用户

能不能实现一个账户又能语音聊天,同时不用切换到 SuperUser 又能管理服务器呢?答案是肯定的。退出 SuperUser,以一个新用户名登入服务器(例如 BenhoN):

newuser_login
newuser_login

登入后,注册到服务器,这样用户名会被独占,其他 Mumble 用户将无法使用此用户名登入到服务器。

user_reg
user_reg

同时备份 Mumble 客户端证书,因为独占的用户名与用户的权限是与客户端证书绑定的,所以请妥善保管证书。打开菜单“配置” > “证书向导” > “导出当前证书”。

现在,切换到 SuperUser 登入服务器,鼠标右键点击大厅名称,选择“编辑”,

lobby_edit
lobby_edit

点击“分组”选项卡,在“分组”下拉框中选择“admin”,然后在“成员”框中输入新用户 BenhoN 点击“添加”,点击“OK”保存退出。

add_admin
add_admin

这样新用户 BenhoN 就被添加到管理员组,拥有管理员权限了(如下图)。

newadmin_ui
newadmin_ui

ACL与权限组管理

Mumble 服务器提供了完善而又丰富的 ACL(访问控制列表)和用户权限管理,详细使用方法请参考官方文档 https://wiki.mumble.info/wiki/ACL_and_Groups/English

升级与备份

服务端升级时,新版的程序文件直接拷贝到安装目录 /usr/local/murmur/ 替换旧文件即可;备份时,只需备份配置文件 /etc/murmur.ini 与数据库文件 /var/lib/murmur/murmur.sqlite 即可。

注意,如果迁移到了新环境,记得修改 sqlite 文件的权限,以免 Murmur 因无法读取数据库而启动失败。

chown murmur:murmur /var/lib/murmur/murmur.sqlite

Debian:
chown mumble-server:mumble-server /var/lib/mumble-server/mumble-server.sqlite

其他

服务端下载

https://dl.mumble.info/latest/stable/server-linux-x86

服务端配置详解

murmur.ini.zip

客户端使用指南

Mumble 使用指南