
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像提供了基于tModLoader的Terraria 1.4.4模组服务器的Docker化部署方案,支持自动创建世界、管理模组、配置服务器参数,可快速搭建多人Terraria模组游戏环境。
Docker Hub镜像地址:
hexlo/terraria-tmodloader-server:latest
同时提供:https://github.com/hexlo/terraria-server-docker ===> 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目录。
有两种创建新世界的方法:
1. 使用docker-compose.yml中的变量(推荐)
在docker-compose.yml的environment:部分设置以下变量:
yaml... environment: - AUTOCREATE=1 - WORLDNAME=tmlCalamity1.wld - DIFFICULTY=1 ...
变量的描述和可能值见下方环境变量部分
2. 手动创建世界
可通过附加到容器并通过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中找到,例如https://steamcommunity.com/sharedfiles/filedetails/?id=2824688072%E7%9A%84ID%E6%98%AF**2824688072**%E3%80%82
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地址即可。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务