本镜像提供了基于tModLoader的Terraria 1.4.4模组服务器的Docker化部署方案,支持自动创建世界、管理模组、配置服务器参数,可快速搭建多人Terraria模组游戏环境。
Docker Hub镜像地址:
hexlo/terraria-tmodloader-server:latest
同时提供:Vanilla Terraria多架构服务器(amd64和arm64) ===> Dockerhub镜像:
hexlo/terraria-server-docker:latest
docker-compose.yml文件(见下方示例)。也可将docker-compose-example.yml重命名为docker-compose.yml并修改tModLoader/Mods目录中,编辑install.txt和enabled.json以包含所需模组(见下方模组配置示例)serverconfig.txt文件覆盖此行为,需在Dockerfile中设置(取消注释)USE_CONFIG_FILE=1生成世界的最简单方法是使用特定环境变量在容器启动时自动创建世界。以下是自动创建世界所需的变量:
AUTOCREATE=1WORLDNAME=YourWorld.wldDIFFICULTY=1所有变量详见下方环境变量部分。
yamlservices: tml: container_name: tml #restart: unless-stopped build: context: . args: UID: 1000 GID: 1000 #TML_VERSION: v2023.8.3.3 #entrypoint: [ "/bin/bash" ] # 如需进入容器内部调试,取消此行注释 tty: true stdin_open: true ports: - 7785:7777 volumes: - ./tModLoader:/home/tml/.local/share/Terraria/tModLoader environment: - AUTOCREATE=1 - WORLDNAME=tmlCalamity1.wld - DIFFICULTY=1 # - WORLD=/home/tml/.local/share/Terraria/tModLoader/Worlds/tmlCalamity1.wld - PASSWORD=passworld - MOTD="Welcome to my tModLoader Server :)"
docker-compose up -dTerraria tModLoader世界由两个文件组成:.wld和.twld。若已有tModLoader兼容世界,只需将这两个文件放入Worlds目录。
有两种创建新世界的方法:
在docker-compose.yml的environment:部分设置以下变量:
yaml... environment: - AUTOCREATE=1 - WORLDNAME=tmlCalamity1.wld - DIFFICULTY=1 ...
变量的描述和可能值见下方环境变量部分
可通过附加到容器并通过Terraria服务器命令提示符创建或选择世界。确保未使用环境变量,删除或注释docker-compose.yml中的environment:部分。
bashdocker exec -it <容器名称> tmux a
若使用提供的docker-compose.yml,容器名称为tml,可执行:
bashdocker exec -it tml tmux a
不停止容器而分离:ctrl+b + d
若希望服务器在后续运行时自动启动,需通过WORLD环境变量提供现有世界的路径,同时可安全移除用于自动创建世界的变量。以下是environment:部分示例:
yamlenvironment: - WORLD=/home/tml/.local/share/Terraria/tModLoader/Worlds/tmlCalamity1.wld - PASSWORD=passworld - MOTD="Welcome to my tModLoader Server :)"
可通过在tModLoader/Mods/install.txt文件中提供Steam Workshop ID安装模组。模组ID可在模组URL中找到,例如Calamity Mod的ID是2824688072。
2824688072 2824688266 2909886416 2619954303 2669644269 2570931073 2815540735 3044249615 2599842771 2802867430
要在服务器上启用或禁用模组,修改tModLoader/Mods/enabled.json文件中的模组名称列表。部分模组可能存在冲突(尤其是大型内容模组),详情参考模组 wiki。
json[ "CalamityMod", "CalamityModMusic", "BossChecklist", "RecipeBrowser" ]
注意:模组名称数组需满足以下条件:
- 模组名称与列表中显示的完全一致
- 模组名称用双引号括起
- 用逗号分隔
- 数组最后一项后无逗号
install.txt和enabled.json文件需在构建镜像前修改。
注意:变量区分大小写!
| 环境变量 | 默认值 | 描述 | 示例 |
|---|---|---|---|
world | (空) | 世界路径。服务器自动启动需提供世界路径 | world=/root/.local/share/Terraria/Worlds/My_World.wld |
autocreate | 2 | 当-world指定的路径中无世界时创建世界。世界大小:1(小),2(中),3(大) | autocreate=2 |
seed | (空) | 使用-autocreate时指定世界种子 | seed=someseed123 |
worldname | (空) | 使用-autocreate时设置世界名称 | worldname=world1 |
difficulty | 0 | 使用autocreate时设置世界难度。选项:0(普通),1(专家),2(大师),3(旅途) | difficulty=1 |
maxplayers | 16 | 最大允许玩家数 | maxplayers=8 |
port | 7777 | Terraria服务器内部使用端口,不应修改 | port=8123 |
password | (空) | 服务器密码 | password=serverpassword |
motd | (空) | 服务器每日消息文本 | motd="Welcome to my private server! :)" |
worldpath | /root/.local/share/Terraria/Worlds | 世界文件存储目录 | worldpath=/some/other/dir |
banlist | banlist.txt | 黑名单位置,默认为工作目录中的"banlist.txt" | banlist=/configs/banlist.txt(需将本地banlist.txt挂载到容器的/configs/banlist.txt) |
secure | 1 | 是否防止作弊:1(禁止作弊),0(允许作弊) | secure=0 |
language | en/US | 设置服务器语言(语言代码)。可用代码:en/US=英语,de/DE=德语,it/IT=意大利语,fr/FR=法语,es/ES=西班牙语,ru/RU=俄语,zh/Hans=中文,pt/BR=葡萄牙语,pl/PL=波兰语 | language=fr/FR |
upnp | 1 | 启用/禁用自动通用即插即用 | upnp=0 |
npcstream | 1 | 减少敌人卡顿但增加带宽使用。数值越低卡顿越少但数据发送越多,0为关闭 | npcstream=60 |
priority | (空) | 设置进程优先级 | priority=1 |
若WORLD变量为空或未包含,容器启动后需手动初始化服务器。需附加到容器并选择/创建世界,设置玩家数、端口和密码。创建的新世界将保存在worldpath环境变量定义的路径中:
docker exec -it <容器名称> tmux actrl+b + d分离容器若使用特定种子创建世界后服务器仍无法自动初始化,确保注释或删除docker-compose.yml中的seed=<yourseed>变量
服务器运行后可执行以下命令(更多信息见Terraria Server Wiki)。可附加到容器或注入命令:
docker exec -it <容器名称> tmux adocker exec <容器名称> inject "命令"。例如向所有玩家发送消息:
bashdocker exec tml inject "say Hello everyone!"
help - 显示命令列表。 playing - 显示玩家列表,游戏内可输入/playing查看。 clear - 清除控制台窗口。 exit - 关闭服务器并保存。 exit-nosave - 关闭服务器不保存。 save - 保存游戏世界。 kick <玩家名称> - 将玩家踢出服务器。 ban <玩家名称> - 将玩家封禁。 password - 显示密码。 password <密码> - 修改密码。 version - 打印版本号。 time - 显示游戏时间。 port - 打印监听端口。 maxplayers - 打印最大玩家数。 say <消息> - 向所有玩家发送消息,玩家将在聊天中看到黄色前缀<server>的消息。 motd - 打印MOTD。 motd <消息> - 修改MOTD。 dawn - 将时间设为黎明(4:30 AM)。 noon - 将时间设为中午(12:00 PM)。 dusk - 将时间设为黄昏(7:30 PM)。 midnight - 将时间设为午夜(12:00 AM)。 settle - 平静所有水体。
注意:命令前无需加斜杠
/。
命令ban <玩家名称>将玩家封禁。被封禁玩家登录时会显示:"You are banned for [duration]: [reason]- [modname]"。可通过编辑Terraria文件夹中的"banlist.txt"文件解封玩家,删除文件中的玩家名称和IP地址即可。

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429