前言

TeamSpeak是一套专有的VoIP软件,用户可以经由它与其他用户进行语音对话,很像电话会议。用户可以戴上耳机与麦克风进行通话。用户可以经由客户端软件连线到指定的服务器,在服务器内的频道进行通话。 通常TeamSpeak的用户大多为多人连线游戏的玩家,与同队伍的玩家进行通信。

搭建

Docker

安装Docker

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

启动TS

  1. 直接启动
docker run -p 9987:9987/udp -p 10011:10011 -p 30033:30033 -e TS3SERVER_LICENSE=accept teamspeak
  1. 使用 docker-compose
version: '3.1'
services:
  teamspeak:
    image: teamspeak
    restart: always
    ports:
      - 9987:9987/udp
      - 10011:10011
      - 30033:30033
    environment:
      TS3SERVER_DB_PLUGIN: ts3db_mariadb
      TS3SERVER_DB_SQLCREATEPATH: create_mariadb
      TS3SERVER_DB_HOST: db
      TS3SERVER_DB_USER: root
      TS3SERVER_DB_PASSWORD: example
      TS3SERVER_DB_NAME: teamspeak
      TS3SERVER_DB_WAITUNTILREADY: 30
      TS3SERVER_LICENSE: accept
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: teamspeak

支持的环境变量

  • TS3SERVER_LICENSEPATH 设置TeamSpeak服务器要查找 licensekey.dat 的路径。此变量是 licensekey.dat 所在目录的路径。默认为 /var/ts3server/
  • TS3SERVER_DB_PLUGIN 此变量控制 TeamSpeak 使用哪种数据库。
  • TS3SERVER_DB_PLUGINPARAMETER 此变量用于为db插件发送参数。
  • TS3SERVER_DB_SQLPATH 此变量控制TeamSpeak服务器在何处查找sql文件。默认为 /opt/ts3server/sql/
  • TS3SERVER_DB_SQLCREATEPATH 此变量是用于初始化数据库的sql脚本的路径。这个路径关系到 TS3SERVER_DB_SQLPATH
  • TS3SERVER_DB_CONNECTIONS 这个变量控制是如何到数据库的并发连接。必须至少为2,最多为100。默认值为10。
  • TS3SERVER_DB_CLIENTKEEPDAYS 此变量是 TeamSpeak 服务器将保留未使用的用户身份的天数。已添加到组中的用户将不会被删除,但来宾(Guest)将被删除。
  • TS3SERVER_IP_WHITELIST 此变量用于设置白名单文件的位置。该文件包含IP地址列表,这些IP地址不受洪水保护系统的限制。 警告:请勿添加任何您不信任的IP地址,因为这将使它们淹没服务器。
  • TS3SERVER_IP_BLACKLIST 此变量用于设置黑名单文件的位置。该文件包含IP地址列表,即使服务器重新启动,该列表中的IP地址也无法连接到服务器的查询界面。
  • TS3SERVER_LOG_PATH 此变量控制服务器存储其日志文件的文件夹。默认为 /var/ts3server/logs/
  • TS3SERVER_LOG_QUERY_COMMANDS 如果将此变量设置为1,则将记录发送到服务器的每个查询命令。 警告:虽然这在服务器出现问题时可能会有所帮助,但要注意,这可能会导致日志文件变得非常大。除非您绝对希望记录所有命令,否则我们建议大多数时候将此变量设置为0。
  • TS3SERVER_LOG_APPEND 如果将此变量设置为1,则每个虚拟服务器都会将所有新日志条目写入 Log 文件中。我们建议将此变量设置为0,这可以减轻你看 Log 文件时的工作量。
  • TS3SERVER_QUERY_PROTOCOLS 逗号分隔的协议列表,可用于连接到ServerQuery。可用的值为rawssh。如果指定了raw,则默认的 ServerQuery 会通过 10011/tcp 端口进行连接。如果通过SSH进行连接,则加密的 ServerQuery 则会通过 10022/tcp 端口进行连接。可以在此参数中指定上述值的任何组合,包括将其保留为空,这将完全禁用 ServerQuery。
  • TS3SERVER_QUERY_TIMEOUT 由于不活动而断开查询连接之前的秒数。 如果将值设置为零或负数,则将禁用超时。 默认值为300秒。
  • TS3SERVER_QUERY_SSH_RSA_HOST_KEY 查询要使用的ssh_host_rsa_key的所在路径。如果不存在,它将在服务器启动时创建。

手动搭建

首先新建一个用户

useradd -m ts #新建用户
passwd ts #设置密码

切换至ts用户

su - ts

下载TS服务端

注意:版本号可能有所不同,请在https://teamspeak.com/zh-CN/downloads/下载最新的客户端

wget https://files.teamspeak-services.com/releases/server/3.13.3/teamspeak3-server_linux_amd64-3.13.3.tar.bz2 
tar -xjvf teamspeak3-server_linux_amd64-3.13.3.tar.bz2
rm teamspeak3-server_linux_amd64-*.bz2 -f
cd teamspeak3-server_linux_amd64/

同意许可条款

touch .ts3server_license_accepted

#### 启动TS服务端

./ts3server_startscript.sh start

输出:

------------------------------------------------------------------
                      I M P O R T A N T                           
------------------------------------------------------------------
               Server Query Admin Account created                 
         loginname= "*", password= "*"
         apikey= "*"
------------------------------------------------------------------


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

注意保存密钥及 ServerQuery 管理员账户和密码

设置自启动

此处在有ROOT权限的用户中运行

cat > /lib/systemd/system/teamspeak.service <<EOF
[Unit]
Description=Teamspeak Server
After=network.target

[Service]
User=ts
Group=ts
Type=forking
Restart=always
WorkingDirectory=/home/ts/teamspeak3-server_linux_amd64/
ExecStart=/home/ts/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
ExecStop=/home/ts/teamspeak3-server_linux_amd64/ts3server_startscript.sh stop
ExecReload=/home/ts/teamspeak3-server_linux_amd64//ts3server_startscript.sh restart
PIDFile=/home/ts/teamspeak3-server_linux_amd64/ts3server.pid

[Install]
WantedBy=multi-user.target
EOF

之后重载systemd :systemctl daemon-reload

开启自启动: systemctl enable teamspeak.service 启动 TeamSpeak : systemctl start teamspeak.service 停止 TeamSpeak : systemctl stop teamspeak.service 重启 TeamSpeak : systemctl restart teamspeak.service

连接

Server Password为运行时输出的Password

之后privilege key为输出的Token=后面的内容

!!第一个登录用户输入正确的密钥后,系统就会自动把这个用户的权限提升为管理员

之后让其他人直接连接就可以了

完成!

参考