从零到上线:Mindustry 服务器搭建完整指南(编译、配置与故障排查)
【免费下载链接】MindustryThe automation tower defense RTS项目地址: https://gitcode.com/GitHub_Trending/min/Mindustry
开服第一天就翻车?host打完没人进,日志里刷着一堆看不懂的红字。Mindustry 服务器本身不复杂,但端口、数据目录、启动指令这三处最容易踩空。这篇面向新手的实战指南按"最短路径 → 配置机制 → 故障速查 → 生产加固"展开:跟着命令先把 Mindustry 服务器跑通,再搞懂每个配置项为什么这么写,最后把进程和备份安排明白。
最短路径:四步跑通 Mindustry 服务器
java -version # 必须输出 17.x;settings.gradle 检测到低于 17 会直接拒绝构建git clone https://gitcode.com/GitHub_Trending/min/Mindustry cd Mindustry编译服务器模块,耗时视机器配置而定,首次会拉取 Gradle 依赖:
| 系统 | 命令 | 产物 |
|---|---|---|
| Linux / macOS | ./gradlew server:dist | server/build/libs/server-release.jar |
| Windows | gradlew server:dist | 同上 |
server/build.gradle 中dist任务会把主类、运行时依赖和core/assets资源一起打进这个 jar,客户端资源(音乐、字体等)已被排除,所以成品不算大。
启动并验证连接:
java -jar server/build/libs/server-release.jar控制台出现Server loaded. Type 'help' for help.即就绪,输入host随机开局。客户端进多人游戏 → 直接连接,填 IP 与端口(本地用127.0.0.1:6567)。
开局前客户端会先浏览星球选图,Serpulo 与 Erekir 两个行星的默认地图都在包内。
端口与 data 目录:两个必须搞懂的点
端口 6567 从哪来
默认端口写在 core/src/mindustry/Vars.java 的port = 6567。改端口不用动源码:控制台执行config port 6568,或修改data/下settings.json中的port,客户端再按新端口连。连接侧的解析逻辑在 core/src/mindustry/net/。
data 目录里有什么
ServerLauncher.java 把配置目录固定为 jar 同级的data/,首次启动自动生成:
settings.json:port、shufflemode、bans、admins等键值;rules.hjson:全局规则,首启写入reactorExplosions: false等默认值,在 ServerControl.java 中定义,每次地图加载时应用;saves/:auto_地图名_时间.msav格式存档,autosave配置项控制间隔与保留份数,超量的旧存档自动删除;logs/、maps/、mods/:日志、自定义地图与 Mod 目录。
服务端 headless 运行时用这张星空图做背景纹理,客户端行星界面同理。
启动指令:把开局动作写进启动命令
启动 jar 时附带的参数会直接当作控制台指令执行(ServerControl.java 的setup方法逐条解析):
java -jar server-release.jar "host 12345 survival"常用指令:host [地图名] [模式]开局、playerlimit 30限制人数、shuffle builtin切地图轮换、status与version看运行状态。config指令列出全部可改项:startCommands、autoPause、autosave、debug、socketInput等。注意config的布尔值只认on/off。
故障速查表
| 现象 | 原因 | 处理 |
|---|---|---|
Gradle 报YOU MUST USE JAVA 17 OR ABOVE | JDK 低于 17 | 换 JDK 17,java -version验证;见 README.md |
./gradlew: Permission denied | 脚本无执行权限 | chmod +x ./gradlew,一次性;见 README.md Troubleshooting |
| 客户端直连超时 | 6567 被占用或未放行 | ss -lntp \| grep 6567查占用;config port换端口并放行防火墙 |
启动即退出,提示Error occurred loading mod content | Mod 资源与版本不匹配 | 按报错中的 Mod 名与文件路径修正;逻辑在 server/src/mindustry/server/ |
| 客户端提示版本不符 | 未指定构建版本,客户端校验被关闭 | 构建时加-Pbuildversion=<build>;见 ServerControl.java 启动时的警告 |
| 改规则不生效 | 规则只在地图加载时应用 | 改data/rules.hjson后host重开一局 |
生产加固:systemd 与备份
server/run-server 脚本自带-XX:+HeapDumpOnOutOfMemoryError和崩溃自动重启循环,适合裸跑;长期运行建议交给 systemd,Restart=always一行顶掉手写循环:
[Service] User=mindustry WorkingDirectory=/opt/mindustry ExecStart=/usr/bin/java -Xmx2G -jar /opt/mindustry/server-release.jar Restart=always备份重点是data/:rules.hjson、settings.json、saves/与自定义地图。日志默认写入data/logs/;开启config socketInput on可把日志转发到 TCP,方便外部监控拉取。扩展方面,Mod 框架在 core/src/mindustry/mod/,内置地图见 core/assets/maps/,公开服务器流程参考 SERVERLIST.md。升级时只替换 jar、保留data/即可,存档与规则不受影响。
监控面板可以贴这张星空图当底图,方便运维夜里盯盘。
【免费下载链接】MindustryThe automation tower defense RTS项目地址: https://gitcode.com/GitHub_Trending/min/Mindustry
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考