为什么是 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 写得多漂亮,而在有没有把「保存、备份、再更新」当成习惯。










暂无评论内容