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,增大数据包音频量,增大数据包大小,节约服务器网络资源
问题/需求:用户登录的消息提醒总是播放语音提醒
结果:关闭频繁的消息提醒,如用户进入离开登录断开。