Teamspeak & Mumble 语音服务器的配置

2021-11-19 50点热度 0人点赞 0条评论

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
[email protected]:/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,任何人都有写入权限!
当需要 迁移/升级 服务器时 ,第一部分文件是需要重点备份的文件 [ 链接 ]

[email protected]:/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;
用户 [email protected] 
密码 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
[email protected](1):online>
# 查看当前服务简介(虚拟服务 ID,虚拟服务语音端口,虚拟服务名)
[email protected](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
# 查看当前服务信息(虚拟服务的与客户相关配置)
[email protected](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 是
[email protected](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