Minecraft 私服 mod 校验与 WebRTC P2P 传输工具。客户端由玩家发起校验请求;服务端伴生程序扫描服务器 mods 目录并提供清单;客户端确认后,通过 WebRTC DataChannel 拉取缺失或冲突的 mod。
本项目采用 MIT License。第三方依赖仍遵循各自许可证,见 THIRD_PARTY_NOTICES.md。
- 客户端输入服务器地址,默认连接
ws://<host>:24454/signal。 - 支持 FRP 通信地址覆盖:服务端仍监听本地
24454,客户端可填写frps_host:remote_port通过 FRP 完成校验、manifest 交换和 FRP 中继传输。 - 支持 Fabric、Forge、NeoForge jar 元数据解析。
- 校验
mod id + version + sha256,报告缺失、版本冲突、同版本 hash 冲突、本地多余 mod。 - 共享 Token + nonce HMAC 鉴权,不直接回传明文 Token。
- WebRTC DataChannel 分块传输;IPv6 candidate 优先,5 秒后放行 IPv4 candidate;可配置 TURN 兜底。
- 版本冲突文件不会删除,会移动到
.mod-sync-backup/YYYYMMDD-HHMMSS/。
npm install
npm start服务端开发运行:
Copy-Item config/server.example.json config/server.local.json
# 编辑 config/server.local.json 的 modsDir 和 sharedToken
npm run serverWindows 客户端:
npm run build:client:win产物目录:dist/client/
Minecraft Mod Sync-0.1.1-x64-setup.exeMinecraft Mod Sync-0.1.1-x64-portable.exe- 打包资源会附带
LICENSE和THIRD_PARTY_NOTICES.md。
Windows 服务端 GUI:
npm run build:server-gui:win产物目录:dist/server-gui/
Minecraft Mod Sync Server-0.1.1-x64-setup.exeMinecraft Mod Sync Server-0.1.1-x64-portable.exe
Linux/Windows 命令行服务端:
npm run build:server单独构建:
npm run build:server:win
npm run build:server:linux产物目录:dist/server/
minecraft-mod-sync-server-win-x64.exeminecraft-mod-sync-server-cli-win-x64.exeminecraft-mod-sync-server-linux-x64config/server.example.jsonREADME-server.txtLICENSETHIRD_PARTY_NOTICES.md
全部构建:
npm run build:allWindows GUI:
运行 minecraft-mod-sync-server-win-x64.exe,或者运行 Minecraft Mod Sync Server-0.1.1-x64-setup.exe 安装版,在界面里选择服务端 mods 目录、设置 Token,然后点击启动。
Windows CLI:
Copy-Item config/server.example.json config/server.local.json
# 编辑 config/server.local.json
.\minecraft-mod-sync-server-cli-win-x64.exeLinux:
cp config/server.example.json config/server.local.json
# edit config/server.local.json
chmod +x ./minecraft-mod-sync-server-linux-x64
./minecraft-mod-sync-server-linux-x64Linux 无桌面交互初始化:
chmod +x minecraft-mod-sync-server-linux-x64 linux-headless-setup.sh linux-set-token.sh
./linux-headless-setup.sh
./linux-set-token.sh
./start-server.shlinux-headless-setup.sh 会在终端提示修改监听地址和端口,更新 config/server.local.json,并生成 start-server.sh。首次正式使用前还需要确认 modsDir,并用 linux-set-token.sh 设置 sharedToken。
后续单独修改 sharedToken:
./linux-set-token.sh修改后需要重启服务端。
如果要指定其它配置文件:
./minecraft-mod-sync-server-linux-x64 --config /path/to/server.json{
"modsDir": "D:/minecraft/server/mods",
"listenHost": "",
"listenPort": 24454,
"sharedToken": "replace-with-a-private-token",
"iceServers": [
{
"urls": [
"stun:stun.l.google.com:19302",
"stun:global.stun.twilio.com:3478"
]
},
{
"urls": ["turn:turn.example.com:3478"],
"username": "turn-user",
"credential": "turn-password"
}
]
}至少需要修改:
modsDir: 服务端mods目录。sharedToken: 玩家连接时输入的共享密钥,不能使用示例值。listenHost: 留空默认监听 IPv4 和 IPv6 双栈;只监听 IPv4 可填0.0.0.0,只监听 IPv6 可填::。listenPort: 默认24454,需要在防火墙或安全组开放。iceServers: 默认公开 STUN;复杂 NAT 下建议追加 TURN。
服务端伴生程序可以继续使用默认监听端口 24454,FRP 只需要把公网远程端口映射到服务端本地 24454。
示例 frpc.ini:
[mod-sync]
type = tcp
local_ip = 127.0.0.1
local_port = 24454
remote_port = 30000客户端填写:
服务器地址: 可以填原服务器地址,用于记录实际服务器。FRP 通信地址: 填frps_host:30000,例如frp.example.com:30000。下载来源: 选择仅 FRP/端口映射中继时,mod 文件会通过这条 FRP WebSocket 连接传输。
只要填写了 FRP 通信地址,校验、鉴权、manifest 拉取和上传确认都会走 FRP 地址,不再默认连接 24454。
npm test测试覆盖 jar 元数据解析、manifest diff、地址解析、配置加载、文件安装备份。