Teamspeak & Mumble 语音服务器的配置

2021-11-19 2617点热度 3人点赞

QQ 语音?YY 语音?Steam 语音?Discord 语音?我们总是需要一个本地可用的语音方案,而关于这个相对较好的主要有两个 Teamspeak 和 Mumble


1 、 Teamspeak 与 Mumble 的简介

TeamSpeak 是一套专有的 VoIP 软件,用户可以经由它与其他用户进行语音对话,很像电话会议。用户可以戴上耳机与麦克风进行通话。用户可以经由客户端软件连线到指定的服务器,在服务器内的频道进行通话。 通常 TeamSpeak 的用户大多为多人连线游戏的玩家,与同队伍的玩家进行通信。

Mumble 是一个网际协议通话技术软件,其使用目的是用于电子游戏的玩家通信。
它利用主从式架构允许用户在同一服务器与其他用户进行对话。它具有简单易用的管理接口,具备高清音质与音频延迟低的特性。所有通信皆被加密以确保用户的隠私安全。它是跨平台的自由及开放源代码软件,以 BSD 许可证发行的软件。

TeamSpeak 官网 https://www.teamspeak.com/zh-CN/

Mumble 官网 https://www.mumble.info/

Teamspeak 免费授权默认是 32 人/单服务器
Mumble 不限制用户数

Teamspeak 支持传送文件(虽然有安全隐患)支持云同步配置
Mumble 默认加密所有通讯,支持个性化,拥有中间件如 ICE 用以二次开发

两者基本相仿,从规模的角度,Teamspeak 作为商业软件,覆盖面更多。

许多 CSGO 战队使用的是 Teamspeak
许多 EVE 军团则使用的是 Mumble


2 、配置 Teamspeak 服务器

开始配置服务器

首先因为 安全因素 考虑,Teamspeak 官方明确警告用户 不要使用 Root 权限运行
所以在一切开始之前,我们需要创建一个 teamspeak 用户,并限制该用户的登录可能

useradd -s /usr/sbin/nologin -r -M -d /opt/teamspeak teamspeak
usermod -u 1500 teamspeak && groupmod -g 1500 teamspeak
mkdir /opt/teamspeak
chown -R teamspeak:teamspeak /opt/teamspeak

创建好用户后,我们需要下载 服务端程序文件 并分配权限属于 teamspeak 用户
这里图方便,将下载路径 URL 用 Bash 脚本提取出来,如果未来产生变化,可以自行去官方查找下载链接
官方下载地址 [ 链接 ]

cd /opt/teamspeak
wget -O teamspeak3.tar.bz2 $(curl https://www.teamspeak.com/en/downloads/#server | grep "/releases/server/" | grep "value" | awk -F "\"" '{print $4}' | grep linux_amd64)
tar xvpf teamspeak3.tar.bz2
mv teamspeak3-server_linux_amd64 /opt/teamspeak/teamspeak3
chown -R teamspeak:teamspeak /opt/teamspeak/teamspeak3

服务端文件已经安排完毕后,我们需要创建一个 许可证同意 文件
同时因为许可证检查方式的原因,我们还需要挂载动态分区(如果已经挂载了则不需要关注)
注意之后的所有操作,均需要切换到 teamspeak 用户身份下执行

cd /opt/teamspeak/teamspeak3
/usr/bin/mount -t tmpfs tmpfs /dev/shm
sudo -u teamspeak touch .ts3server_license_accepted

创建好 许可证同意 文件后,我们可以 第一次启动 Teamspeak 服务端(默认 Sqlite 方案)

sudo -u teamspeak ./ts3server_startscript.sh start
Starting the TeamSpeak 3 server
TeamSpeak 3 server started, for details please view the log file
root@localhost:/opt/teamspeak/teamspeak3#
------------------------------------------------------------------
                      I M P O R T A N T
------------------------------------------------------------------
               Server Query Admin Account created
         loginname= "serveradmin", password= "wwHnEqjT"
         apikey= "BABskzZob1Ob4m4cHKEH-a8rSxSnYB2NV3hnpd9"
------------------------------------------------------------------


------------------------------------------------------------------
                      I M P O R T A N T
------------------------------------------------------------------
      ServerAdmin privilege key created, please use it to gain
      serveradmin rights for your virtualserver. please
      also check the doc/privilegekey_guide.txt for details.

       token=PZtvVLbIJVU0GdQRRuR4GU9RWmW3RVgFjZJOsq5T
------------------------------------------------------------------

运行后我们使用 Ctrl + C 中断,然后检查上面的信息,信息每次都是随机生成的。
也可以通过访问 logs/ts3server_*.log 查看历史日志中包含的信息(记得删除初始化日志
以防万一,我们额外输入一次 关闭服务器 命令确保服务器已经关闭

sudo -u teamspeak ./ts3server_startscript.sh stop

刚刚的部分,我们可以看到很多信息,这里面的信息有两个很重要的部分
第一部分:服务端后台 CLI 使用的 登录账号 登陆密码 API 密钥
第二部分:语音频道最高管理员账号 Token(客户端登录后可以输入用以提高到最高权限)

关于 最高管理员账号 Token,详细文件在 doc/privilegekey_guide.txt 这个文件中,但是这个文件只是讲解,里面已经存在的一个 token 和你的服务器无关

两条信息保存后,一定要删除服务器日志中的密钥信息

但是到这里我们依然没有得到 Teamspeak 服务端 配置文件 ts3server.ini,因为默认不再生成了。
所以我们需要手动生成该配置文件 ts3server.ini

sudo -u teamspeak ./ts3server createinifile=1

此时会出现 服务端启动日志,并在结尾出现 ts3server has crashed 字样,可以忽略。

此时我们得到了完整的配置文件,关于这个文件,可以参考 [ 链接 ] 进行配置
注意该文件没有注释符号,也就意味着你无法使

machine_id=
default_voice_port=9987
voice_ip=
licensepath=
filetransfer_port=30033
filetransfer_ip=
query_port=10011
query_ip=0.0.0.0, ::
query_ip_allowlist=query_ip_allowlist.txt|query_ip_whitelist.txt
query_ip_denylist=query_ip_denylist.txt|query_ip_blacklist.txt
dbplugin=ts3db_sqlite3
dbpluginparameter=
dbsqlpath=sql/
dbsqlcreatepath=create_sqlite/
dbconnections=10
logpath=logs
logquerycommands=0
dbclientkeepdays=30
logappend=0
query_skipbruteforcecheck=0
query_buffer_mb=20
http_proxy=
license_accepted=0
serverquerydocs_path=serverquerydocs/
query_ssh_ip=0.0.0.0, ::
query_ssh_port=10022
query_protocols=raw,http,ssh
query_ssh_rsa_host_key=ssh_host_rsa_key
query_timeout=300
query_http_ip=0.0.0.0, ::
query_http_port=10080
query_https_ip=0.0.0.0, ::
query_https_port=10443
query_pool_size=2
mmdbpath=
logquerytiminginterval=0

同时,因为服务器已经初始化完毕,我们可以看到产生了更多文件。
由于创建用户使用 /sbin/nologin 该用户创建文件的 umask 为 666 而不是正常的 644,任何人都有写入权限!
当需要 迁移/升级 服务器时 ,第一部分文件是需要重点备份的文件 [ 链接 ]

root@localhost:/opt/teamspeak/teamspeak3# ll | grep "$(date +"%b %d" )"
drwxr-xr-x 10 teamspeak teamspeak     4096 Nov 19 14:14 ./
drwxr-xr-x  4 teamspeak teamspeak     4096 Nov 19 14:04 ../
drwx------  3 teamspeak teamspeak     4096 Nov 19 14:14 files/
-rw-rw-rw-  1 teamspeak teamspeak       14 Nov 19 14:14 query_ip_allowlist.txt
-rw-rw-rw-  1 teamspeak teamspeak        0 Nov 19 14:14 query_ip_denylist.txt
-rw-rw-r--  1 teamspeak teamspeak      835 Nov 19 14:16 ts3server.ini
-rw-r--r--  1 teamspeak teamspeak        0 Nov 19 14:06 .ts3server_license_accepted
-rw-r--r--  1 teamspeak teamspeak        0 Nov 19 14:28 licensekey.dat
-rw-r--r--  1 teamspeak teamspeak   203776 Nov 19 14:14 ts3server.sqlitedb
drwxrwxrwx  2 teamspeak teamspeak     4096 Nov 19 14:14 crashdumps/
drwx------  2 teamspeak teamspeak     4096 Nov 19 14:14 logs/
-rw-rw-rw-  1 teamspeak teamspeak     3243 Nov 19 14:14 ssh_host_rsa_key
-rw-rw-r--  1 teamspeak teamspeak        5 Nov 19 14:14 ts3server.pid

此时我们可以正式启动服务端,使用如下命令(包含配置文件指定)

sudo -u teamspeak ./ts3server_startscript.sh start inifile=ts3server.ini

启动后,记得额外放行公网服务端口。默认端口信息 [ 链接 ]

firewall-cmd --add-port=9987/udp --permanent
firewall-cmd --add-port=30033/tcp --permanent
firewall-cmd --reload 
9987/udp  用户语音传输端口 UDP (必选)
30033/tcp 用户文件传输端口
10011/tcp 服务器 API 通讯端口 (telnet) 
10022/tcp 服务器 API 通讯端口 (ssh)
10080/tcp 服务器 API 通讯端口 (http)
10443/tcp 服务器 API 通讯端口 (https)(不完整实现)

2.1 、 Systemd 管理 Teamspeak

使用脚本调度 Teamspeak 的操作方式比较繁琐,我们总是需要切换用户身份来运行,不注意就会导致权限问题
所以我们可以直接调度 Systemd 管理 Teamspeak

vim /etc/systemd/system/teamspeak.service
[Unit]
Description=Team Speak 3 Server
After=network.target
[Service]
WorkingDirectory=/opt/teamspeak/teamspeak3/
User=teamspeak
Group=teamspeak
Type=forking
PermissionsStartOnly=true
ExecStartPre=/usr/bin/mount -t tmpfs tmpfs /dev/shm
ExecStart=/opt/teamspeak/teamspeak3/ts3server_startscript.sh start inifile=ts3server.ini
ExecStop=/opt/teamspeak/teamspeak3/ts3server_startscript.sh stop
PIDFile=/opt/teamspeak/teamspeak3/ts3server.pid
RestartSec=15
Restart=always
[Install]
WantedBy=multi-user.target

配置完毕后我们可以使用 Systemd 管理 Teamspeak 服务。

systemctl enable teamspeak
systemctl start teamspeak
systemctl status teamspeak
systemctl stop teamspeak

2.2 、使用 Mariadb 方案

不只是 sqlite 我们还可以使用 Mariadb 方案配置 Teamspeak 。
但是因为 Teamspeak 默认是 32 人授权,所以很少有人使用这样的方式

首先我们需要创建 Mariadb 数据库用户和数据表,注意关于密码的部分一定要强密码

CREATE DATABASE teamspeak_database DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL ON teamspeak_database.* TO 'teamspeak_user'@'localhost' IDENTIFIED BY 'teamspeak_password';
FLUSH PRIVILEGES;
EXIT;
用户 teamspeak_user@localhost 
密码 teamspeak_password
数据库表 teamspeak_database

创建完毕后,我们需要修改 Teamspeak 配置文件,建议使用 sqlite 方案生成配置文件并修改,或者手动输入如下内容
如果你是 Mysql 用户,则需要将额外创建的配置文件名 从 ts3db_mariadb.ini 改为 ts3_mysql.ini

vim ts3server.ini
dbplugin=ts3db_mariadb
dbpluginparameter=ts3db_mariadb.ini
dbsqlpath=sql/
dbsqlcreatepath=create_mariadb/
dbconnections=10
vim ts3db_mariadb.ini
[config]
server='localhost'
port='3306'
username='teamspeak_user'
password='teamspeak_password'
database='teamspeak_database'

两个文件创建好后,我们需要将动态链接库文件复制到 Teamspeak 根目录下

cp /opt/teamspeak/teamspeak3/redist/libmariadb.so.2 /opt/teamspeak/teamspeak3/

做完以上操作后,我们就可以进行 第一次启动 Teamspeak 服务端


2.3 、 Teamspeak SRV 记录

有时候我们需要修改端口,但并不想让用户在域名后面加上端口号后缀

Teamspeak 是 支持解析 域名 SRV 记录 的,当然,它曾经还有一种方式 TSDNS 已经过时淘汰

Teamspeak 对 SRV 的解析顺序如下(Host temp_teamspeak.yourdomain.com

Resolve _ts3._udp.temp_teamspeak.yourdomain.com IN SRV
Resolve _tsdns.temp_teamspeak.yourdomain.com IN SRV
Resolve forward.yourdomain.com IN AAAA
Resolve forward.yourdomain.com IN A

当我们有需要时,直接在域名服务商增加 SRV 记录即可 [ 链接 ]

Name: _ts3.udp.temp_teamspeak.yourdomain.com
Priority: 10
Weight: 10
Port: 9987
Address: teamspeak.yourdomain.com

旧版本的 TSDNS 所需要的记录(已经被淘汰了)

Name: _tsdns.tcp.temp_yourdomain.com
Priority: 10
Weight: 10
Port: 41144
Address: tsdns.yourdomain.com

而如果你的 Teamspeak 服务器是主备关系的,那么你需要两个 SRV 记录,并指定不同优先级

例: yourdomain.com 配置 ts1 + ts2 双服务器,主 ts1
Name: _ts3.udp.temp_yourdomain.com
Priority: 10
Weight: 10
Port: 9987
Address: ts1.yourdomain.com
Name: _ts3.udp.temp_yourdomain.com
Priority: 20
Weight: 10
Port: 9987
Address: ts2.yourdomain.com

2.4 、 Teamspeak 修改默认语音端口

Teamspeak 3 默认的配置文件虽然可以被读取,但是 默认语音端口 因为第一次配置所以已经写入数据库 [ 链接 ]

所以我们需要在服务器启动后,通过命令手动更改 [ 链接 ]

首先需要登陆,参考默认端口,我们使用 SSH 的方式登录 10022 端口

ssh [email protected] -p 10022

登陆后可以得到 Teamspeak 服务端 Shell,在这里可以进行 信息变更(sid=0 是默认主机配置)

use sid=1 -virtual
serveredit virtualserver_port=19987
use sid=0

在修改完毕后,我们还需要重启服务

serverstop sid=1
serverstart sid=1

此时服务端已经修改了语音监听端口到 19987/udp ,可以通过 netstat -anopu 查看到

在这里常用的查看信息命令如下,父子集关系为 TS 主机 (host)->TS 实例 (instance)->TS 服务 (server)->TS 频道 (channel)

# 查看具体命令帮助
serveradmin> help use
Usage: use [sid={serverID}] [port={serverPort}] [-virtual] [client_nickname={nickname}]
       use {serverID} [-virtual] [client_nickname={nickname}]

Permissions:
  b_virtualserver_select

Description:
  Selects the virtual server specified with sid or port to allow further
  interaction. The ServerQuery client will appear on the virtual server and
  acts like a real TeamSpeak 3 Client, except it's unable to send or receive
  voice data.
  If your database contains multiple virtual servers using the same UDP port,
  use will select a random virtual server using the specified port.

Example:
  use sid=1
  error id=0 msg=ok


error id=0 msg=ok
# 查看主机信息状态
serveradmin> hostinfo
instance_uptime=736
host_timestamp_utc=1637636448
virtualservers_running_total=1
virtualservers_total_maxclients=32
virtualservers_total_clients_online=1
virtualservers_total_channels_online=1
connection_filetransfer_bandwidth_sent=0
connection_filetransfer_bandwidth_received=0
connection_filetransfer_bytes_sent_total=161977
connection_filetransfer_bytes_received_total=323954
connection_packets_sent_total=1572
connection_bytes_sent_total=79563
connection_packets_received_total=1576
connection_bytes_received_total=74572
connection_bandwidth_sent_last_second_total=82
connection_bandwidth_sent_last_minute_total=83
connection_bandwidth_received_last_second_total=84
connection_bandwidth_received_last_minute_total=88
error id=0 msg=ok
# 查看当前实例状态(文件传输端口)
serveradmin> instanceinfo
serverinstance_database_version=34
serverinstance_filetransfer_port=30033
serverinstance_max_download_total_bandwidth=18446744073709551615
serverinstance_max_upload_total_bandwidth=18446744073709551615
serverinstance_guest_serverquery_group=1
serverinstance_serverquery_flood_commands=10
serverinstance_serverquery_flood_time=3
serverinstance_serverquery_ban_time=600
serverinstance_template_serveradmin_group=3
serverinstance_template_serverdefault_group=5
serverinstance_template_channeladmin_group=1
serverinstance_template_channeldefault_group=4
serverinstance_permissions_version=24
serverinstance_pending_connections_per_ip=0
serverinstance_serverquery_max_connections_per_ip=5
error id=0 msg=ok
# 切换服务实例(参考 mysql 的 use database;)
serveradmin> use sid=1
error id=0 msg=ok
serveradmin@9987(1):online>
# 查看当前服务简介(虚拟服务 ID,虚拟服务语音端口,虚拟服务名)
serveradmin@9987(1):online> serverlist
virtualserver_id=1
virtualserver_port=19987
virtualserver_status=online
virtualserver_clientsonline=1
virtualserver_queryclientsonline=0
virtualserver_maxclients=32
virtualserver_uptime=758
virtualserver_name=TeamSpeak\s]I[\sServer
virtualserver_autostart=1
virtualserver_machine_id
error id=0 msg=ok
# 查看当前服务信息(虚拟服务的与客户相关配置)
serveradmin@9987(1):online> serverinfo
virtualserver_unique_identifier
virtualserver_name=TeamSpeak\s]I[\sServer
virtualserver_welcomemessage=Welcome\sto\sTeamSpeak,\scheck\s[URL]www.teamspeak.com[\/URL]\sfor\slatest\sinformation
virtualserver_maxclients=32
virtualserver_password
virtualserver_created=0
virtualserver_codec_encryption_mode=0
virtualserver_hostmessage
virtualserver_hostmessage_mode=0
virtualserver_filebase=files
virtualserver_default_server_group=0
virtualserver_default_channel_group=0
virtualserver_flag_password=0
virtualserver_default_channel_admin_group=0
virtualserver_max_download_total_bandwidth=18446744073709551615
virtualserver_max_upload_total_bandwidth=18446744073709551615
virtualserver_hostbanner_url
virtualserver_hostbanner_gfx_url
virtualserver_hostbanner_gfx_interval=0
virtualserver_complain_autoban_count=5
virtualserver_complain_autoban_time=1200
virtualserver_complain_remove_time=3600
virtualserver_min_clients_in_channel_before_forced_silence=100
virtualserver_priority_speaker_dimm_modificator=-18.0000
virtualserver_antiflood_points_tick_reduce=5
virtualserver_antiflood_points_needed_command_block=150
virtualserver_antiflood_points_needed_ip_block=250
virtualserver_hostbutton_tooltip
virtualserver_hostbutton_url
virtualserver_hostbutton_gfx_url
virtualserver_download_quota=18446744073709551615
virtualserver_upload_quota=18446744073709551615
virtualserver_needed_identity_security_level=8
virtualserver_log_client=0
virtualserver_log_query=0
virtualserver_log_channel=0
virtualserver_log_permissions=1
virtualserver_log_server=0
virtualserver_log_filetransfer=0
virtualserver_min_client_version=1560850141
virtualserver_name_phonetic
virtualserver_icon_id=0
virtualserver_reserved_slots=0
virtualserver_weblist_enabled=1
virtualserver_hostbanner_mode=0
virtualserver_channel_temp_delete_delay_default=0
virtualserver_min_android_version=1559834030
virtualserver_min_ios_version=1559144369
virtualserver_nickname
virtualserver_antiflood_points_needed_plugin_block=0
virtualserver_file_storage_class
virtualserver_status=template
error id=0 msg=ok
# 查看当前 服务/频道 权限密钥列表 type 是
serveradmin@9987(1):online> tokenlist

token=nM25snqoW1uXQIRAhxR1DWbRRa4KPOQsCTuOoqU0
token_type=0
token_id1=6
token_id2=0
token_created=1637312348
token_description=Server_Admin
token_customset

token=JVlHDQQmT9QKzmDtGsDZlZW0tuZFHLVOjI9u5xNM
token_type=0
token_id1=7
token_id2=0
token_created=1637312348
token_description=Server_Normal
token_customset

token=b1h3wF4PINM0slw1y+JD3ZOsbTPSQtqHOGH0jNEJ
token_type=0
token_id1=8
token_id2=0
token_created=1637312348
token_description=Server_Guest
token_customset

token=hRCKE+QEQz2xAwKazbMO923Q0vNYR50zFePKjNs8
token_type=1
token_id1=5
token_id2=1
token_created=1637312348
token_description=Channel_Admin
token_customset

token=0aizebRk1JkxC7jfay8EsTLmYi9WCARR4pa1rnr7
token_type=1
token_id1=6
token_id2=1
token_created=1637312348
token_description=Channel_Operator
token_customset

token=Qd+pa12WhhoqaoqJ7AoXRn7pVfvxNMPqVFzQi1n9
token_type=1
token_id1=7
token_id2=1
token_created=1637312348
token_description=Channel_Voice
token_customset

token=u2VNYlU5k7QX7dvanyNwzwg8bJuRNStt0Y+biTlm
token_type=1
token_id1=8
token_id2=1
token_created=1637312348
token_description=Channel_Guest
token_customset

token=u2VNYlU5k7QX7dvanyNwzwg8bJuRNStt0Y+biTlm
token_type=1
token_id1=8
token_id2=2
token_created=1637312348
token_description=Channel_2_Guest
token_customset

3 、配置 Teamspeak 客户端

Teamspeak 因为商业化,在多平台的适配和支持上是相当不错的。

首先运行 Teamspeak ,默认界面上可以直接进行连接,但是此时连接的服务器是官方服务器

voice.teamspeak.com:9987

而我们如果想自行连接到个人服务器,可以使用 书签 功能,添加一个书签(比如添加官方服务器)

名称:Teamspeak Server
昵称:TeamSpeakUser
服务器域名或地址:voice.teamspeak.com
服务器密码:(官方频道默认空密码)
自动进入频道:(官方频道默认 Default Channel)

此时我们登录会自动引用默认身份,此身份会根据首次登陆设置好身份名,登录其他频道时如未指定则统一该名称
跟随身份的是 唯一 ID,频道识别唯一 ID 赋予用户权限,也就是更换身份(唯一 ID)会导致用户信息丢失

而关于身份,有一个安全级别的属性,该属性随挂机时间进行增长,可以手动进行挂机提升。
同时身份也是各频道防冲击所用的第一道防线(限制安全级别低于 N 的用户访问)


3.1 、 Teamspeak 客户端 的 中文汉化

Teamspeak 官方是没有中文支持的,意味着你必须手动汉化

Teamspeak 自身携带插件,插件中有一个语言包选项,但是里面只有繁体中文

所以我们只能借 Teamspeak 中文 网站的 汉化 一用 [ 链接 ]

通常来说,软件还是从官网进行下载的,不应该从 Teamspeak 中文 官网上下载。

Teamspeak 中文 的下载页,有一个选项是 插件/补丁 里面有 中文语言包

下载该语言包,安装,并直接重启 Teamspeak 即可

检查发现
Addons - Translations 中 额外增加了两项 Chinese 和 Chinese Simplified Translation
Application - Language 中 增加了 Chinese


3.2 、 Teamspeak 客户端 的 资料传输

首先服务端必须要开放 filetransfer_port 端口,在这里不多阐述

客户端在登陆后,右键任何 Channel ,可以看到第一个 文件浏览器
点击后会打开一个新窗口,里面是 该频道下所有文件内容。

初始频道的 服务端 文件路径 是 ./files/virtualserver_1/channel_1/*

陌生用户可能会遇到下列情况,此时是因为 TS 权限不足,需要提权,默认上传文件是 rw-rw-rw- 权限可能有风险

<16:49:00> 传输 "Chinese Simplified (zh-CN).ts3_translation" 报告: (insufficient client permissions)
<16:49:17> 用户权限不够 (原因:i_ft_needed_directory_create_power)

4 、配置 Mumble 服务器

Mumble 默认就在 Ubuntu 的官方源中,但是里面的版本可能过于老旧

所以我们需要指定最新版本的 apt-get 源

add-apt-repository ppa:mumble/release -y
apt-get update

更新 apt-get 源信息后,我们就可以安装了

apt-get install mumble-server -y

安装完毕后,我们需要进行初始化操作(自动停止服务)

dpkg-reconfigure mumble-server
# Mumble 服务端是否自动启动?
Mumble-server (murmurd) can start automatically when the server is booted. 
Autostart mumble-server on server boot? 

# Mumble 服务端是否采用 更高进程优先级 以 降低延迟和增加网络相应速度
Mumble-server (murmurd) can use higher process and network priority to ensure low latency
audio forwarding even on highly loaded servers.
Allow mumble-server to use higher priority?

# Mumble 默认超级用户 SuperUser 的密码是否重置(不输入则不修改)
Murmur has a special account called "SuperUser" which bypasses all privilege checks.
If you set a password here, the password for the "SuperUser" account will be updated.
If you leave this blank, the password will not be changed.
Password to set on SuperUser account:

修改完后,初始化程序会自动创建数据库文件以及程序运行的一些默认路径。

对 Mumble 来说,官方强烈推荐使用 sqlite 数据库,除非你的磁盘 IO 实在太差

# 配置文件
-rw-r-----    root:mumble-server    /etc/mumble-server.ini
# 数据文件
-rw-r-----    mumble-server:mumble-server    /var/lib/mumble-server/mumble-server.sqlite

最后我们不要忘记放行防火墙端口 64738/tcp 64738/udp

firewall-cmd --add-service=murmur --permanent
firewall-cmd --reload

4.1 、 Mumble SRV 记录

Mumble 不想在域名后输入端口号,也可以通过修改 SRV 进行识别 [ 链接 ]

Mumble 对 多服务器分配是支持的,所以通过调整权重即可进行多服务器负载。
(Host temp_mumble.yourdomain.com

Name: _mumble._tcp.temp_mumble.yourdomain.com
Priority: 10
Weight: 10
Port: 64738
Address: forward.yourdomain.com
Name: _mumble._udp.temp_mumble.yourdomain.com
Priority: 10
Weight: 10
Port: 64738
Address: forward.yourdomain.com

5 、配置 Mumble 客户端

Mumble 的客户端支持,先排除 2017 年停止维护的 IOS 端

其他的多平台客户端可谓简洁,除了语音通话,还是语音通话

在首次运行 Mumble 时,会有一个语音测试向导 + 证书生成向导。按照步骤一步步操作即可,也可以直接跳过

语音测试向导会修改语音设置,主要照顾老机型为主。

证书生成向导会创建自签名证书以向服务器提供身份。


5.1 、 Mumble 客户端 的 多用户量参考配置

通常来说,我们只需要按照默认设置走就可以了

以下设置参考 EVE 军团设置(大量用户同时在线方案)[ 链接 ] [ 链接 ]

音频输入:开启 混合回声消除,修改按键发言,压缩和数据包音频量,音频放大倍数

快捷键:清空默认快捷键(按键发言),增加快捷键 密语/呼喊

网络:强制 TCP 模式(默认优选 UDP),隐私勾选不发送本地系统信息

消息:关闭 用户进入/离开频道 用户连接服务器/断开连接 通知

游戏内界面:可选项,用来在游戏内看谁说话了,需要右键虚拟屏幕的右上角 人员列表 ,筛选,选择 仅正在说话

而以上所有操作内容的目的,详细阐述如下

问题/需求:个别用户声音破麦,回音(常见问题)
结果:开启回声消除,关闭音频放大

问题/需求:大量用户在频道中讲话,领队说话声音被覆盖
结果:禁用默认按键发言,改为密语/呼喊 方式

问题/需求:大量用户同时连接服务器,导致语音服务不稳定
结果:避免 QOS 选择 TCP,增大数据包音频量,增大数据包大小,节约服务器网络资源

问题/需求:用户登录的消息提醒总是播放语音提醒
结果:关闭频繁的消息提醒,如用户进入离开登录断开。


StarryVoid

Have a good time