首先是teamspeak的官网:请认准https://www.teamspeak.com/
本教程是以Linux系统作为基础,版本为ubuntu-22.04,Linux相关的基础操作,比如用终端连接和常用命令啥的,我这边不详细说,有兴趣的自己学习一下就行了。
如果没有任何Linux基础并且不想折腾,建议用Windows系统,Windows系统的服务器比这个简单多了,视频教程B站也有很多,我在这里就不赘述了。
一、服务器配置
本教程默认大家都有一个自己的服务器和公网IP,如果没有,可以去华为云阿里云腾讯云,学生或者新人都有优惠,99一年啥的。再或者去各种小站、外网之类的地方搞一个云服务器,服务器怎么购买怎么配置我在这里就不说了,可以去搜相关教程。
我就说一下服务器的配置,teamspeak对于服务器的硬件要求其实很低,其实1核1G的服务器就能跑得动(虽然国内基本上买不到这么低的配置),但是对带宽要求比较高。
我自己的带宽的计算方法如下,不一定正确:
teamspeak软件的每个频道都能设置音频质量,在最高质量的情况下,带宽为7.71KiB/s
上行带宽计算公式为:
说话人数×(频道中的人数-1)×所选编解码器带宽
假如10人服务器里,10人都在说话,那么上行带宽需要的值为:
10×9×7.71KiB/s=693.9KiB/s。
一般服务器用来表示带宽的单位都是Mbps,所以现在要把KiB/s换算成Mbps。
理论来说:
1KiB=1024B;1KB=1000B;1MB=1000KB;1B=8b(bit)
可得:
1KiB=1024B=1.024KB=0.001024MB=0.008192Mb。
所以上述例子中,服务器上行带宽就需要693.9KiB/s=5.68Mbps。
不过10人服务器基本上不太会出现10人同时说话的情况,所以5Mbps的服务器也基本上够用。
如果是4人服的话,基本上1Mbps的服务器已经够用了。
二、下载teamspeak服务端
进入teamspeak官网,点击Downloads,然后点击Server,进入服务端下载页面(也可以直接点击这里)。正常情况是下载Server 64-bit的版本,如果选择32-bit的版本系统如果不对应可能会有问题。
三、开放端口
teamspeak服务器需要开放防火墙端口,下表显示了需要开放的端口:
服务 | 协议 | 本地端口(服务器) | 是否必要 |
---|---|---|---|
语音服务 | UDP | 9987 | 是 |
文件传输 | TCP | 30033 | 是 |
服务器查询(raw) | TCP | 10011 | 可选 |
服务器查询(SSH) | TCP | 10022 | 可选 |
网络查询(http) | TCP | 10080 | 可选 |
网络查询(https) | TCP | 10443 | 可选 |
TSDNS | TCP | 41144 | 可选 |
其中语音服务和文件传输为必要项,其他随意。
强烈建议在服务器上安装面板(比如1Panel),图形化的界面直接启用防火墙然后开放端口就行了。
也可以在Linux里面使用命令(我是用面板的,所以以下内容未经本人测试):
- 开启9987端口协议UDP(如果没安装firewall命令需要先安装一下):
firewall-cmd --zone=public --add-port=9987/udp --permanent && firewall-cmd --reload
- 开启30033端口协议TCP:
firewall-cmd --zone=public --add-port=30033/tcp --permanent && firewall-cmd --reload
- 然后检查一下有没有开启防火墙(查看防火墙状态):
firewall-cmd --state
- 如果没开启,开启防火墙:
systemctl start firewalld.service
- 最好最后检查一下防火墙开启端口:
firewall-cmd --list-ports
注意如果服务器供应商的界面有防火墙设置,除了在服务器上需要开启端口之外,在服务器供应商的管理界面也需要开放端口。
四、开始部署
- 将teamspeak服务端文件上传到服务器/root文件夹下,可以使用ftp之类的软件或者面板(我是用1Panel面板上传的)
- 解压文件:
tar xvf teamspeak3-server_linux_amd64-3.13.7.tar.bz2
(后面的版本号根据实际情况修改)(我也是用面板解压的,所以说面板真方便) - 将解压出来的文件夹teamspeak3-server_linux_amd64改名成更简单的ts3server:
mv teamspeak3-server_linux_amd64 ts3server
- 同意许可条款:
touch .ts3server_license_accepted
- 启动服务器:
./ts3server_startscript.sh start
(最前面的点不要漏了) - 屏幕会报警:
WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT!!!!!!!!!!
(出于安全原因,我们建议不要使用root账户运行服务器),此时等待十个感叹号之后,服务器会正常启动。 - 正常启动之后,会出现类似下图的文字,上面是api秘钥和管理员账户密码,下面是管理员秘钥,最好全部复制保存下来。
五、用其他账户部署
如果比较介意安全问题,可以创建一个新账户来部署teamspeak服务器。
- 创建名为ts的用户:
useradd ts
(保险起见,创建的用户名、home文件夹内的文件夹名、调整权限时候的用户组三者全部需要统一,否则有可能会出现权限不足的问题。) - 给新创建的用户设置密码:
passwd ts
(该行命令执行完毕后会让你输入密码,需要输两遍) - 移动到home文件夹:
cd /home
- 在/home下创建一个名为ts的文件夹:
mkdir ts
- 回到/root文件夹:
cd /root
- 将文件复制到/home/ts下:
cp -R ts3server /home/ts
- 改变ts3server下所有文件的拥有者为ts(刚刚创建的用户名):
chown -R ts:ts /home/ts/ts3server/
- 移动到ts3server文件夹(切换用户之后就没有权限了):
cd /home/ts/ts3server
- 切换为ts用户:
su ts
(如果正确的话,终端命令提示行前的符号会由#变为$) - 同意许可条款:
touch .ts3server_license_accepted
- 启动服务器:
./ts3server_startscript.sh start
(最前面的点不要漏了) - 如果报
sh: 2: ./ts3server_startscript.sh: Permission denied
类似权限不足的错,可以通过改文件权限解决:chmod -R 777 /home/ts/ts3server/
- 如果一切正常,会出现与上一条类似的文字,请复制保存。
六、增加自启动脚本
因为有时候teamspeak服务器会莫名挂掉,这时候可以弄一个自启动脚本。
- 使用vi编辑器新建一个文档(如果系统里没有vi编辑器,用别的替代也可以):
vi /lib/systemd/system/teamspeak.service
- 在其中输入以下内容(注意文中四处的/root/ts3server目录需要改成各位实际部署时的目录):
[Unit] Description=TeamSpeak 3 Server After=network.target [Service] WorkingDirectory=/root/ts3server User=root Type=forking ExecStart=/root/ts3server/ts3server_startscript.sh start inifile=ts3server.ini ExecStop=/root/ts3server/ts3server_startscript.sh stop PIDFile=/root/ts3server/ts3server.pid RestartSec=15 Restart=always [Install] WantedBy=multi-user.target
或使用其他用户部署时(注意文中四处的/home/ts/ts3server目录需要改成各位实际部署时的目录):
[Unit] Description=TeamSpeak 3 Server After=network.target [Service] WorkingDirectory=/home/ts/ts3server User=ts Group=ts Type=forking ExecStart=/home/ts/ts3server/ts3server_startscript.sh start inifile=ts3server.ini ExecStop=/home/ts/ts3server/ts3server_startscript.sh stop PIDFile=/home/ts/ts3server/ts3server.pid RestartSec=15 Restart=always [Install] WantedBy=multi-user.target
- 使用
:wq
命令保存并退出编辑器。 - 启动服务:
systemctl enable teamspeak.service
- 启动脚本:
systemctl start teamspeak.service
- 命令行会报错:
Job for teamspeak.service failed because the control process exited with error code. See "systemctl status teamspeak.service" and "journalctl -xe" for details.
,无视他,再次输入:systemctl start teamspeak.service
- 最后输入命令检查运行状态:
systemctl | grep teamspeak.service
,成功应该会显示teamspeak.service
的红字和后面的loaded activating auto-restart TeamSpeak 3 Server
。(应该吧,我也不确定)
七、连接服务器
做完前面所有步骤之后,服务器就可以连接了,在teamspeak5的搜索框内输入服务器的IP地址,应该会正常连接。
第一次连接时,语音界面会询问这是否为您的服务器,点击是之后,在权限秘钥框内输入之前保存的Token即可成为服务器管理员。
成为服务器管理员后,点击服务器名称,再点击右侧的笔图标,进入服务器编辑模式,可以在这里修改服务器名称和密码之类的,频道名称的修改也类似,在此不再赘述。
八、用域名替换IP
如果有自己的域名,可以使用域名来替换服务器的IP地址,这样就算是服务器迁移,换了IP之后,也能使用原域名连接新的服务器。
1. 进入自己域名网站的DNS设置界面。
2. 添加A记录:
主机名(Hostname)处填写子域名,如我想使用ts.abc.com
作为teamspeak服务器的域名,则填写ts
。
在地址/值(Address/Value)处填写teamspeak服务器的IP地址。
TTL可以设置为3600秒。
3. 添加SRV记录:
以_ts3作为服务,以_udp作为协议,以上一条填写的子域名为名称,在主机名(Hostname)处填写_ts3._udp.ts
。
在目标主机名(Target Hostname)处填写完整的域名,如ts.abc.com
端口(Port)处填写Teamspeak语音服务端口(默认为9987)。
权重(Weight)处填写5。
优先级(Distance/Priority)处填写0(或1)。
TTL可以设置为1800秒,因为这是ts3服务器刷新的时长。
4. 结果
保存后,你的两个记录应该是这样的:
类型 | 名称 | 内容/值 | TTL |
---|---|---|---|
A | ts | 你的服务器IP | 3600秒 |
SRV | _ts3._udp.ts | 0 5 9987 ts.abc.com | 1800秒 |
到此应该是成功了,不过DNS刷新需要最长48小时,所以如果连不上的话就等两天。
以及,如果用了别的DNS名称服务器(如cloudflare,名称服务器内的DNS也要同步设置)。
九、服务器迁移
Teamspeak官网的迁移教程
如果想要移动Teamspeak服务器到另一台机器,以下文件和文件夹如果您想保留相应信息则需要复制:licensekey.dat
此文件包含您的许可证。您可能没有此文件,在这种情况下,您无需复制它query_ip_whitelist.txt
查询接口的白名单 IPquery_ip_blacklist.txt
查询接口的黑名单 IPfiles/*
上传到服务器的任何图标、头像和文件。请务必复制整个文件夹,包括任何子文件夹和其中的文件。ts3server.sqlitedb
数据库。此文件最为重要,包含有关虚拟服务器、用户、权限、频道和组等的所有信息。服务器实例及其虚拟服务器的所有设置都包含在此文件中。*.ini
可能存在的包含启动参数和数据库配置的文件。默认情况下不存在这些文件tsdns/tsdns_settings.ini
TSDNS 服务的配置。仅在您实际使用 TSDNS 时需要此配置。
- 先关闭服务器:
./ts3server_startscript.sh stop
(最前面的点不要漏了) - 对照官网的迁移教程,将旧服务器需要的文件复制到ts3sever文件夹下,覆盖同名文件。
- 重启服务器:
./ts3server_startscript.sh start
(最前面的点不要漏了)
迁移完毕之后如果使用的是同域名会提醒所有之前连接过的人服务器已变更,无视即可。
十、结语
好了,现在把服务器地址分享给朋友,然后享受快乐的语音聊天吧!
其实写这个只是把我之前折腾的时候查的各种资料、当做自己的储备,防止下次折腾的时候忘了……
Roi写于2024年7月15日。
参考资料:
[1]: https://support.teamspeak.com/hc/en-us/articles/360002710657-How-much-bandwidth-does-TeamSpeak-require
[2]: https://support.teamspeak.com/hc/en-us/articles/360002713038-I-want-to-move-my-server-to-another-machine-which-files-should-I-copy
[3]: https://support.teamspeak.com/hc/en-us/articles/360002712257-Which-ports-does-the-TeamSpeak-3-server-use
[4]: https://zhuanlan.zhihu.com/p/590922056
[5]: https://www.bilibili.com/read/cv1940769/
[6]: https://www.bilibili.com/read/cv33250764/
[7]: https://n.ova.moe/blog/how-to-bind-domain-to-own-teamspeak3-server/
[8]: https://www.bilibili.com/video/BV1u64y1X7Dt/
Comments NOTHING