当前位置: 首页 > 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.lryc.cn/news/607717.html

相关文章:

  • 【Java】不允许直接操作数据表中的数据,开发前台界面来实现对多个数据表的增删改查
  • 在 AKS 中运行 Azure DevOps 自托管代理-2
  • 【Office】Office2024最新版下载安装使用教程(附多版本安装包)
  • 【深度学习新浪潮】什么是专业科研智能体?
  • Flutter镜像替换
  • 大模型学习专栏-导航页
  • 第十四天:C++内存管理
  • 5-EP4CE10F17C8-引脚配置
  • 亚像素级精度的二维图像配准方法
  • Metamorph、LlamaFusion、MetaQuery论文解读
  • 第13届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年1月22日真题
  • 两个服务之间的大规模数据推送
  • 《文明5》错误代码0xc0000142修复方法
  • linux编译基础知识-工具链
  • Java 日期时间格式化模式说明
  • 蓝桥杯----DA、AD
  • Prim算法
  • 26数据结构-顺序表
  • python列表推导式
  • windows系统安装文生图大模型Stable diffusion V3.5 large(完整详细可用教程)
  • 损失函数和调度器相关类代码回顾理解 |nn.CrossEntropyLoss\CosineAnnealingLR
  • 接口幂等性
  • 数据库小知识
  • C4画图实战案例分享
  • 利用CompletableFuture优化查询效率
  • FreeRTOS硬件中断发生时的现场
  • 逻辑回归在银行贷款审批中的应用:参数选择与实践
  • c++详解(宏与内联函数,nullptr)
  • 查看主板信息的3种方法
  • PL-0功能拓展及基于VSCode的IDE配置