Minecraft Java 开服:一份 itzg 镜像的 Paper 配置清单

为什么是 Paper 加 itzg

Minecraft 的服务端有好几种:原版(Vanilla)、Paper、Fabric、Forge。原版最稳但没插件;Fabric/Forge 是模组路线,适合整合包;Paper 是插件路线的默认答案——兼容 Bukkit/Spigot 插件,性能比原版好,升级也跟得紧。

镜像选 itzg/minecraft-server:14,000 多 star,Apache-2.0,最近一次提交就在这两天。它的好处是一个镜像覆盖原版、Paper、Fabric、Forge 和整合包,换服务端类型只改一个环境变量。

一份能直接用的 compose

services:
  mc:
    image: itzg/minecraft-server:java21
    container_name: mc
    restart: unless-stopped
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: "PAPER"
      VERSION: "LATEST"
      MEMORY: "4G"
      USE_AIKAR_FLAGS: "true"
      DIFFICULTY: "normal"
      MAX_PLAYERS: "10"
      MOTD: "a small server"
      VIEW_DISTANCE: "10"
      SIMULATION_DISTANCE: "8"
      ENABLE_RCON: "true"
      RCON_PASSWORD: "换成你自己的密码"
      WHITELIST: "Steve,Alex"
      OPS: "Steve"
      ENFORCE_WHITELIST: "true"
    volumes:
      - ./data:/data
    stdin_open: true
    tty: true

几个变量值得单独说:

  • EULA 必须是 "TRUE",否则容器启动后立刻退出——这是 Mojang 的许可要求,不是镜像在刁难你。
  • MEMORY 是给 JVM 的堆上限。5 到 10 人原版/轻插件,4G 够;模组服按 6G 起。
  • USE_AIKAR_FLAGS 打开后会套用社区公认的 GC 参数,对降低卡顿有明显帮助,尤其是内存不大的机器。
  • VIEW_DISTANCE 和 SIMULATION_DISTANCE 是性价比最高的两个性能旋钮:视野 8 到 10、模拟距离 6 到 8,能省下大量 CPU。

第一次启动,看三件事

docker compose up -d
docker compose logs -f mc

日志里依次会出现:接受 EULA、下载 Paper、生成世界、最后一行 Done (xx.xxxs)!。看到 Done 再进游戏,别在生成世界的时候反复重启——那会把世界生成到一半。

进不去先查两处:docker compose ps 看容器是不是在反复重启;docker compose logs mc | tail -50 看是不是 Java 版本不对。现在的新版本服务端对 Java 版本有硬要求,java21 这个 tag 是稳妥选择,玩很新的版本可能要换 java25。

白名单和 OP,用 rcon 管理

开了 ENFORCE_WHITELIST 之后,只有名单里的人能进。改名单不用重启:

docker exec -i mc rcon-cli whitelist add Steve
docker exec -i mc rcon-cli op Steve
docker exec -i mc rcon-cli whitelist list

-i 不能省,交互式命令需要它。这也是别把 RCON 端口(默认 25575)暴露到公网的原因:拿到密码就等于拿到管理员权限。

插件:放进去,重启

Paper 的插件就是 jar 文件,丢进 ./data/plugins/,然后 docker compose restart mc。两个坑:插件要挑对应服务端大版本的;装之前先备份 data 目录,有些插件写坏配置会让服务端起不来,而报错信息往往指向别处。

备份:先让世界停止写入

直接 tar 一个正在写入的世界,大概率得到一份「能解开但进不去」的存档。正确顺序是:

docker exec mc rcon-cli save-off
docker exec mc rcon-cli save-all
tar czf mc-$(date +%F).tgz data
docker exec mc rcon-cli save-on

把这几行放进 cron,每天凌晨跑一次,再把压缩包同步到另一台机器。存档不大,几十 MB 到几百 MB,但它是唯一不可再生的东西。

更新:先备份,再动版本

VERSION: "LATEST" 省心,但每次重启都可能悄悄跨一个小版本,插件未必跟得上。长期开的服,建议把它改成你已经验证过插件兼容的具体版本号,升级变成一个主动动作:备份 → 改版本号 → docker compose pull && docker compose up -d → 看日志 → 进游戏验证。

跨大版本升级前一定要整份备份,Minecraft 的世界格式会随版本迁移,升上去之后想退回来,光换镜像是不够的。

我的判断

Minecraft 是这一系列里最适合入门的一台服务器:镜像成熟、文档全、出错信息清楚。真正需要你操心的只有三件事——内存给够、视野别贪、备份别省。

它也是最能体现「开服不是装软件」的一台:同样一份 compose,有人开三个月不出事,有人一周丢两次存档,差别不在 YAML 写得多漂亮,而在有没有把「保存、备份、再更新」当成习惯。

参考来源

延伸阅读

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像/SUENCA
欢迎您留下宝贵的见解!
提交
头像/SUENCA

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容