适用场景:你租了一台 VPS / 云服务器,用 面板(Pterodactyl / MCSManager / 商家定制面板)开了一个 tModLoader 服务端,现在要把本地电脑上的 模组 (.tmod)​ 和 存档地图 (.wld)​ 搞上去。


0. 先搞清楚核心逻辑

泰拉瑞亚的 Mod 服不走原版服务端,而是走 tModLoader。面板只是帮你把文件摆到正确的目录 + 提供启动/控制台而已,本质和裸机 Linux 的目录结构是同一套

内容

tModLoader 默认路径(Linux 容器内)

Mods 目录

~/.local/share/Terraria/tModLoader/Mods/

地图 / Worlds 目录

~/.local/share/Terraria/tModLoader/Worlds/

ModConfig 配置

~/.local/share/Terraria/tModLoader/ModConfigs/

配置文件

服务端根下的 serverconfig.txt(或面板变量)

⚠️ 很多商面板把容器根映射到了 /home/container/,所以你面板里看到的可能是 ModLoader/Mods/ModLoader/Worlds/这种相对路径——跟着面板的文件管理器走就没错,它们最终落到的就是上面那几个目录。


1. 确认你的服务端已经是 tModLoader

进面板 → 一般有个 Startup / 启动设置 / 服务端版本​ 的地方:

  • 必须是 tModLoader(不是 vanilla Terraria)

  • 如果是原版,切过去后会自动生成 Mods / Worlds 目录骨架

切完别忘了先 Stop → Start​ 跑一次,让它生成目录结构。


2. 上传 Mods(模组)

方法 A:从本地客户端导出(最稳、推荐)

在你自己电脑上:

  1. 打开 tModLoader​ → 主菜单 → 创意工坊 / Mod Browser

  2. 把你要的 Mod 全部 下载 + 启用

  3. 回到主菜单 → 创意工坊 → 管理模组 → 模组整合包

  4. 点右下角 「将已启用的模组生成为新的整合包」,随便起个英文名

  5. 「导出完整整合包」​ → 系统会弹开一个文件夹,里面大致长这样:

你的整合包名/
 └── SaveData/
     └── Mods/
         ├── xxx.tmod
         ├── yyy.tmod
         └── enabled.json

那个 Mods/里的 .tmod+ enabled.json就是你要的东西。

传到面板上:

  1. 面板里打开 File Manager(文件管理器)

  2. 定位到 ModLoader/Mods/(或 Mods/,看面板怎么命名)

  3. 直接把 .tmod文件拖进去上传

  4. 同时把 enabled.json也传上去(或编辑已有那个)

如果面板不支持拖拽批量上传,就用 SFTP / FTP(面板一般会给你 IP + 端口 + 用户名 + 密钥/PW),工具推荐 FileZilla 或 WinSCP。

enabled.json怎么写?

这个文件告诉服务端"哪些 Mod 要加载",内容是 纯 JSON 数组,写 文件名去掉 .tmod

[
  "CalamityMod",
  "MagicStorage",
  "RecipeBrowser"
]

注意:不是显示名,而是 .tmod文件的文件名本身(不含后缀)。写错一个就整个列表可能挂。

方法 B:纯手动(没有本地 tModLoader 也行)

  1. Steam Workshop → tModLoader找到 Mod 页面,复制 id

  2. 从本地 Steam 的 steamapps/workshop/content/1281930/<id>/里掏出 .tmod文件

  3. 上传到服务器 Mods/目录

  4. 手写 enabled.json

但这个方法比较折腾,方法 A 导出整合包是最省事的

✅ Mod 上传完

  1. Stop 服务器

  2. Start 服务器

  3. 看控制台日志有没有 Loading mod: xxx/ XX mods loaded之类字样

如果启动直接崩:先看是不是 Mod 版本不匹配(服务端 tML 版本 vs Mod 编译版本),再看是不是缺依赖(比如 Calamity 还要装 Calamity Mod Music/ Subworld Library之类)。


3. 上传 Saves 地图 / Worlds

你需要哪两个文件?

一个泰拉瑞亚世界实际上由 一对文件​ 组成:

扩展名

作用

.wld

主地图数据(必须有

.twld

旅伴/旅行模式的额外数据(可选但有就一起带)

在你本地电脑上它们在文档\My Games\Terraria\tModLoader\Worlds

上传步骤

  1. 面板 → File Manager

  2. 找到 ModLoader/Worlds/(或 Worlds/)目录

  3. .wld.twld一起上传进去

然后在面板上告诉服务端用哪个世界:

方式一:改面板里的启动参数 / 变量

很多面板的 Startup 页有个 World NameWorld Path字段,填法通常是:

Worlds/你的地图名.wld

或直接文件名(看你面板模板怎么写)。

方式二:改 serverconfig.txt(更底层、更通用)

在服务端根目录找 serverconfig.txt,加/改这几行:

# 指定世界文件(写绝对或相对于工作目录的路径都行)
world=/root/.local/share/Terraria/tModLoader/Worlds/YourWorld.wld

# 最大人数
maxplayers=8

# 端口
port=7777

# 密码(可选)
password=你的密码

# 语言
language=zh-Hans

保存 → Stop → Start。


4. 目录结构速览(帮你对齐脑子里的地图)

典型 tModLoader 服务端的数据目录长这样:

~/.local/share/Terraria/tModLoader/
 ├── Mods/
 │   ├── CalamityMod.tmod
 │   ├── MagicStorage.tmod
 │   ├── enabled.json        ← 控制启用的
 │   └── ModPacks/            ← 整合包(可选)
 ├── Worlds/
 │   ├── MyWorld.wld
 │   └── MyWorld.twld
 ├── ModConfigs/              ← 模组配置文件(可选同步)
 └── Players/                 ← 服务器上一般不存玩家,但这里有时会出现

面板里你看的相对路径,最终就是映射到这套结构上。


5. 常见坑位清单(踩过都说痛)

症状

原因 & 修法

控制台启动后 Mod 没加载

.tmod放错目录 / enabled.json格式不对(必须是 JSON 数组)/ 文件名拼写错

玩家连不上,报 Mod 版本不匹配

客户端和服务端的 Mod 版本必须完全一致,更新一下再同步

地图认不出 / 选世界时看不到

.wld没放进 Worlds/,或路径没在 serverconfig.txt里指对

原版服务端切 tML 后世界打不开

tML 的世界可能嵌了 Mod 数据,别拿原版去强行读,反之亦然

面板上传速率慢、大文件传不动

换 SFTP(FileZilla)上传,比网页拖拽稳得多

启动卡住不动

内存不够(灾厄这种大 Mod 挺吃 RAM),检查服务器内存 ≥ 2GB(推荐 4GB)


6. 一套最小操作流程(TL;DR)

本地 tML
  → 下好 Mod + 启用
    → 导出整合包 → 拿到 Mods/*.tmod + enabled.json
      → 面板文件管理器 → 丢进 Mods/

本地 Documents/My Games/Terraria/tModLoader/Worlds/
  → 拷出 xxx.wld + xxx.twld
    → 面板 → 丢进 Worlds/

面板 Startup / serverconfig.txt
  → world=指向 xxx.wld

Stop → Start → 看日志 ✅

没人敢说自己的人生很轻松。但可以肯定,这就是它的迷人之处。