当前位置: 首页 > news >正文

Terraria 服务端部署(Docker)

文章目录

  • 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 < 3docker 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/入侵,虫洞
newadminkick玩家,查看玩家Index,设置重生点,调时间新手管理员
adminban玩家,管理传送点,生成boss/怪物,tp正式管理员
trustedadmin刷/给予物品(/i和/g),无视各种限制,上传本地存档作为SSC存档资深管理员
ownertshock.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 镜像打包

  • 有时候我们需要手动打包,原因如下:
    1. DockerHub 的 TShock 镜像更新不一定是最新的版本,部分 BUG 没修复 https://hub.docker.com/r/ryshe/terraria
    2. 想要自己修改代码,做自定义的
  • 记得先提前安装好 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
http://www.dtcms.com/a/311546.html

相关文章:

  • Trae + Notion MCP:将你的Notion数据库升级为智能对话机器人
  • 自动驾驶中的传感器技术14——Camera(5)
  • C#开发入门指南_学习笔记
  • Clickhouse#表记录转换为insert语句
  • 回归预测 | Matlab实现CNN-LSTM-Multihead-Attention多变量回归预测
  • Spring AI MCP 技术深度解析:从工具集成到企业级实战
  • PyQt6教程(003):运行QTDesigner生成的UI文件
  • 零基础 “入坑” Java--- 十六、字符串String 异常
  • 深入理解C++中的Lazy Evaluation:延迟计算的艺术
  • 搜索与图论(最小生成树 二分图)
  • 无人机光伏巡检漏检率↓78%!陌讯多模态融合算法实战解析
  • 关于解决wandb无法连接的问题(timed out problem)
  • spring学习笔记三
  • pyqt5显示任务栏菜单并隐藏主窗口,环境pyqt5+vscode
  • Python序列去重高级指南:保持顺序的高效去重技术
  • python:如何调节机器学习算法的鲁棒性,以支持向量机SVM为例,让伙伴们看的更明白
  • Linux 系统管理-15-OpenSSH 服务管理
  • NLP——Transformer
  • flutter实时播报的桌面应用遇到的问题
  • I2C(韦东山HAL库)
  • 2023年ASOC SCI2区TOP,可修灰狼优化算法RGWO+燃料电池参数辨识,深度解析+性能实测
  • 【无标题】根据11维拓扑量子色动力学模型(11D-TQCD)与当代宇宙学理论的融合分析,宇宙轮回的终结机制及其最终状态可系统论述如下:
  • 商品中台数据库设计
  • WPFC#超市管理系统(4)入库管理
  • 音视频学习(四十八):PCM和WAV
  • 基于深度学习的医学图像分析:使用GAN实现医学图像增强
  • 进阶向:Python生成艺术图案(分形、数学曲线)
  • MySQL索引解析
  • vue3pinia
  • Corrosion2靶机