Baram X 3

使用 Docker 在 Debian 12 上部署多个 TeamSpeak 服务器

第一步:服务器环境准备 (Debian 12)

我们需要拥有一台拥有公网 ip 的云服务器,购买阿里云华为云腾讯云均可,并且安装 debian 或者 ubuntu 系统等支持 docker 的服务器系统,本文使用 Debian12 进行演示。

首先,我们需要在服务器上安装 Docker 和 Docker Compose,我们将使用国内镜像源来加速安装过程。

1. 更新系统并安装依赖

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg

2. 添加阿里云的 Docker GPG 密钥和软件仓库

添加 GPG 密钥

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

添加软件仓库

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3. 安装 Docker 引擎和 Docker Compose

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

4. 开放相关端口

前往云服务器安全组策略开放相关端口,如下:

9987/UDP 语音通话 (Voice)

10011/TCP 服务器查询 (ServerQuery)

30033/TCP 文件传输 (File Transfer)

以及将来在对每个端口绑定独立域名时需要的 TSDNS 服务端口 41144/TCP

第二步:部署你的第一个 TS 服务器

现在,让我们来部署第一个 TS 实例。

1. 创建项目目录

为你的第一个服务器创建一个专属文件夹,并进入该目录。

mkdir ts_server_1
cd ts_server_1

2. 创建 docker-compose.yml 文件

nano docker-compose.yml

复制粘贴如下内容到 docker-compose.yml 中:

version: "3.1"
services:
  teamspeak:
    image: teamspeak
    restart: always
    ports:
      - 9987:9987/udp
      - 10011:10011
      - 30032:30032
    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
      TS3SERVER_FILETRANSFER_PORT: 30032
      TS3SERVER_FILETRANSFER_IP: 0.0.0.0
    volumes:
      - ./ts3_files:/var/ts3server/
    depends_on:
      - db
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: teamspeak
    volumes:
      - ./mariadb_data:/var/lib/mysql

其中 ports 部分是容器的端口映射规则,即将 9987 端口(冒号后容器内端口)映射到宿主机的 9987 端口(冒号前容器外端口 9987),我们稍后多开时将会对这部分进行修改。

Ctrl+O 回车保存,Ctrl+X 退出。

输入:

sudo docker compose up

复制终端输出的全部内容保存到本地,将来会用到。

Ctrl+C 退出。

输入:

sudo docker compose up -d

使其在后台运行。

现在你可以打开你的 TeamSpeak 客户端输入你的服务器公网 IP 地址尝试对容器进行链接。

现在我们就基于 Docker 部署好了第一个 TeamSpeak 服务器。接下来我们部署第二个,其仅有端口和连接方式的改变。

第三步:部署你的第二个 TS 服务器

同部署第一个服务器一样。

使用 nano 指令编写 docker-compose.yml,但是做一些端口的改变,如下:

version: "3.1"
services:
  teamspeak:
    image: teamspeak
    restart: always
    ports:
      - 9988:9987/udp
      - 10012: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
      TS3SERVER_FILETRANSFER_PORT: 30033
      TS3SERVER_FILETRANSFER_IP: 0.0.0.0
    volumes:
      - ./ts3_files:/var/ts3server/
    depends_on:
      - db
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: teamspeak

ports 部分的端口进行了修改,将第二个 TeamSpeak 服务器容器内的 9987 端口映射到了宿主机的 9988 端口,并映射 10011 端口到宿主机 10012。

以及修改 TS3SERVER_FILETRANSFER_PORT: 为 30033 区别于第一个服务器避免冲突

同样的保存 docker-compose.yml,然后在前台启动容器复制关键信息,然后再后台运行容器。

此时我们将容器内的 9987 端口映射到了宿主机的 9988 端口上,所以如果我们要链接这个容器内的 TeamSpeak,需要使用服务器公网 ip+端口的地址来进行链接,比如:

123.123.123.123:9988

这样我们就基于 Docker 在一台 Debian 服务器上多开了 TeamSpeak 服务器。

个人公益 Teamspeak 服务器分享:

👏 完全免费,欢迎来玩!

#docker #teamspeak #tech