文章目录
- 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
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
方式一,自动创建新世界
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
方式二,手动创建
- 第一次使用时,建议用这个命令,会提示你创建地图或使用已有地图,并启动服务
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
方式三,使用已有的地图运行,并挂起在后台
- 后续启动游戏时,建议使用该命令,直接在后台长期运行
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
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