在CentOS上架设TeamSpeak服务器

基于tecmit上的相关教程加以修改。

最近氏族在研究语音工具。由于YY众所周知的差劲,Discord又被墙,无奈只能选择可以自设服务器的TeamSpeak。这里也顺便鄙视一下YY这种垄断后就胡作非为的吃相:跟百度一个德性。

国内相关行业真的是烂泥扶不上墙

实验环境

  • 服务提供商:阿里云(国内)
  • OS: CentOS 7 x64
  • 备注:拥有静态IP

整备

尽量保证当前系统为最新版本,或者至少你要有安装相关的依赖。

yum update
yum install vim wget perl tar net-tools bzip2

TeamSpeak理论上可以直接用root用户启动,但考虑到安全可以新建专有用户。当然,对自己的用户群有信心的随意。

useradd teamspeak
passwd teamspeak

下载

官方下载页下载Linux Server包。

截止本文完工时间,最新版本的下载地址:

http://dl.4players.de/ts/releases/3.3.0/teamspeak3-server_linux_amd64-3.3.0.tar.bz2

使用root用户下载并解压:

wget http://dl.4players.de/ts/releases/3.3.0/teamspeak3-server_linux_amd64-3.3.0.tar.bz2
tar -xvf teamspeak3-server_linux_amd64-3.3.0.tar.bz2
mv teamspeak3-server_linux_amd64 teamspeak3

权限

若不打算使用root启动服务(推荐),授予新用户对应的权限:

cp -R teamspeak3 /home/teamspeak/
chown -R teamspeak:teamspeak /home/teamspeak/teamspeak3

许可协议

启动

记着先切换到teamspeak用户。

此外新版本TeamSpeak要求同意许可协议才能启动服务,有两个方法。第一种太麻烦,第二种直接在TeamSpeak目录下建立.ts3server_license_accepted文件即可。

su - teamspeak
cd teamspeak3
vim .ts3server_license_accepted //直接:wq保存退出
./ts3server_startscript.sh start

返回结果如下:

这里的loginnamepassword可以记下。

服务

经过上文的操作应该已经能够启动服务(防火墙的问题请继续往下翻),但若想将TeamSpeak加入系统服务自动启动则还需要继续操作。

切换回root编辑服务文件:

su -
vi /lib/systemd/system/teamspeak.service

输入以下内容,注意:直接复制粘贴文本可能会丢失开头字符并导致服务无法启动

[Unit]
Description=Team Speak 3 Server
After=network.target

[Service]
WorkingDirectory=/home/teamspeak/teamspeak3
User=teamspeak
Group=teamspeak
Type=forking
ExecStart=/home/teamspeak/teamspeak3/ts3server_startscript.sh start inifile=ts3server.ini
ExecStop=/home/teamspeak/teamspeak3/ts3server_startscript.sh stop
PIDFile=/home/teamspeak/teamspeak3/ts3server.pid
RestartSec=15
Restart=always
[Install]
WantedBy=multi-user.target

刷新systemctl并启动:

systemctl --system daemon-reload
systemctl start teamspeak
systemctl enable teamspeak

ADMIN

每次启动服务会生成一个ServerAdmin Token,可以在logs里查看。每个服务器开始正常运作之前,必须由管理员从客户端连接服务器并输入该Token才可使用。

cat /home/teamspeak/logs/ts3server_XXXXXXXXXXXXXXX.log

防火墙

TeamSpeak使用三个端口进行通信:9987 UDP (TeamSpeak Voice service), 10011 TCP (TeamSpeak ServerQuery) 和 30033 TCP (TeamSpeak FileTransfer)。因此需设置防火墙放行端口。

firewall-cmd --zone=public --add-port=9987/udp --permanent
firewall-cmd --zone=public --add-port=10011/tcp --permanent
firewall-cmd --zone=public --add-port=30033/tcp --permanent
firewall-cmd --reload

同时如果VPS有额外设置(如阿里云安全组),也需进入控制台设置对应规则。

Author: Yorushika Shi
Link: https://sh.yorushika.co/post/teamspeak-centos/index.html
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.