news 2026/9/12 17:02:49

一杯咖啡的时间,在 TrueNAS 上把 Minecraft Forge 服务端跑进 Docker 容器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一杯咖啡的时间,在 TrueNAS 上把 Minecraft Forge 服务端跑进 Docker 容器

一杯咖啡的时间,在 TrueNAS 上把 Minecraft Forge 服务端跑进 Docker 容器

【免费下载链接】docker-minecraft-serverDocker image that provides a Minecraft Server for Java Edition that automatically installs/upgrades versions, modloaders, modpacks and more at startup项目地址: https://gitcode.com/GitHub_Trending/do/docker-minecraft-server

周五晚上,朋友喊你去模组世界集合,而你的家用服务器还是空的。用 TrueNAS Scale 的 Docker 能力,配合 itzg/minecraft-server 这个社区维护的镜像,把 Minecraft Forge 服务端容器化部署,数据落在自己的存储池里,整个过程一小时内能收工。

开始前,先对这几项

  • 系统内存至少 4GB,想跑多人或大型 Mod 包建议 8GB 以上
  • TrueNAS Scale 中 Docker 服务已启用(设置 > 应用/服务 > Docker)
  • 准备出至少 20GB 可用空间,放世界数据的磁盘优先选 SSD
  • 计划拉取的镜像是itzg/minecraft-server,国内网络建议先确认能拉到

它是怎么跑起来的

容器里发生的事并不神秘,抓住这四条就够了:

  • TrueNAS 数据集挂载为容器卷,映射到容器内/data,世界、配置、日志全部持久化在存储池里
  • 一组环境变量(服务端类型、游戏版本、内存)决定容器启动时要下载并安装什么,装完自动拉起服务端
  • 端口 25565 从容器映射到宿主,玩家客户端连这里
  • 端口 25575 是 RCON 管理端口,只有你显式开启 RCON 才需要暴露

动手部署:四步上线

第一步:建数据集和容器网络

在 TrueNAS 的文件系统里新建数据集minecraft/forge-server,用于存放 compose 文件和容器卷。数据集属主设成 Docker 服务实际使用的账号;如果你打算用 root 直接跑容器,这一步最容易翻车——属主不对,后面的 "Changing ownership" 环节就会卡住。再进网络管理建一个 bridge 模式网络,起个名字如mc-net

第二步:把容器定义写成 compose

在数据集里新建docker-compose.yml,关键行如下,其余可按需增删:

services: mc: image: itzg/minecraft-server ports: - "25565:25565" environment: EULA: "TRUE" TYPE: FORGE VERSION: "1.20.1" FORGE_VERSION: "47.1.0" MEMORY: "4G" volumes: - mc-data:/data - ./mods:/mods:ro restart: unless-stopped volumes: mc-data: {}

逐条说人话:

  • TYPE: FORGE——声明用 Forge 加载器,镜像会在启动时自动下载对应安装器
  • VERSION: "1.20.1"——锁定 Minecraft 版本;不写FORGE_VERSION时默认选该版本官方推荐的 Forge
  • FORGE_VERSION: "47.1.0"——钉住具体 Forge 版本,写latest则跟随最新
  • MEMORY: "4G"——JVM 堆的初始与上限一起设成 4G
  • mc-data:/data——命名卷持久化服务端数据;./mods:/mods:ro——本地 mods 目录只读挂入,启动时被拷贝进/data/mods
  • EULA必须为TRUE,否则服务直接拒绝启动

第三步:首次启动与验收

启动容器并跟踪日志(首次会自动下载 Forge 安装器并执行安装,耗时取决于网速):

docker compose up -d docker compose logs -f

翻日志盯一行字:Done (t=XX.XXXs)! For help, type "help"出现,说明服务端就绪;客户端填宿主机 IP + 25565 就能试连。

第四步:装 Mod 和基础参数

把 jar 丢进数据集下的./mods/目录即可——只读挂载保证容器改不了源文件,改完重启容器重新加载。先别急着堆 Mod,先把基础参数调顺:编辑/data卷里的server.properties,关注三项——max-players(上限人数)、difficulty(难度)、motd(大厅里显示的服务器名)。完整参数含义见 docs/configuration/server-properties.md。

调优与验收

Minecraft 服务器内存分配有个简单口径:堆按玩家数和 Mod 量给,JVM 垃圾回收器随规模换:

玩家规模建议堆内存(MEMORY)JVM 参数(JVM_OPTS)
1~5 人4~6G-XX:+UseG1GC
6~10 人8~12G-XX:+UseParallelGC

参数细节可查 docs/configuration/jvm-options.md。

验收清单,三条全过才算上线:

  1. 客户端能进游戏,大厅显示的 motd 与你的设置一致
  2. 踢掉一个玩家再进,/data卷里world目录有新增文件——数据确实落盘在数据集
  3. docker compose down && docker compose up -d后服务自动拉起,进度照常——restart: unless-stopped在真干活

日常运维三件事

  • 快照备份:TrueNAS 计划任务里给minecraft/forge-server数据集建每周快照,保留 4 周。容器随时可弃,世界数据有快照兜底。
  • 闲置自动停止:compose 加ENABLE_AUTOSTOP: "true"AUTOSTOP_TIMEOUT_EST: "300"(最后一名玩家离线 5 分钟后停机),注意restart要改成no,停掉后需手动重启。详见 docs/misc/autopause-autostop/autostop.md。
  • RCON 远程管理:加ENABLE_RCON: "true"RCON_PASSWORD,容器暴露 25575 后,用 rcon-cli 从宿主机连进去下指令,不用进游戏。

踩坑速查

Q:Forge 安装报错,容器起不来?临时加FORGE_FORCE_REINSTALL: "true"重启,强制重装一次;修好后删掉该变量。换下载源可用FORGE_INSTALLER_URL,说明见 docs/types-and-platforms/server-types/forge.md。

Q:启动卡在 "Changing ownership of /data"?SKIP_CHOWN_DATA: "true"加上,跳过这一步的属主改写(适合容器直接以 root 运行的场景)。

Q:内存溢出、GC 卡顿?先加堆(MAX_MEMORY),再把server.propertiesview-distance降到 8;Mod 太重时优先卸载而不是硬堆内存。

这套部署把版本管理交给环境变量,把数据交还给 TrueNAS 存储池,日常只剩"改变量、重启容器"一个动作。想再往前走,可以看看 examples/ftba/ 里的 Web 管理面板玩法,或者用 examples/proxied/ 的多实例加反向代理方案做负载均衡。延伸阅读:docs/variables.md、docs/misc/troubleshooting.md。

【免费下载链接】docker-minecraft-serverDocker image that provides a Minecraft Server for Java Edition that automatically installs/upgrades versions, modloaders, modpacks and more at startup项目地址: https://gitcode.com/GitHub_Trending/do/docker-minecraft-server

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 17:02:14

GA-VMD参数自适应寻优:旋转机械故障诊断中的振动信号处理实践

简介:遗传算法优化VMD(GA-VMD)技术结合遗传算法与变分模态分解,面向非线性、非平稳信号分析需求,适用于电力系统故障诊断、机械健康监测、声音识别等场景。资源包共27个文件,以15个Matlab脚本为核心&#x…

作者头像 李华
网站建设 2026/9/12 17:01:40

TEC半导体制冷片在医用冷敷仪中的精准控温原理与工程实现

1. 为什么冷敷仪不能只靠冰袋?TEC半导体制冷片的不可替代性 市面上卖的手持冷敷仪,十有八九是“伪冷敷”——要么是内置凝胶冰袋,靠提前冷冻后缓慢释冷;要么是压缩机制冷,体积大、噪音响、功耗高,根本没法做…

作者头像 李华