文章目录
- Terraria 服务端部署(Docker)
-
- 简介
- Docker 镜像配置,然后后重启
- 拉取 Terraria TShock 的 Docker 镜像
- 使用 Docker 启动游戏服务器
-
- 方式一,自动创建新世界
- 方式二,手动创建
- 方式三,使用已有的地图运行,并挂起在后台
- 配置游戏账号
-
- 作为服主
- 作为普通玩家
- 权限组参考
- 泰拉瑞亚 TShock 命令
- 相关链接
- 附:官方 Docker 镜像打包
Terraria 服务端部署(Docker)
简介
- 服务端采用 TShock,TShock 是为泰拉瑞亚服务器和社区开发的一个工具箱,更多详情请看 GitHub 地址:https://github.com/Pryaxis/TShock
- 为了省去环境配置等麻烦问题,直接采用封装好的 Docker 镜像部署
- 另外,下文中的命令的服务器环境为 Linux
Docker 镜像配置,然后后重启
- 由于国内访问国外 DockerHub 不通,需要配置下本地 Docker 的镜像仓库为国内的(或者自己开个代理)
- 国内大部分知名镜像站点已经关闭了(或者只提供常用镜像),目前找到一个不错的,镜像站网址 https://docker.xuanyuan.me/
- 第一步,配置镜像站
sudo vim /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
EOF
- 第二步,重启 docker
sudo systemctl daemon-reload
sudo systemctl restart docker
- 第三步,查看是否已成功修改镜像仓库源(在输出信息的末尾能看到)
docker info
拉取 Terraria TShock 的 Docker 镜像
- 镜像网址 https://hub.docker.com/r/ryshe/terraria ,先找到自己需要的版本再拉取
- 拉取命令样例
- 直接拉最新的 $ docker pull ryshe/terraria
- 拉取某个固定版本的$ docker pull ryshe/terraria:tshock-1.4.4.9-5.2.3
使用 Docker 启动游戏服务器
- 先在本地服务器创建一个目录,方便等下 Docker 容器挂载 $ mkdir -p $HOME/terraria/world
方式一,自动创建新世界
- 不推荐
# test_world.wld 是创建的地图文件名,可以自定义
# -autocreate 2 指定地图大小,1 < 2 < 3
docker run -it –rm \\
-p 7777:7777 \\
-v $HOME/terraria/world:/root/.local/share/Terraria/Worlds \\
ryshe/terraria:tshock-1.4.4.9-5.2.3 -world /root/.local/share/Terraria/Worlds/test_world.wld -autocreate 2
方式二,手动创建
- 第一次使用时,建议用这个命令,会提示你创建地图或使用已有地图,并启动服务
# Terraria 相关文件会生成到 /root/.local/share/Terraria/Worlds 目录
docker run -it –rm \\
-p 7777:7777 \\
-v $HOME/terraria/world:/root/.local/share/Terraria/Worlds \\
ryshe/terraria:tshock-1.4.4.9-5.2.3
- 关闭命令终端后,游戏服务也会停止
方式三,使用已有的地图运行,并挂起在后台
- 后续启动游戏时,建议使用该命令,直接在后台长期运行
# WORLD_FILENAME 用于指定地图文件名称,根据你之前创建的来配置
# TSHOCK_LANGUAGE 用于指定 TShock 服务器的语言,默认根据当前环境来设置,是英文
docker run -d –rm \\
-p 7777:7777 \\
-v $HOME/terraria/world:/root/.local/share/Terraria/Worlds \\
–name="terraria" \\
-e WORLD_FILENAME=test_world.wld \\
-e TSHOCK_LANGUAGE=zh_CN \\
ryshe/terraria:tshock-1.4.4.9-5.2.3
- 可以在服务器本地 /root/.local/share/Terraria/Worlds 目录下找到 config.json 文件,进行一些配置,例如
- ServerPassword 可以设置服务器默认的密码
- MaxSlots 可以设置服务器默认的最大玩家数量
- ServerPort 可以设置 TShock 服务端口,不要修改,需要改端口的话请在 docker 命令处改
- 甚至还可以设置游戏服务器数据库,默认使用的 sqlite,看样子支持 MySql
- 想查看日志?
- 执行命令$ docker ps,找出 TShock 的容器 ID
- 执行命令 $ docker logs <容器ID>,查看对应 TShock 服务日志
- 另外,还可以在目录 /root/.local/share/Terraria/Worlds下找到日志文件,进行查看
配置游戏账号
作为服主
- 服务器正常启动后,会在日志内末尾输出临时的管理员 setup code (随机的),如下图的末尾

- 作为服主登入游戏后建议先根据提示输入/setup [setup_code]来获取临时的管理权限,例如 /setup 533046
- 然后,为自己创建一个 owner 账号 /user add [account name] [password] owner,例如 /user add tom qwe12345 owner
作为普通玩家
- 普通玩家第一次进入游戏后,属于游客 guest,部分功能会被限制,经常在游戏内收到红色提示
- 建议最好给自己注册一个账户,命令为/register [account name] [password]
- 然后,每次连接进服务器后,记得登入,命令为 /login [account name] [password]
- 普通玩家登录游戏账号后,默认所属权限组为 default,如需要更多权限请联系管理员。例如,服主使用命令 /user group jerry admin,可以将账户 jerry 修改至管理员权限组。
权限组参考
- 下表参考来自 https://tr.monika.love/docs/tshock-tutorial-1/
| guest | 注册、登陆、发送服务器消息 | 访客 |
| default | 进行受限制的正常游戏(平民玩家) | 平民玩家 |
| vip | 预留服务器位,重命名NPC,召唤boss/入侵,虫洞 | |
| newadmin | kick玩家,查看玩家Index,设置重生点,调时间 | 新手管理员 |
| admin | ban玩家,管理传送点,生成boss/怪物,tp | 正式管理员 |
| trustedadmin | 刷/给予物品(/i和/g),无视各种限制,上传本地存档作为SSC存档 | 资深管理员 |
| owner | tshock.su(使用指令绕过权限,基本等同于superadmin) | 服主 |
| superadmin | 具有所有权限,注意,这个组是只读的,无法为这个用户组手动配置权限 |
- 权限能力范围从上到下,越来越多。数据库表 GroupList 如下

泰拉瑞亚 TShock 命令
# 新建账户 [account name] 并设置为 服主
/user add [account name] [password] owner
# 给某个 [account name] 管理员权限
/user group [account name] admin
- 更多命令请参考
- TShock从零开始的使用教学 – 上
- [泰拉瑞亚]Tshock权限大全 – 哔哩哔哩
- [泰拉瑞亚]Tshock指令大全 – 哔哩哔哩
相关链接
- GitHub: https://github.com/Pryaxis/TShock
- DockerHub: https://hub.docker.com/r/ryshe/terraria
- 国内 Docker 镜像站:https://docker.xuanyuan.me/
- TShock 文档:https://github.com/Pryaxis/TShock/wiki
- TShock 教学:https://tr.monika.love/docs/tshock-tutorial-1/
附:官方 Docker 镜像打包
- 有时候我们需要手动打包,原因如下:
- DockerHub 的 TShock 镜像更新不一定是最新的版本,部分 BUG 没修复 https://hub.docker.com/r/ryshe/terraria
- 想要自己修改代码,做自定义的
- 记得先提前安装好 Git、Docker,操作如下
# 拉取代码
git clone https://github.com/ryansheehan/terraria.git
# 列出所有分支,并切换到对应的版本 Tag 分支
git tag
git checkout v5.2.4
# 打包镜像
docker build -t alion/terraria:tshock-1.4.4.9-5.2.4 .
# 保存独立的镜像文件,便于分享
docker save alion/terraria:tshock-1.4.4.9-5.2.4 -o alion-terraria-tshock-1.4.4.9-5.2.4.tar
# 别人拿到镜像文件后,手动加载
docker load -i alion-terraria-tshock-1.4.4.9-5.2.4.tar

- TShock 5.2.4 似乎没法正常读取系统环境变量,启动时要指定一下参数,样例如下
docker run -it –rm \\
-p 7777:7777 \\
-v $HOME/terraria/tshock:/tshock \\
-v $HOME/terraria/worlds:/worlds \\
-v $HOME/terraria/plugins:/plugins \\
alion/terraria:tshock-1.4.4.9-5.2.4 -language zh-Hans
- 虽然指定了汉语,可以让服务端显示汉语,但是服务端响应给客户端的依然是英文(之前响应的汉语),所以没啥用,直接不指定了
- 后台运行命令样例如下
docker run -d –rm \\
–name="terraria" \\
-p 7777:7777 \\
-v $HOME/terraria/tshock:/tshock \\
-v $HOME/terraria/worlds:/worlds \\
-v $HOME/terraria/plugins:/plugins \\
alion/terraria:tshock-1.4.4.9-5.2.4 -world /worlds/test_world_524.wld
- 记得先创建好目录 $ mkdir -p $HOME/terraria




