
MSU
该模组旨在自动更新Fabric服务器上的模组
查看大图Minecraft Server Updater
## 此模组尚在实验阶段。它仍处于较大的开发中,我不保证它能够按预期工作。
**Minecraft Server Updater (MSU)** 是一个服务端 Fabric 工具,用于保持 Minecraft 服务器与基于 Modrinth 的检查、安全暂存、包装器安装、自动化以及回滚支持同步更新。
MSU 专为希望控制更新流程,而无需在服务器运行时替换正在使用的 jar 文件的服主设计。
核心理念:
检查哪些组件已过时,将安全更新暂存至一个暂存区,然后在下次服务器启动前,由包装器干净地应用这些更新。
亮点
- 安全更新流程: 检查 → 暂存 → 重启时应用
- 基于 Modrinth 的模组解析
- 支持模组列表、参考模组文件夹和
.mrpack文件 - Fabric Loader / 服务端启动器维护
- 可选的 Minecraft 版本升级检查
- 支持 MSU 自更新
- 检查、暂存或安装工作流的自动化模式
- 回滚与启动验证
- 仅限管理员的
/msu命令 - 清晰的状态输出,附带明确的“可安全暂存”原因
✨ 功能特性
安全检查 → 暂存 → 应用工作流
MSU 不会在 Minecraft 服务器运行时替换正在运行的模组 jar 文件。
相反,它使用三步流程:
- 检查 — 查询 Modrinth 并检查已配置的源。
- 暂存 — 将替换文件下载或准备到
.minecraft-server-updater/目录中。 - 应用 — 在下一次包装器启动时,在 Fabric 启动前安装已暂存的文件。
这确保了更新操作的可预测性,并避免修改服务器正在使用的 jar 文件。
模组更新检查
MSU 会检查已配置的模组是否有适用于服务器当前运行的 Minecraft 版本的更新版本。
支持的模组源:
| 源类型 | 功能 |
|---|---|
mod-list |
跟踪 .minecraft-server-updater/mod-list 文件中每行一个的 Modrinth 项目 slug、ID 或确切名称。 |
mods-folder |
使用参考文件夹中的 jar 文件作为管理的模组集合。 |
mrpack |
使用 Modrinth 包文件或 URL 作为管理源。 |
模组列表条目仅通过直接的 Modrinth 项目 ID/slug 或精确搜索命中来解析——MSU 不会从不明确的名称中进行猜测。
服务器维护
MSU 可以检查并暂存当前 Minecraft 版本的服务端维护更新,启用时还包括 Fabric Loader 和启动器同步。
Minecraft 升级
当启用了 server-upgrade 时,MSU 可以检查是否准备好升级到:
- 最新的 Minecraft 发行版
- 一个特定的目标 Minecraft 版本
服务器升级与常规模组检查是分开的。 模组检查始终针对服务器实际运行的版本。服务器升级检查针对配置的升级版本,可能包括:
- Minecraft 服务端 jar 文件
- 目标版本的 Fabric 启动器 / Loader
- 目标版本的 Fabric API(在服务端更新候选项中显示,不作为常规模组列表更新)
- 启用时针对升级目标的可选模组预检
自更新
MSU 可以检查 Modrinth 上是否有更新的 MSU 版本,并为其自身的替换文件进行暂存,以便在下一次重启时应用。升级到新的 Minecraft 版本可能需要一起暂存一个兼容目标版本的 MSU 版本。
组合式暂存
/msu stage all 可以将所有安全的选定目标组合成一个重启计划,使得服务端维护、模组更新、自更新以及兼容的 Minecraft 升级可以在一次重启中完成,并创建一次备份。
如果配置了服务器升级但不适合暂存,组合式暂存将在此处停止,并且在服务器预检问题解决之前,不会暂存其他目标。
📋 理解检查输出
MSU 会在单独的行中报告安全状态,以便您了解是否允许暂存以及不允许的原因。
可安全暂存的行
| 行 | 含义 |
|---|---|
Server safe to stage: true |
可以暂存服务器维护或升级。 |
Server safe to stage: false; … |
服务器暂存被阻止;原因在同一行中(例如,目标版本在 Modrinth 上缺少 MSU 或 Fabric API,或模组预检失败)。 |
Safe to stage mods: true/false |
是否允许为正在运行的 Minecraft 版本执行 /msu stage mods。 |
Mods stage blocked: … |
当模组暂存被阻止时显示(例如 no updates available、未知的 jar 文件、策略阻止或 mrpack 精确包问题)。 |
Mods ready for target: true/false |
管理的模组是否看起来已准备好用于配置的服务器升级目标(仅预检;与“今天有可用更新”不同)。 |
在一次 check all 中显示两个 Minecraft 版本
/msu check all 可以同时显示:
check server— 当升级启用时,使用升级目标(例如 26.2)check mods— 使用正在运行的版本(例如 26.1.2)
这是有意为之的设计,但容易误读。例如:
- 服务器部分:
Fabric API [missing → 0.152.1+26.2]意味着服务器升级将为目标版本安装 Fabric API——并非您的模组检查器发现了常规模组更新。 - 模组部分:
0 updates available意味着在您当前运行的版本上无需暂存任何内容,即使有计划进行升级。
什么会阻止 stage all
组合式暂存按顺序遵循安全规则:
- 如果服务器升级可用但
Server safe to stage: false,则stage all停止,并且在服务器预检通过之前,不会暂存模组或自身。 - 当对组合计划安全时,包含模组——包括某些升级情况,其中模组在运行版本上没有更新,但已为目标版本做好准备。
- 只有在安全且尚未作为必需服务器升级所需的 MSU 替换的一部分处理时,才会暂存自更新。
暂存后,使用 /msu status 在重启前查看组合计划。
🧩 支持的更新源
MSU 围绕一个配置的更新源构建。
mod-list
最适合希望保持选定 Modrinth 项目列表始终更新的服务器。
默认文件:.minecraft-server-updater/mod-list(每行一个项目;不是 JSON 数组)。
示例:
fabric-api
lithium
c2me-fabric
MSU 通过 Modrinth 解析这些项目,并检查是否有适用于正在运行的 Minecraft 版本的兼容版本。
mods-folder
最适合存放一个已知良好 jar 文件参考文件夹的服务器。
默认文件夹:.minecraft-server-updater/mods-folder。
MSU 读取参考 jar 文件,尽可能识别 Modrinth 项目,并从该集合中管理更新。
mrpack
最适合基于 Modrinth 模组包的服务器。
MSU 可以管理来自 .mrpack 文件或 Modrinth 包 URL 的项目。
advanced.mrpackMode 控制行为:
| 模式 | 行为 |
|---|---|
exact (默认) |
暂存精确的包文件和哈希值;严格的 Minecraft / Loader 检查。 |
tracking |
将包项目 ID 视为管理列表,并解析最新的兼容版本。 |
🛡️ 安全模型
MSU 旨在避免有风险的实时替换。
它不会热替换正在运行的 jar 文件
服务器会继续使用当前加载的文件,直到重启。
暂存的更新被单独保存
下载和替换文件会首先在 MSU 暂存区中准备。
包装器在启动前应用更新
当使用包装器启动服务器时,MSU 会在 Fabric 启动前应用暂存计划。如果不使用 --wrap,您仍然可以检查和暂存,但重启时不会应用任何内容。
回滚支持
当应用暂存计划时,MSU 可以记录备份元数据。如果启动验证失败,回滚支持有助于恢复之前的工作文件。
未知/自定义 jar 文件被谨慎处理
未知的 jar 文件可以通过本地文件名策略进行报告和保留,但除非它们能被解析,否则 MSU 不会将其视为由 Modrinth 管理或进行了兼容性检查。
服务器升级预检
启用时,MSU 会在允许暂存服务器升级之前,检查管理的模组(以及必需的依赖项)看起来与目标 Minecraft 版本兼容。当需要时,目标版本的 Fabric API 会作为服务器升级路径的一部分进行处理。
⚙️ 命令
默认命令根:
/msu
所有 /msu 命令都需要管理员/操作员权限。
| 命令 | 作用 |
|---|---|
/msu status |
显示暂存计划、运行时信息、配置、自动化、回滚和格式化状态。 |
/msu reload |
从磁盘重新加载配置并重启自动化。 |
/msu check mods |
检查配置的模组在正在运行的 Minecraft 版本上的更新。 |
/msu check server |
检查服务器维护和可选的升级就绪状态。 |
/msu check self |
检查 MSU 自更新。 |
/msu check all |
运行所有配置的检查(服务器、模组和自更新部分,视情况而定)。 |
/msu stage mods |
仅为正在运行的 Minecraft 版本暂存模组更新。 |
/msu stage server |
暂存安全的服务器维护或升级工作。 |
/msu stage self |
暂存 MSU jar 替换文件。 |
/msu stage all |
将所有安全的选定目标暂存到一个组合计划中。 |
/msu stage cancel |
清除暂存计划。 |
/msu rollback |
恢复最近的一次应用备份。 |
/msu rollback <id> |
恢复一个指定名称的备份。 |
/msu config reset |
使用记录的默认值重写配置。 |
/msu config set … |
更改源、自动化、间隔、调试、服务器维护、升级或发布频道设置。 |
长时间运行的检查可能会打印到服务器日志;在 RCON 中您可能会看到一个后台通知——请阅读 logs/latest.log 以获取完整输出。
🤖 自动化
MSU 可以按定时器运行后台检查。
自动化模式:
| 模式 | 行为 |
|---|---|
disabled |
无后台活动。 |
check |
仅报告;从不暂存文件。 |
stage |
检查并暂存安全更新;您可以随时重启。 |
install |
检查、暂存,然后停止服务器,以便包装器在重启时应用更新。 |
自动化目标:
| 目标 | 作用 |
|---|---|
mods |
检查或暂存已配置模组源的更新(基于当前运行的 MC 版本)。 |
server |
检查或暂存 Fabric 服务器维护和可选的 Minecraft 升级。 |
self |
检查或暂存 MSU 自更新。 |
示例:
/msu config set automation stage server mods self
/msu config set interval 360
仅当服务器通过包装器启动,并且您愿意让 MSU 停止服务器以进行基于重启的安装时,才使用 install 模式。
🚀 快速入门
- 将 MSU jar 文件放入您的服务器
mods/文件夹。Modrinth 发行版使用带版本号的名称,例如minecraft-server-updater+fabric-26.1.2-0.2.0-beta.4.jar——当 Minecraft 或 MSU 版本更改时,文件名会变化。 - 配置您的更新源。
- 运行一次检查。
- 暂存可用的更新。
- 从服务器根目录(即
fabric-server-launch.jar所在的位置)使用下面的包装器命令启动服务器。
包装器启动脚本
这些是小型启动器脚本,用于替换服务器根目录中的现有启动脚本。它会选择第一个 mods/minecraft-server-updater+fabric-*.jar(或 mods/minecraft-server-updater.jar)并在所有平台上运行相同的包装器命令。
start.bat (Windows):
@echo off
:: 在这里设置内存要求:
set MC_XMX=2G
set MC_XMS=2G
cd /d "%~dp0"
for %%F in ("mods\minecraft-server-updater+fabric-*.jar" "mods\minecraft-server-updater.jar") do (
java -jar "%%F" --wrap -- java -Xmx%MC_XMX% -Xms%MC_XMS% -jar fabric-server-launch.jar --nogui
goto :after
)
echo 在 mods\ 目录中未找到 Minecraft Server Updater jar 文件
pause
exit /b 1
:after
start.sh (Linux):
#!/usr/bin/env sh
# 在这里设置内存要求:
MC_XMX="${MC_XMX:-2G}"
MC_XMS="${MC_XMS:-2G}"
cd "$(dirname "$0")" || exit 1
for jar in mods/minecraft-server-updater+fabric-*.jar mods/minecraft-server-updater.jar; do
if [ -f "$jar" ]; then
exec java -jar "$jar" --wrap -- java -Xmx"$MC_XMX" -Xms"$MC_XMS" -jar fabric-server-launch.jar --nogui
fi
done
echo "在 mods/ 目录中未找到 Minecraft Server Updater jar 文件"
exit 1
在 Linux 上:chmod +x start.sh,然后 ./start.sh。
手动更新流程示例
/msu check mods
/msu stage mods
/msu status
然后使用包装器(start.bat、./start.sh 或上面的 java -jar mods/minecraft-server-updater.jar … 行)重启。
Minecraft 升级流程示例
/msu config set server-upgrade latest
/msu check server
/msu stage all
/msu status
在暂存之前阅读 Server safe to stage——如果为 false,请解决所述的原因(通常是在 Modrinth 上发布/安装一个与目标版本兼容的 MSU 版本),然后再执行 stage all。
📝 示例配置
配置文件:
config/minecraft-server-updater.json
示例结构:
{
"debug": false,
"mods": {
"sourceType": "mod-list",
"sourcePath": ".minecraft-server-updater/mod-list",
"releaseChannel": "any"
},
"server": {
"maintenance": true,
"upgrade": "off"
},
"selfUpdate": {
"enabled": true
},
"automation": {
"mode": "disabled",
"intervalMinutes": 360,
"targets": []
},
"advanced": {
"unknownModPolicy": "error",
"modUpgradePolicy": "warn",
"readinessMode": "all",
"mrpackMode": "exact",
"preflightBeforeServerUpgrade": true
}
}
常用配置命令:
/msu config set source mod-list
/msu config set source mods-folder
/msu config set source mrpack modpack.mrpack
/msu config set server-maintenance on
/msu config set server-upgrade latest
/msu config set automation stage server mods self
/msu config set debug on
如果自动化模式为 check、stage 或 install,但 targets 为空,则自动化运行时将无事可做,直到您添加目标。
🎨 控制台格式化
MSU 为其自身的服务器日志行包含格式化输出支持。
高级配置:
"betterFabricConsoleFormatting": "auto"
可用值:
| 值 | 行为 |
|---|---|
auto |
当控制台颜色允许时,使用默认的 MSU 格式化输出。 |
on |
当允许颜色时,强制使用 MSU 格式化输出。 |
off |
始终使用纯文本的 MSU 服务器日志输出。 |
如果单独安装了 Better Fabric Console,MSU 会避免双重渲染,让 BFC 处理 Minecraft 格式。
❌ MSU 不会做什么
MSU 有意保持保守。
它不会:
- 在服务器运行时替换正在运行的 jar 文件
- 将未知/自定义的 jar 文件视为 Modrinth 管理的项目
- 在没有包装器的情况下应用暂存的更新
- 神奇地验证非 Modrinth 文件的兼容性
- 使用模糊的 Modrinth 搜索来解析配置的项目名称
- 在一次检查中混用“当今版本的常规模组更新”与“服务器升级暂存”——请分别阅读服务器和模组部分
推荐的工作流
常规模组更新(相同 Minecraft 版本):
/msu check mods
/msu stage mods
/msu status
准备就绪后使用包装器重启。
有计划的 Minecraft 升级:
/msu check server
/msu check mods
/msu stage all
/msu status
在重启前,确认 Server safe to stage: true 并审查组合计划。
定时暂存:
/msu config set automation stage mods
/msu config set interval 360
无人值守安装工作流:
/msu config set automation install server mods self
仅当服务器通过包装器启动,并且您愿意让 MSU 停止服务器以进行基于重启的安装时,才使用安装模式。
为什么要使用 MSU?
MSU 为 Fabric 服主提供了一个受控的更新工作流:
- 在任何内容更改之前,查看哪些需要更新
- 当暂存被阻止时,获得明确的原因
- 安全地暂存文件,不接触正在运行的 jar 文件
- 通过包装器在启动前应用更新
- 使服务器文件与 Modrinth 管理的模组保持同步
- 自动化常规检查
- 如果应用的更新导致问题,通过回滚支持进行恢复
正在加载版本记录…


正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。