如何使用Linux/Centos搭建TeamSpeak服务器

一、前期准备

1.选择一台服务器

系统选择:推荐使用Centos7,比较经典的系统。

配置参考:本人采用阿里云的 2核 2G 3M ECS轻量服务器,亲测10人同时在线时语音,并且挂载其它观影同步服务时服务器负载仅为30%

2.软件

Xshell:用于远程连接服务器

Xftp:用于向远程服务器传输文件

二、部署服务

1.服务端安装包

下载Linux版本服务端:TeamSpeak Downloads | TeamSpeak

2.创建服务专属用户

使用root账户创建teamspeak用户

此步骤是为了安全考虑,当然你觉得无所谓的话直接用root部署即可

创建用户

useradd teamspeak
passwd teamspeak //填写自己需要设置的密码

设置权限

sudo vim /etc/sudoers

在%wheel ALL=(ALL)ALL下面插入

teamspeak   ALL=(ALL) NOPASSWD:ALL

teamspeak:指定了用户。
ALL:表示所有主机。
(ALL):表示该用户可以在所有终端上执行命令。
NOPASSWD:ALL:表示执行命令时不需要输入密码。

vim下按I键进入插入模式,输入完成之后按ESC退出插入模式,输入wq!保存并退出

切换到创建的用户

su - teamspeak

3.下载、解压安装包

通过wget下载或者通过前面提供的地址下载到本地通过xtftp上传到服务器

wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2

解压安装包

tar -jxvf teamspeak3-server_linux_amd64-3.13.7.tar.bz2 

tar参数说明

参数 描述
-c 创建归档文件 (create)
-x 解压归档文件 (extract)
-f 指定归档文件名 (file)
-v 详细输出信息 (verbose)
-z 使用 gzip 压缩
-j 使用 bzip2 压缩
-J 使用 xz 压缩
-p 保持文件权限不变
-C 指定解压路径
--list 列出归档文件内容
--delete 在归档中删除指定文件

4.启动服务端

创建许可协议

touch /home/teamspeak/teamspeak3-server_linux_amd64/.ts3server_license_accepted

启动服务端

sh /home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh start

注意保存密钥信息

5.设置服务端自启

在服务目录创建

sudo vim /lib/systemd/system/teamspeak.service

编辑内容

[Unit]
Description=My Teamspeak Service
Wants=network-online.target
After=syslog.target network.target network-online.target

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

[Install]
WantedBy=multi-user.target

.service文件结构解释

下面详细解析每个部分。


1️⃣ [Unit] 部分

[Unit] 部分定义了服务之间的依赖关系。

ini复制代码[Unit]
Description=Teamspeak, The most superior online voice communication solution.
Wants=network-online.target
After=syslog.target network.target network-online.target

🔍 参数说明:

  • Description
    • 对服务的简要描述。
  • Wants
    • 表示该服务希望在启动时,同时启动指定目标或服务。
    • 在这个例子中,Wants=network-online.target 表示服务需要在网络正常连接之后才启动。
  • After
    • 确保当前服务在指定目标之后启动。

    • After=syslog.target network.target network-online.target
      

      表示:

    • 在日志系统 (syslog) 和网络目标 (network.targetnetwork-online.target) 启动后才会启动 Teamspeak 服务。


2️⃣ [Service] 部分

[Service] 部分定义了服务的实际运行配置。

ini复制代码[Service]
User=teamspeak
Group=teamspeak
WorkingDirectory=/home/teamspeak/teamspeak3-server_linux_amd64/
ExecStart=/home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
ExecStop=/home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh stop
PIDFile=/home/teamspeak/teamspeak3-server_linux_amd64/ts3server.pid
Type=forking

🔍 参数说明:

  • User
    • 指定服务以哪个用户身份运行。这里是 teamspeak 用户。
  • Group
    • 指定服务所在的组。这里是 teamspeak
  • WorkingDirectory
    • 指定服务的工作目录,即程序所在路径。
  • ExecStart
    • 指定启动服务的命令。
    • 在这里,它使用脚本 /home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh start 来启动 Teamspeak 服务。
  • ExecStop
    • 指定停止服务的命令。
    • 也是调用 Teamspeak 提供的脚本。
  • PIDFile
    • 指定存放服务进程 ID 的文件路径。
    • systemd 使用这个文件来管理服务进程。
  • Type
    • 表示服务的启动类型。
    • forking:表示服务会派生子进程并在后台运行。

3️⃣ [Install] 部分

[Install] 部分定义了服务安装与启用的目标。

ini复制代码[Install]
WantedBy=multi-user.target

🔍 参数说明:

  • WantedBy
    • 指定服务启用时与系统启动目标之间的依赖关系。
    • multi-user.target 表示服务在系统进入多用户模式时自动启动。

重新加载

sudo systemctl daemon-reload

设置开机启动

sudo systemctl enable teamspeak.service

teamspeak相关命令

//启动
sudo systemctl start teamspeak.service
//停止
sudo systemctl stop teamspeak.service
//重启
sudo systemctl restart teamspeak.service

三、开放端口

1.需要开放的端口

端口 协议 说明
9987 UDP 默认语音服务端口
10011 TCP raw端口
10022 TCP SSH端口
30033 TCP 文件传输端口
41144 TCP TSDND

2.如何开放端口

2.1云服务器

在对应的云服务器平台设置端口开放规则即可。

2.2本地服务器搭建

检查系统防火墙状态:systemctl status firewalld

开放对应的端口(推荐):

# 同时开放多个端口
sudo firewall-cmd --permanent --add-port=9987/udp
sudo firewall-cmd --permanent --add-port=10011/tcp
sudo firewall-cmd --permanent --add-port=10022/tcp
sudo firewall-cmd --permanent --add-port=30033/tcp
sudo firewall-cmd --permanent --add-port=41144/tcp
# 重新加载配置
sudo firewall-cmd --reload

非常粗暴的关闭防火墙放行所有端口(不推荐):

# 停止 firewalld 服务
sudo systemctl stop firewalld
# 禁用防火墙服务(开机不自动启动)
sudo systemctl disable firewalld

重启防火墙

# 重启 firewalld 服务
sudo systemctl restart firewalld