本文由gpt生成,但绝大多数操作已经经过验证有效 (部署完成 + 提取旧频道结构为止)
适用对象
- 私人 / 小团体服务器
- 原 TS3 跑在 Linux(CentOS 7)
- 目标是 TS6(Docker 部署)
- 不做自动迁移,只手动复刻结构与图标
- 系统:CentOS 7.9 x86_64
- 原服务:TeamSpeak 3 Server(本地部署)
- 新服务:TeamSpeak 6 Server(官方 Docker 镜像)
- Docker 来源:腾讯云镜像源(国内可用)
kill $(cat ts3server.pid)确认进程已停止:
ps -ef | grep ts3server进入 TS3 目录(示例):
cd /home/lighthouse/teamspeak3打包 files 目录:
tar -czvf ts3-files-backup-$(date +%F).tar.gz files/该压缩包包含:
- 频道图标
- 用户头像
- 文件频道历史内容
mkdir ~/ts3_icons_export
cp -r files/virtualserver_1/internal/icons ~/ts3_icons_export/
cp files/virtualserver_1/internal/icon_* ~/ts3_icons_export/ 2>/dev/null
cp files/virtualserver_1/internal/avatar_* ~/ts3_icons_export/ 2>/dev/nullsudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo sed -i 's|https://download.docker.com|https://mirrors.cloud.tencent.com/docker-ce|g' /etc/yum.repos.d/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin启动并设为开机启动:
sudo systemctl start docker
sudo systemctl enable docker验证:
docker --version
docker compose versionsudo docker pull teamspeaksystems/teamspeak6-server:latestmkdir ~/teamspeak6
cd ~/teamspeak6version: "3.8"
services:
teamspeak:
image: teamspeaksystems/teamspeak6-server:latest
container_name: teamspeak6
restart: unless-stopped
ports:
- "9987:9987/udp"
- "10080:10080/tcp"
- "30033:30033/tcp"
environment:
- TSSERVER_LICENSE_ACCEPTED=accept
volumes:
- ts6-data:/var/tsserver
volumes:
ts6-data:sudo docker compose up -d查看状态:
sudo docker ps
sudo docker compose logs -f --tail=100日志中会显示:
- Server Query Admin 账号
- ServerAdmin token(权限密钥)
务必保存。
- UDP 9987:语音主端口
- TCP 10080:Web / 管理
- TCP 30033:文件传输
确认防火墙 / 云安全组已放行。
cd /home/lighthouse/teamspeak3
sqlite3 ts3server.sqlitedbPRAGMA table_info(channels);字段说明:
channel_idchannel_parent_idserver_id
PRAGMA table_info(channel_properties);关键字段:
id→ channel_idident→ 属性名value→ 属性值
sqlite3 ts3server.sqlitedb \
"SELECT id AS channel_id, value AS name FROM channel_properties WHERE ident='channel_name';"sqlite3 ts3server.sqlitedb \
"SELECT channel_id, channel_parent_id FROM channels;"最终整理成:
channel_id,pid,name,sort_order
1,0,"大厅",0
14,0,"工会",2
25,14,"聊天室",0
53,14,"讨论室",25
...到这里为止,你已经:
- 完整保留了 频道树结构
- 不依赖 TS6 自动迁移
- 可以在 TS6 中 手动、干净地重建频道