由于需要和队友开黑,而国内流行的仿Discord语音软件隔一段时间就会换一批新的,反反复复注册账号创建频道实在是让人糟心。恰好了解到TeamSpeak可以自己部署免费版的服务器,手里又正好有可以用来部署的vps,干脆上手部署一个试试水。
配置需求
硬件
根据Support页面所述,一般的轻量应用服务器就足够部署:
For the CPU: SSE2 capable CPU SSE4.x capable CPU with POPCNT enabled (Only for the 64-bit version on Windows)
For Memory: This depends on the operating system being used, however a minimum of 1 GB RAM is recommended. Total memory usage depends on the number and size of hosted virtual servers.
For the Hard disk: The bare minimum installation is 15 MB. Total disk usage is highly dependent on actual usage, size and the amount of hosted virtual servers. Additional space is required for file transfer and for icon/avatar storage.
带宽
根据另一节Support页面描述,可以用下面的公式进行估算(具体原理可以阅读原文):
DOWN: people_speaking_atm * selected_codec UP: people_speaking_atm * (people_in_channel - 1) * selected_codec
查看TeamSpeak3客户端设置,默认的桌面语音设置下selected_codec
为6kb/s左右。因此极端情况下,我的便宜服务器(带宽3Mb/s)应该能支持20个人同时在语音里讲话。
一些古早的reddit帖子则提到每人占用的带宽预估在10kb/s~20kb/s左右,按照这个最大值进行估算,服务器带宽也能支持大约10人在频道里同时开麦。再考虑到正常连麦场景下也很少需要所有人同时说话,因此3Mb/s的带宽支持一个满编小队开荒应该绰绰有余。
服务器部署
首先在官网上下载服务端,或者直接执行以下命令:
bash复制代码
1wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2
下载后解压,并放进teamspeak文件夹里:
bash复制代码
1mkdir teamspeak; 2tar -xf teamspeak3-server_linux_amd64-3.13.7.tar.bz2 --directory teamspeak;
为了保障服务器安全,我在这里先单独为进程创建了teamspeak用户和同名用户组,没有创建对应的home
目录,禁用了该用户登录系统:
bash复制代码
1useradd -r -M -s /usr/sbin/nologin -U teamspeak
参数比较多,分别有以下作用:
-r
:创建一个系统用户(UID 通常 < 1000)-M
:不创建用户主目录-s /usr/sbin/nologin
:禁止该用户登录系统-U
:同时创建一个与用户名同名的用户组
接着把teamspeak文件夹移动到/opt
下,并把所有权移交给teamspeak
用户,权限设置为770
:
bash复制代码
1mv ./teamspeak /opt/; 2chown -R teamspeak:teamspeak /opt/teamspeak; 3chmod -R 770 /opt/teamspeak;
最后,创建新的systemd服务文件:
ini复制代码1[Unit]
2Description=TeamSpeak 3 Server
3After=network.target
4
5[Service]
6WorkingDirectory=/opt/teamspeak
7User=teamspeak
8ExecStart=/opt/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini serveradmin_password=my_serveradmin_password
9ExecStop=/opt/teamspeak/ts3server_startscript.sh stop
10PIDFile=/opt/teamspeak/ts3server.pid
11RestartSec=15
12Restart=always
13
14[Install]
15WantedBy=multi-user.target
这里的serveradmin_password
即服务器管理员的登录密码,后续在首次用客户端连接服务器以及在终端使用ServerQuery
时会用上。
完成配置,启动服务,记得提前打开需要的端口(9987和30033),最后检查运行情况:
bash复制代码
1systemctl enable teamspeak --now 2systemctl status teamspeak
状态显示active (running)
,说明运行正常:
text复制代码
1● teamspeak.service - TeamSpeak 3 Server 2 Loaded: loaded (/etc/systemd/system/teamspeak.service; enabled; vendor preset: enabled) 3 Active: active (running) since Sat 2025-03-29 00:37:17 CST; 1 week 3 days ago 4 Main PID: 1300791 (ts3server) 5 Tasks: 21 (limit: 1939) 6 Memory: 13.8M 7 CPU: 2h 31min 44.672s 8 CGroup: /system.slice/teamspeak.service 9 └─1300791 ./ts3server inifile=ts3server.ini serveradmin_password=my_serveradmin_password "" daemon=1 pid_file=ts3server.pid 10 11Mar 29 00:37:17 iZ2vc8nbq08f9nyp5pzel7Z systemd[1]: Started TeamSpeak 3 Server. 12Mar 29 00:37:18 iZ2vc8nbq08f9nyp5pzel7Z ts3server_startscript.sh[1300784]: Starting the TeamSpeak 3 server 13Mar 29 00:37:18 iZ2vc8nbq08f9nyp5pzel7Z ts3server_startscript.sh[1300784]: TeamSpeak 3 server started, for details please view the log file
基础权限管理
首先大致了解一下TeamSpeak 3的权限管理机制。
从Managing users and privilege keys in TeamSpeak 3这篇文章中可以知道:每个客户端在第一次运行时会自动创建一个密钥对。当客户端连接服务器时,服务器就会收到客户端发送的公钥,并存储根据该公钥生成的唯一标识符。简而言之,服务器通过和客户端公钥一一对应的唯一ID来识别不同的用户。
而权限则通过特权密钥授予给用户,用户使用密钥在客户端激活后就可以得到指定权限。密钥是一次性物品,使用之后无法再次使用。
服务端操作
确认服务器顺利运行后,首先需要通过ServerQuery申请一个自己使用的特权密钥。根据社区帖子解释,ServerQuery是一个管理TS服务器的CLI,作为服务器自带的模块默认情况下在10011端口上监听。借由ubuntu自带的telnet就可以连接上TS服务器:
bash复制代码
1telnet 127.0.0.1 10011
text复制代码
1Trying 127.0.0.1... 2Connected to 127.0.0.1. 3Escape character is '^]'. 4TS3 5Welcome to the TeamSpeak 3 ServerQuery interface, type "help" for a list of commands and "help <command>" for information on a specific command.
接着登录:
bash复制代码
1login admin <my_serveradmin_password>
看到error id=0 msg=ok
的输出可以确认自己登录成功。
下一步是在客户端上授予自己管理员权限。
bash复制代码
1use port=YOUR_VOICE_PORT 2tokenadd tokentype=0 tokenid1=YOUR_SERVERGROUP_ID tokenid2=0
默认情况下,TeamSpeak3的监听端口为9987
,管理员组号为6
。
ServerQuery会返回一段token,接下来会在客户端中使用。
客户端操作
前往下载页面下载windows客户端,默认没有中文界面,如果觉得看着吃力可以安装民间汉化包:GitHub页面。
找到连接->连接服务器
选项,输入服务器的ip/域名、服务端中设置的管理员密码my_serveradmin_password
以及自己的昵称,即可进入服务器。
连接至服务器
我们是第一个进入服务器的用户,系统会弹窗要求输入权限密钥,填写刚刚获取的token后我们就获得了服务器管理员权限。
作为管理员,可以直接在权限->权限密钥
处创建新的密钥,并发送给其他用户,一旦使用,密钥就会从列表中消失。
一个未使用的权限密钥
对于后面进入想要“核销”权限密钥的用户,可以通过权限->使用权限密钥
选项填写密钥获得对应权限。
使用权限密钥
现在有了管理员权限,即可编辑自己的TS服务器了,右键服务器后选择编辑服务器
就能进入设置页面,修改好服务器的名字和其他用户进入服务器时要用的密码即可。另外在杂项
中有一条提交服务器到公共列表,默认勾选,作为个人使用服务器还是取消比较好。
管理服务器
References
- WHAT IS THE MINIMUM REQUIREMENTS FOR A TS3 SERVER? - TeamSpeak
- HOW MUCH BANDWIDTH DOES TEAMSPEAK REQUIRE? - TeamSpeak
- install teamspeak server - GitHub
- Managing users and privilege keys in TeamSpeak 3 - TeamSpeak Community
- I accidentally removed my server admin // Lost admin on self hosted server - TeamSpeak Community