TeamSpeak 3 服务器架设全流程新手教程2020年10月版

本文最后更新于:7 个月前

众所周知我们在和狐朋狗友并(互)肩(相)作(坑)战(害)的时候交流和沟通极其重要,否则一个不小心就是闭麦听歌一人九杀哀鸿遍野举目无亲的人间悲剧。队友之间的交流工具除了游戏内语音(In-game VoIP)之外那就是各种桌面通讯软件了。要说明白我为什么选择TeamSpeak这款软件,那就要盘点一下曾使用过的同类软件了(不全,但多少具有一些代表性)。

  1. YY语音**。YY作为历史悠久的老牌通讯软件(2008年发布[1]),它的用户群体非常大,通讯难度也不高,质量还是不错的。但我的亲身体验是随着YY的一步步壮大,各种乱七八糟的广告铺天盖地洒满你的桌面,甚至推送的一部分广告都达到了有碍观瞻的地步(本来就蔡,你个憨憨还弄这么多广告烦我)。总体来看,YY语音**带来的用户体验非常差。
  2. Discord**。Discord有一个显著的特点是其使用了Electron[2]架构,这让Discord拥有了可以在多平台上运行,又可以在浏览器中运行。Discord的运营因为极度尊重用户隐私还一度成为一些从事非法活动人员的指定通讯软件。后来由于一些众所周知的原因,自2018年7月开始大陆地区无法访问Discord**。
  3. Steam语音**。既然要打gogo,那Steam语音总可以用吧?确实,Steam语音随着在2018年7月25日推出的一波聊天系统大更新产生了巨大的变化,音频编码器选择了和Discord一样的Opus,保证音频质量更高的同时还加强了音频加密从而保护隐私。这么看来好处真的颇多,那为什么我不推荐呢?主要原因有二,其一,Steam好友服务经常无故中断,一些国家和地区的好友进入群组语音聊天时会偶发性掉线,很影响体验;其二,Steam语音**自带语音感应功能,然而预设档位太少,只有高中低三个档位,完全无法满足“语音感应”这个功能在复杂场景下的需求。
  4. **QQ、微信语音**。这个不用多说了,跟家人朋友聊聊天吹吹水可以,但是用做游戏通讯有时会遇到莫名其妙激活某个快捷键而切出游戏,遇到其他人来语音、视频通讯请求时强制切出游戏等等烦恼。毕竟不是为游戏通讯设计,确实不能成为第一选择。

这里我要吹一下TeamSpeak,因为它优点真的太多。资源占用低(实测能达到**Discord**十分之一内存占用量),连接快捷(通过分享服务器/频道链接可以快速进入服务器/频道,无需添加好友),自带Opus音频解码器,服务器/频道可根据需求设置语音加密,纯净无广告,自带Overwolf游戏内语音显示(In-game Display),细致可随意调节的“语音感应激活”功能告别通讯底噪和键盘噪音,频道内每一个用户的音量都可以单独调节……[3]

说完了选择**TeamSpeak的原因,下面让我们看看如何在服务器端搭建一个免费的TeamSpeak**服务器吧!

1. 准备工作

以下将以CentOS 7 x64 系统为例,其它系统搭建过程类似不再赘述。

为保证服务安全,请不要使用root账户安装并配置TeamSpeak服务器!

使用工具(以xShell为例)用root用户登录服务器并执行以下操作:

  1. 更新系统,这可能要花些时间
yum update -y
  1. 安装必须工具
yum install vim wget perl tar net-tools bzip2 -y

2. 开始安装

  1. 首先需要创建一个普通用户teamspeak,密码请按自己需求设置
useradd teamspeak
passwd teamspeak
  1. 切换至/opt目录下
cd /opt
  1. 下载最新服务端软件包(目前最新版本3.13.2,以最新版本为准)
wget https://files.teamspeak-services.com/releases/server/3.13.2/teamspeak3-server_linux_amd64-3.13.2.tar.bz2
  1. 解压最新服务端软件包并删除压缩包
tar -xjvf teamspeak3-server_linux_amd64-3.13.2.tar.bz2 && rm teamspeak3-server_linux_amd64-3.13.2.tar.bz2
  1. 赋予普通用户teamspeak权限,并进入该目录
chown -R teamspeak:teamspeak teamspeak3-server_linux_amd64 && cd /opt/teamspeak3-server_linux_amd64 && su teamspeak

3. 配置与运行

  1. 在开始之前,需要先同意TeamSpeak许可条款
touch .ts3server_license_accepted
  1. 自动配置数据库并启动TeamSpeak服务器
./ts3server_startscript.sh start
  1. 屏幕上会出现两条IMPORTANT的信息,请注意保管并记牢!其中Token是激活服务器管理员的重要凭证!
[teamspeak@vultr teamspeak3-server_linux_amd64]$ ./ts3server_startscript.sh start
Starting the TeamSpeak 3 server
TeamSpeak 3 server started, for details please view the log file
[teamspeak@vultr teamspeak3-server_linux_amd64]$ 
------------------------------------------------------------------
                      I M P O R T A N T                           
------------------------------------------------------------------
               Server Query Admin Account created                 
         loginname= "serveradmin", password= "mYk0+CCa"
------------------------------------------------------------------


------------------------------------------------------------------
                      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=rNB3AHfFblRdkSwuMTXyrCGIdFuBn9SOdAt2V3HW
------------------------------------------------------------------

4. 配置防火墙

CentOS 7 不再使用iptables,取而代之的是firewalld

  1. 首先找到 default zone
firewall-cmd --get-default-zone
  1. 酌情打开与TeamSpeak服务相关的端口
  • 9987/udp for Voice.
  • 30033/tcp for Filetransfer.
  • 10011/tcp for ServerQuery.
  • 41144/tcp for TSDNS (optional)
firewall-cmd --zone=public --permanent --add-port=9987/udp
firewall-cmd --zone=public --permanent --add-port=10011/tcp
firewall-cmd --zone=public --permanent --add-port=30033/tcp
firewall-cmd --zone=public --permanent --add-port=41144/tcp
  1. 重载firewalld以使其生效
firewall-cmd --reload

5. 自启动配置

  1. root身份创建并编辑文件
SU root
vim /lib/systemd/system/teamspeak.service
  1. 在该文件中写入如下内容:(按i进入编辑模式,编辑完成后按ESC退出编辑模式,接着输入:wq保存并退出vim编辑器)
[Unit]
Description=Teamspeak, The most superior online voice communication solution.
After=network.target

[Service]
User=teamspeak
Group=teamspeak
WorkingDirectory=/opt/teamspeak3-server_linux_amd64/
ExecStart=/opt/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
ExecStop=/opt/teamspeak3-server_linux_amd64/ts3server_startscript.sh stop
PIDFile=/opt/teamspeak3-server_linux_amd64/ts3server.pid
Type=forking
RestartSec=15
Restart=always

[Install]
WantedBy=multi-user.target
  1. systemd需要被重新加载以生效
systemctl daemon-reload
  1. 开启服务自启动
systemctl enable teamspeak.service

启动 TeamSpeak

systemctl start teamspeak.service

停止 TeamSpeak

systemctl stop teamspeak.service

重启 TeamSpeak

systemctl restart teamspeak.service

6. TSDNS域名设置

首先你需要拥有一个顶级域名或者可以配置的二级域名。这里以顶级域名为例:

demo.com是此处例子中的顶级域名,示例目标是可以通过ts.demo.com访问已经搭建好的TeamSpeak服务器

  1. 转到tsdns文件夹
cd tsdns
  1. 创建文件tsdns_settings.ini :(按i进入编辑模式,编辑完成后按ESC退出编辑模式,接着输入:wq保存并退出vim编辑器)
vim tsdns_settings.ini

在该文件中,以下面的格式配置域名(其中域名和IP地址请自行更换):

ts.demo.com=1.1.1.1:$PORT
  1. 接下来去域名DNS服务商增加域名的SRV记录,此处以cloudflare.com为例,其它DNS服务商类似。其中需要将1.1.1.1替换为你的服务器地址,将demo.com替换为你的域名。
  • 在DNS里对应域名下添加A记录,内容如下:

    Type Name Content Proxy status
    A ts 1.1.1.1 Proxied
  • 在DNS里添加一条SRV记录,内容如下:

    Type Service Protocol Name TTL Priority Weight Port Target
    SRV _ts3 UDP demo.com Auto 0 0 9987 ts.demo.com
  1. 后台运行tsdns服务:
screen -AmdS tsdns ./tsdnsserver
  1. tsdns添加至开机自启动计划任务
crontab -e

在打开的文件末尾添加如下字句:

@reboot /opt/teamspeak3-server_linux_amd64/tsdns/tsdnsserver

保存并退出后可通过crontab -l来列出当前生效的计划任务。

到这里为止,服务器的架设就都完成了,接下来请使用TeamSpeak的客户端连接自己的服务器吧!

[1] https://baike.baidu.com/item/YY%E8%AF%AD%E9%9F%B3, 2020年2月1日

[2] https://zh.wikipedia.org/wiki/Discord, 2020年2月1日

[3] https://www.teamspeak.com/en/features/overview/, 2020年10月5日