Blog

Minecraft Java 服务器搭建与插件精选

朋友五六个人想要一个长期档,要求不花哨:稳定在线、卡顿少、坏了能回档。下面按运维手册写——能勾选的步骤,少讲情怀。你可以把整篇当成检查单打印,开服前从第一项勾到最后一项。

我以前靠记忆开服:哪天改过视距、哪天加过插件,全凭群聊记录。结果一次错误升级把领地插件版本拧了,半天回档。从那以后,所有步骤能勾的就勾,勾完再点启动。看起来像矫情,省下的是整晚道歉。

小服没有专职运维,服主往往还要上班。手册的意义是把「只有我懂」变成「照着做也能不炸」。朋友接手维护窗口时,读得懂比写得炫更重要。

手册 0:开服前环境确认

  • 主机内存余量:计划给 JVM 的 Xmx 之外,系统至少留 1–2G
  • 磁盘:世界目录放 SSD 更稳;机械盘要接受存盘卡顿风险
  • Java 版本与 Paper 要求一致(查当前 Paper 文档)
  • 专用系统用户 mc,不要长期用 root 跑
  • 防火墙/安全组:仅放行需要的人与端口(默认 25565)
  • 备份落点目录已存在:/var/backups/mc/
  • 群里维护窗口与「谁有停服权限」说清楚

CPU 单核性能对 MC 很重要。老多核打游戏服不一定赢新 N100。测过再承诺「能开视距 12」。内存和磁盘余量写进开服前截图,避免群里问「为啥进不去」时你才发现根分区满了。

若和 NAS、监控同机,先在笔记里划清:MC 最多吃多少内存、备份窗口避开晚上高峰。资源账不算清,后面所有优化都像在漏船上打补丁。

手册 1:目录与核心安装

核心选 Paper。原版 server.jar 能跑,插件生态和性能文档却是 Paper 更熟。Purpur 等下游也可,我图省事钉 Paper 某稳定 build,不追每天最新。第一次下载记下 build 号,升级时才知道自己从哪一版跳过来。

/opt/minecraft/
  paper.jar
  start.sh
  server.properties
  eula.txt
  plugins/
  world/
  world_nether/
  world_the_end/

检查单:

  • eula=true 已依法同意
  • server.properties:白名单开启、online-mode 按你的正版策略
  • 视距 8–10(小机器优先),模拟距离不要盲目拉满
  • 难度、Pvp、spawn 保护按群规写死,避免开服第一天吵架
sudo useradd -r -m -d /opt/minecraft -s /bin/bash mc
# 文件属主改为 mc:mc

手册 2:启动脚本与 systemd

start.sh:

#!/bin/bash
cd /opt/minecraft
exec java -Xms2G -Xmx2G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -jar paper.jar --nogui
  • Xms 与 Xmx 相同,减少运行时伸缩抖动(小服常见做法)
  • Xmx 不超过机器余量;4G 小鸡塞 3G 给 MC 容易换上 swap,更卡
  • chmod +x start.sh,属主 mc
  • 手动以 mc 用户跑一遍 ./start.sh,确认能进主世界后再交给 systemd

Aikar 等更长参数集在大服常见,五六人小服先把 Xmx 和 G1 跑稳。参数从论坛整段粘贴却不理解,出问题更难回滚。

systemd:

[Unit]
Description=Minecraft Paper
After=network.target

[Service]
User=mc
WorkingDirectory=/opt/minecraft
ExecStart=/opt/minecraft/start.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
  • systemctl enable --now minecraft(单元名按你的文件)
  • journalctl -u minecraft -f 能看到启动完成
  • 不用 screen 挂生产;指令走 rcon 或 Paper 控制通道,方便脚本

手册 3:插件精选(少即是多)

安装前:

  • 插件版本匹配游戏版本
  • 一次只加一个,看日志无报错再加下一个

我常用类别:

类别 选择原则 勾选
权限 LuckPerms,一套权限源 [ ]
领地 维护活跃的一个,不装三个打架 [ ]
反作弊 适度;误伤朋友比外挂更伤感情 [ ]
备份 插件或系统 cron 二选一,勿重复 [ ]

升级插件顺序固定:停服 → 备份世界 → 换 paper → 起服看日志 → 再加/更插件。群友丢来的「必装整合包」先扔进测试目录,不进生产 plugins/。小服感情靠稳定续着,不靠功能堆叠。

手册 4:日常开关服与玩家变更

日常比搭建更耗时间。谁半夜想加模组、谁说进不去,都会找到你。把开关服变成固定动作,减少临场发挥。

开服:

sudo systemctl start minecraft
# 等 log 出现 Done

停服:

  • 群内预告,至少提前十五分钟
  • rcon:save-all 后再 stop,或 systemctl stop 并确认进程退出
  • 确认没有残留 java 占世界锁
  • 若要维护超过半小时,在群里说明预计恢复时间

白名单:

  • 新玩家 ID 核对正版/离线策略
  • whitelist add 后 whitelist reload
  • 权限组变更写进笔记:谁是 admin、谁能传送
  • 离开的朋友及时移出高权限,避免账号流失后的隐患

开服后自己进游戏走一圈:出生点、仓库、常用领地传送。日志绿了不等于体验正常,卡在加载界面的问题有时只出现在客户端侧。

手册 5:卡了先勾这些

按顺序,不靠玄学:

  1. 上线人数与时间点:是否刚探险集中加载
  2. spark 或 timings:实体、区块、GC 谁高
  3. 视距、模拟距离是否被谁改大
  4. 红石机器、动物农场是否炸群
  5. 磁盘是否把世界存盘卡死(iowait、机械盘)
  6. 内存是否开始 swap(free -h)

临时止血:降视距、清实体、重启(重启前 save-all)。长期治理:限制刷怪、拆机器、加内存或换盘。把每次卡顿的结论写一行到 ~/notes/mc-lag.md:时间、在线人数、spark 截图路径、采取的动作。三次以后模式会自己浮出来,比群聊里「又卡了」有用。

手册 6:备份检查单

世界比插件珍贵。插件能重装,三年的领地和建筑重来不了。

# 概念流程
rcon save-all
rcon save-off
rsync -a /opt/minecraft/world* /var/backups/mc/$(date +%F)/
rcon save-on
  • 日备保留最近 7 天
  • 重要节点(大建筑完工、版本升级前)手动打标签目录
  • 异地再丢一份压缩包
  • 只拷 plugins 不拷世界 = 没备份
  • 每季度做一次「备份目录拉起测试服」演练

手册 7:网络与版本升级

网络:

  • 公网暴露时考虑 DDoS 与强制正版;能白名单端口就白名单
  • 仅内网/WG 可玩时,防火墙拒绝外网 25565
  • 域名 SRV 或反代若使用,单独测客户端能进

版本升级检查单:

  • 完整备份世界与配置
  • 读 Paper 与插件 changelog
  • 测试服先跑
  • 维护公告发群
  • 升级后观察 TPS 与玩家反馈
  • 出问题回滚包路径已知

手册 8:服役状态定义

同时满足才算「今晚能接着玩」:

  • systemd 自动拉起
  • 白名单与权限符合群规
  • 最近 24h 备份存在且大小正常
  • 无人持续抱怨 TPS
  • 你知道停服、回档、升级的三套动作

小服的核心体验是稳定、可回档、插件克制。清单比记忆可靠;勾完再开玩,比炸服后道歉便宜。手册会脏、会改,每次事故后补一条勾选项——那才是这份检查单真正增值的地方。

← Back to Blog