使用Docker在威联通NAS上部署泰拉瑞亚(Terraria)联机服务器完整教程
项目介绍
本文方案基于 GitHub 上的一个开源项目。该项目提供了一个 Dockerfile,旨在将 TShock 服务端与泰拉瑞亚官方服务器程序(TerrariaServer.exe)一同容器化,从而实现在 Linux 系统环境中便捷运行。通过 Docker 容器技术,用户可以免去在 Linux 系统上手动安装游戏服务器、配置运行环境以及处理各种依赖库的繁琐步骤。
该项目在 GitHub 上的完整名称为:ryansheehan/terraria。
部署流程
我们以威联通(QNAP)NAS 为例,采用 Docker Compose 的方式来部署服务器。这种方法通过配置文件定义服务,使得部署和管理更为清晰和可重复。
以下为 Docker Compose 的部署代码示例,其中已包含必要的配置与说明。
services:
terraria:
# 请注意镜像版本应与游戏客户端版本匹配
# 本文撰写时,最新稳定游戏版本为 v1.4.5,因此拉取对应镜像
# ‘latest’ 标签可能指向旧版本(如v1.4.4.9),请根据实际情况选择
# 后续更新时,拉取新版本镜像并重新部署容器即可
image: ryshe/terraria:vanilla-1.4.5.2
container_name: terraria
stdin_open: true # 开启标准输入,用于后续交互式创建世界
tty: true # 分配一个伪终端,防止容器自动退出
# environment:
# - WORLD_FILENAME=world.wld # 可指定加载的特定世界文件
# - CONFIGPATH=config.json # 可自定义服务器配置文件路径(可选)
ports:
- "7787:7777" # 映射端口:主机端口7787 -> 容器内游戏服务端口7777
- "7878:7878" # 映射端口:主机端口7878 -> 容器内REST API端口7878
volumes:
- /share/Container/terraria/world:/root/.local/share/Terraria/Worlds # 持久化保存世界文件(.wld)
- /share/Container/terraria/plugins:/plugins # 挂载插件目录
- /share/Container/terraria/logs:/tshock/logs # 持久化日志文件
restart: always # 设置容器始终重启,确保服务高可用
需要特别注意的是,挂载卷 /terraria/world 目录中若存在 config.json 配置文件,容器启动时会自动加载。若后期需要调整服务器参数,可直接修改此文件。插件文件通常为 .dll 格式,需手动放入对应的挂载目录。
接下来,在威联通 NAS 的 Container Station 应用中,选择创建新的应用程序,并将上述代码粘贴至编辑区。

配置服务器
与部分服务不同,泰拉瑞亚服务器初期配置无需通过网页管理界面。容器部署完成后,我们首先查看其日志输出。日志中会提示用户开始创建游戏世界。

此时,需要使用 SSH 工具连接到您的 NAS 设备,并执行以下命令以连接到正在运行的容器内部进行交互操作。
docker attach terraria # 连接到名为 ‘terraria’ 的容器会话

由于是全新部署,尚无任何世界存档,因此需要根据提示输入 n 并回车,以创建一个新的世界。

随后,系统会提示选择世界尺寸,包括小型、中型、大型。输入对应的数字编号并回车确认选择。

接下来选择游戏难度模式,包括「经典」、「专家」、「大师」以及「旅途」模式。同样输入对应编号并回车。

选择世界的地形特征,即决定世界生成「腐化之地」还是「猩红之地」,或者选择「随机」。输入编号并回车。

为您的世界设定一个名称,输入后回车确认。

最后可以输入一个特定的世界种子(Seed),如果无需特定种子,直接按回车跳过即可。

稍等片刻,服务器会开始生成世界。生成完毕后,界面会列出可用世界。请确保与下图所示状态一致,然后进行下一步操作:输入数字 1 并回车,以选择刚刚创建的世界。请注意,每次服务器重启(包括版本更新后)都需要重新执行此选择世界的步骤。

设置服务器最大在线玩家数量,最高支持16人。通常,拥有1GB至1.5GB内存的服务器足以支持8人及以下流畅游玩。输入期望的数字后回车。

设置服务器监听的端口号,默认是 7777。请直接输入 7777 并回车(注意下图中示例输入为7787,请忽略)。

系统询问是否自动配置端口转发(UPnP)。在大多数NAS或内网环境下,建议选择否。输入 n 并回车。

为服务器设置连接密码。如果仅为熟人私密联机,可以不设密码,直接按回车跳过。

完成以上所有步骤后,将看到如下图所示的服务器运行界面,这标志着泰拉瑞亚服务器已在容器内成功启动并运行。

联机游玩
在您的电脑上启动 Steam 客户端,并在游戏库中找到泰拉瑞亚(Terraria)。

启动游戏后,在主界面选择「多人模式」。

选择「通过 IP 加入」。

分别输入您 NAS 的 IP 地址(如果从外网连接,则需要公网IP或内网穿透地址)和之前在 Docker Compose 中映射的主机端口(本例为 7787)。若想从互联网访问,必须在路由器中设置端口转发(将路由器的公网端口转发到NAS内网IP的7787端口)。对于动态公网IP用户,可考虑使用DDNS服务绑定域名。若无公网IP,则需要借助内网穿透工具(如 frp、ngrok 等),具体方法可参考其他联机游戏(如《我的世界》)的社区经验。

成功连接后,即可加入服务器世界开始游戏。

此时,在服务器容器的日志中,也可以看到玩家成功加入的连接信息。

玩家退出游戏时,服务器会自动保存世界进度。

关于 TShock 插件的安装与管理,本文不再赘述,用户可根据需要将插件文件放入对应挂载目录并进行配置。
结语
通过 Docker 容器化部署,泰拉瑞亚服务器的搭建与管理变得十分简便,特别适合在 NAS 等常开设备上运行。希望本教程能帮助您与朋友顺利开启专属的冒险旅程。