docker-minecraft-server 里 CurseForge 模组包自动安装失败的排查与修复

发布时间:2026/9/12 13:13:42
docker-minecraft-server 里 CurseForge 模组包自动安装失败的排查与修复
docker-minecraft-server 里 CurseForge 模组包自动安装失败的排查与修复【免费下载链接】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用 docker-minecraft-server 起服时最常见的翻车现场就是CurseForge 模组包自动安装失败。容器日志停在下载阶段、模组装一半、或者服务一启动就退出。这篇文章带你先判断自己踩的是哪种坑再用最短路径修好它最后确认服务器能正常进服。快速对号入座你的症状属于哪一种启动容器后执行docker compose logs -f mc对照下面三条判断日志里 API 调用直接报错或容器很快退出——十有八九是CF_API_KEY没配到位。日志反复出现java.lang.UnsupportedClassVersionError或class file version字样——镜像的 Java 版本和模组包要求对不上。模组下载完、服务却立刻崩溃退出或日志反复提示缺少某个 jar——通常是客户端专用模组混进了服务端或内存不足导致OutOfMemoryError。对不上也没关系按下面的根因顺序逐个排查基本都能覆盖。为什么装不上四个最常见根因1. API 密钥里的$被 compose 吃掉了最容易踩CurseForge 的 API key 往往长得像$11$22$33aaaa...开头就带$。如果你把 key 直接写进 compose 文件docker compose 会把$11当成变量插值处理结果容器拿到的 key 是残缺的CurseForge 接口直接拒绝。解决思路只有一个把 key 挪进.env文件细节见修复流程第 2 步。2. 镜像 tag 和模组包要求的 Java 版本不匹配ATM8 这类大型包要求 Java 17而:latest镜像跟着最新 Minecraft 走的是更高版本 Java。版本对不上时启动会直接报 class 文件错误。选哪个 tag 以模组包页面标注为准对照仓库里的 docs/versions/java.md 即可。3. 内存还是默认的 1G镜像默认只给 1G 内存ATM8 级别的大型模组包至少要 4G否则下载完成后的启动阶段直接OutOfMemoryError。改一行MEMORY就好。4. 客户端专用模组被装进了服务端有些模组只在客户端有意义却忘了正确声明服务端加载它们会崩。项目镜像自带一份默认排除清单见 files/cf-exclude-include.json但新出的客户端模组可能还没收录这时需要手动加排除项。动手修复四步走第 1 步改用最小可用的 compose 配置参考官方示例 examples/auto-curseforge/atm8/docker-compose.yml核心就几行services: mc: image: itzg/minecraft-server:java17 ports: - 25565:25565 environment: EULA: true MODPACK_PLATFORM: AUTO_CURSEFORGE CF_API_KEY: ${CF_API_KEY} CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/all-the-mods-8 MEMORY: 4G volumes: - mc-data:/data volumes: mc-data: {}改完先docker compose up -d确认镜像 tag、MEMORY已就位。第 2 步把 API 密钥放进.env文件在 compose 文件同目录新建.env内容一行用单引号包住 key这样$无需转义CF_API_KEY$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaacompose 里保持CF_API_KEY: ${CF_API_KEY}不变。docker compose 会自动读取同目录的.env。预期结果重新up -d后日志不再出现认证类报错。第 3 步处理需要手动下载的模组如果日志里列出某些模组Need DownloadCurseForge 不允许自动拉取在宿主机建一个目录挂载到容器固定路径/downloads把浏览器下载好的文件放进去volumes: - ./downloads:/downloads再执行docker compose up -d容器会自动从这里取文件。挂载关系示意第 4 步有客户端模组冲突就补排除项确认崩在哪个 mod 后加一行排除即可CF_EXCLUDE_MODS: creative-core,default-options怎么确认已经修好了一条命令看状态docker compose ps mc docker compose logs mc --tail 30看到什么算成功服务状态是running或 healthcheck 为healthy日志末尾出现Done (x.xs) For help, type help且客户端能进服、模组列表完整。如果还卡在下载阶段把DEBUG设为true再重启日志会输出完整的初始化细节方便继续定位。进阶与避坑版本回退崩溃如果某个新版模组包一装就崩可以用CF_FILE_ID或CF_FILENAME_MATCHER钉住一个已知兼容的版本。注意别选标记为 server 的文件——它们缺少 manifest会破坏自动启动。改完排除列表没生效加CF_FORCE_SYNCHRONIZE: true强制重新评估一次模组清单。下载慢或频繁超时把CF_PARALLEL_DOWNLOADS从默认 4 调到 2降低并发反而更稳。内存相关的 JVM 报错设DEBUG_MEMORY: true可以看更详细的分配信息排障方法见 docs/misc/troubleshooting.md。一句话收尾密钥放对位置、Java tag 对版本、内存给够CurseForge 模组包自动安装基本就不会再翻车。想深入细节读 docs/types-and-platforms/mod-platforms/auto-curseforge.md 和 docs/mods-and-plugins/curseforge-files.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),仅供参考