欢迎光临
我们一直在努力

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 < 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
赞(0)
未经允许不得转载:171主机测评 » Terraria 服务端部署(Docker)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址