少女祈祷中...

什么是 Mumble

Open Source, Low Latency, High Quality Voice Chat
开源、低延迟、高质量的语音聊天软件

— Mumble 官网

安装 Murmur

Murmur 是 Mumble 的服务端名称,在新版本中更名为 Mumble Server

手动安装

1
2
3
4
5
wget https://github.com/mumble-voip/mumble/releases/download/1.3.4/murmur-static_x86-1.3.4.tar.bz2
tar -vxjf ./murmur-static_x86-1.3.4.tar.bz2
sudo mkdir /usr/local/murmur
sudo cp -r ./murmur-static_x86-1.3.4/* /usr/local/murmur/
sudo cp ./murmur-static_x86-1.3.4/murmur.ini /etc/murmur.ini

创建用户组

1
2
3
4
5
sudo groupadd -r murmur
sudo useradd -r -g murmur -m -d /var/lib/murmur -s /sbin/nologin murmur
sudo mkdir /var/log/murmur
sudo chown murmur:murmur /var/log/murmur
sudo chmod 0770 /var/log/murmur

/etc/systemd/system/ 中新建 murmur.service ,并键入以下内容,用于创建 Murmur 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Mumble Server (Murmur)
Requires=network-online.target
After=network-online.target mariadb.service time-sync.target

[Service]
User=murmur
Type=forking
ExecStart=/usr/local/murmur/murmur.x86 -ini /etc/murmur.ini
PIDFile=/var/run/murmur/murmur.pid
ExecReload=/bin/kill -s HUP $MAINPID

[Install]
WantedBy=multi-user.target

/etc/tmpfiles.d/ 中新建 murmur.conf,并键入以下内容

1
d /var/run/murmur 775 murmur murmur

为防止日志过多,最好进行日志轮换,在 /etc/logrotate.d/ 中新建 murmur,并键入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
/var/log/murmur/*log {
su murmur murmur
dateext
rotate 4
missingok
notifempty
sharedscripts
delaycompress
postrotate
/bin/systemctl reload murmur.service > /dev/null 2>/dev/null || true
endscript
}

其他安装方式

CentOS

CentOS 7 中可以使用 yum 指令安装 Murmur
Murmur 在默认的 CentOS 7 库中不存在,因此需安装 EPEL 库

1
sudo yum install epel-release

执行下面指令安装 Murmur

1
yum installl murmur

Ubuntu

Ubuntu 下可以使用 apt 指令安装 Murmur

先增加仓库

1
2
sudo add-apt-repository ppa:mumble/release
sudo apt-get update

安装 mumble server

1
sudo apt-get install mumble-server

进入基本配置向导

1
sudo dpkg-reconfigure mumble-server

其中,会依次配置 自启动 - 网络优先级 - SuperUser 密码

配置 Murmur

修改 Murmur 配置文件,通常位于 /etc/ 下,名为 murmur.inimumble-server.ini

1
2
3
4
5
6
7
8
9
database=/var/lib/murmur/murmur.sqlite	# 服务器数据库存储位置
logfile=/var/log/murmur/murmur.log # 服务器日志文件存储位置
pidfile=/var/run/murmur/murmur.pid # 服务器 pid 文件存储位置
port=64738 # 服务器端口,默认为 64738
host=mumble.demo.com # 服务器地址,如果不设置则会轮询所有可用地址
serverpassword=demo # 服务器密码
users=10 # 服务器最大人数
welcometext="Hello World" # 进服欢迎语
registerName=Mumble Server # 服务器根频道名称

在防火墙中打开 64738 的 TCP 和 UDP 端口

1
2
3
4
# CentOS
sudo firewall-cmd --permanent --add-port=64738/tcp
sudo firewall-cmd --permanent --add-port=64738/udp
sudo firewall-cmd --reload

如果使用阿里云等服务商,还需在控制台中放行 64738 的 TCP 和 UDP 端口

启动 Murmur

输入以下指令启动 Murmur

1
sudo systemctl start murmur.service	# 服务名根据自己实际情况修改

输入以下指令关闭 Murmur

1
sudo systemctl stop murmur.service

连接至 Murmur

普通用户

下载 Mumble 客户端,然后在 服务器 - 连接 中添加服务器

  • 地址:mumble.demo.com
  • 端口:64738
  • 用户名:你的用户名(在服务器中显示的名字)
  • 别名:对这个连接的备注

点击确认后连接即可

超级用户

设置超级用户的密码

1
2
/usr/local/murmur/murmur.x86 -ini /etc/murmur.ini -supw superuserpassword [srv]
# 将 superuserpassword 修改为自己的密码

服务器 - 连接 中添加服务器

  • 地址:mumble.demo.com
  • 端口:64738
  • 用户名:SuperUser
  • 密码:你的密码
  • 别名:对这个连接的备注

点击确认后连接即可

注意,超级用户强制禁言且不可更改名称

相关问题

使用域名连接报错

如果 Murmur 使用了没有进行 ICP 备案的域名,在连接时可能会误遭到拦截并出现如下报错:

1
2
Connection closed: The remote host closed the connection [1]	# 服务端报错
连接服务器失败:The remote host closed the connection # 客户端报错

由于这个报错没头没尾的,整的我压根不清楚是什么出了问题
我一开始以为是我 DNS 有问题,或者我 Murmur 配置有问题,最后在我朋友 @NaCl 的帮助下才发现是因为我用的域名没有备案
具体报错分析移步 Mumble无法通过域名连接到服务器 - NaCl技术分享

关于该问题,有如下几种解决方法:

  • 对域名进行 ICP 备案
  • 把服务器迁移到大陆之外
  • 改为使用 IP 进行访问

注册用户的数据迁移问题

注册用户在更换设备时数据会丢失,是因为 Mumble 对用户的认证是通过证书而不是通过 ID,因此即使在新设备上使用原 ID 仍不能将数据迁移过去,甚至可能会因证书不匹配而拒绝连接

解决方法:
在旧设备上选择 配置 - 证书向导 - 导出当前证书,将导出的证书复制到新设备
在新设备上选择 配置 - 证书向导 - 导入证书,将复制过来的证书导入进去即可

分享