
开头先交代一下我最早接触服务器端是从原版官服开始的后来加了几个机器类mod才发现官方服务端根本带不动mod这才转向Minecraft Forge加载器。如果你正打算开一个能加mod的服务器——不管是自己玩还是拉几个朋友联机这篇教程就是按我实际踩坑的流程写的照着走基本能顺下来。这篇东西适用的人群很明确已经跑通过原版服务端但没搞过Forge的或者刚接触服务端、想一步到位整个mod服的。我会把Forge加载器到底是什么、为什么装完Forge之后需要专门跑一次安装程序、mod该放哪、参数怎么调、以及公网联机要处理哪些问题都讲清楚。不会只丢给你一个启动命令然后说“就这样”尽量把每个动作背后的逻辑也说出来。1. 开服前先想明白Forge服务端到底是什么1.1 官方服务端和Forge服务端的区别很多人误以为“Forge服务器”就是多装了一个mod的普通服务器其实不对。官方原版服务端vanilla server只负责原版的逻辑它根本没有加载mod的接口。你往原版服务端目录里扔一个mod的jar文件启动时会直接忽略甚至崩溃。Forge加载器做的事情是在服务端启动之前先把一个mod加载框架注入进去这样服务端才能读取mods文件夹里的内容、解析mod之间的依赖关系、执行mod注册的事件。打个比方原版服务端是一台只能炒家常菜的厨房Forge相当于给厨房加了一条中央厨房供应链你送进来的半成品食材mod才能被加工成菜品。没有这条供应链食材再多也只能堆在门口坏掉。所以Forge服务端的本质是“被修改过的服务端 统一的mod加载环境”它生成的文件会比原版服务端多一个mods目录、一个libraries目录还有一堆cache文件。另外一个容易混淆的点是Forge不只服务端有客户端也有。你本地装Forge是为了让游戏能加载mod服务器装Forge是为了让游戏世界能运行mod逻辑。两边都装了同一个mod连接时才会校验通过否则会出现“mod mismatch”之类的报错。这一点后面还会细讲。1.2 选Forge还是Fabric还是Paper现在社区里常见的加载器有Forge、NeoForge、Fabric、Quilt插件服那边还有Paper之类的。我在1.12.2到1.20.1之间来回切过最后大多数整合包用的是Forge。原因很简单工业、魔法、冒险类的大型mod绝大多数都优先适配Forge尤其是一些经典的老牌mod比如神秘时代、工业时代、暮色森林、匠魂基本上只在Forge上有完整生态。Fabric那边更适合轻量化的性能和优化mod比如钠、锂、玉这类现代mod启动快、兼容性干净但在大型内容mod上数量少很多。选型的时候自己心里要有杆秤你想玩什么mod就去看这个mod支持哪个加载器跟着生态走就对了。1.20.1之后社区出现了NeoForge分叉主要是Forge开发节奏和社区治理的问题如果你现在开新服且版本在1.20.1以上也可以考虑NeoForge很多新mod已经迁移过去了。至于Paper这些Bukkit插件服它们跑的是插件体系和Forge mod完全是两回事不能混用别被搞混。2. 环境准备Java版本、内存与系统的正确姿势2.1 先看Java版本版本不对一切白搭Forge服务端是Java程序对Java版本有硬性要求不是随便装一个就能跑。不同Minecraft版本对应的Java版本完全不一样这是新手开服最容易翻车的地方。Minecraft版本要求Java版本1.8.x ~ 1.16.5Java 81.17.x ~ 1.20.4Java 171.20.5及以上Java 21我在1.16.5时代用的还是Java 8的服务器后来切到1.20.1直接用旧的Java 8启动结果Forge安装器直接报UnsupportedClassVersionError查了半天才发现是Java版本太老。看到这个报错先别怀疑Forge文件坏了先去终端跑一下java -version看看版本对不对。Windows上建议直接去官方渠道装对应版本装的时候注意看安装路径别把Java 8和Java 17混在一起还把PATH配乱了。如果机器上确实需要多个Java版本可以不改PATH而是用启动脚本里指定完整路径的方式或者设置好JAVA_HOME环境变量哪个版本的开服脚本就指向哪个JAVA_HOME。另外服务端运行只需要JRE不强制要求JDK但装JDK也没问题就是体积大点而已。2.2 内存规划不是越大越好但也不能抠门Minecraft服务端的内存需求主要取决于mod数量和玩家数量我在不同整合包上的实测经验大概是这样原版或少量mod2GB到4GB够用中型整合包30到80个mod4GB起步最好给6GB到8GB大型整合包150个mod以上多人在线10GB到16GB甚至更高启动参数里的-Xms和-Xmx分别是最小堆内存和最大堆内存。我一般建议两个值设置成一样这样JVM启动后一次性把内存申请到位避免运行过程中频繁扩容和缩容减少卡顿。比如你打算分配4GB就写-Xms4G -Xmx4G。但要提醒一句-Xmx给的内存只代表JVM堆内存不是物理内存的全部。你电脑或云服务器还有操作系统本身、其他后台进程、以及mod运行时可能需要的一些native内存这些都会额外占用物理内存。我有一台8GB内存的旧笔记本硬塞了-Xmx6G结果系统本身和浏览器把剩余内存吃光服务器开始疯狂用swapTPS直接掉到十几体验远不如老老实实开4G舒服。所以内存规划一定要把系统的余量留出来别把机器榨干。2.3 系统选择Windows还是Linux如果你只是想本地跑个测试服或者和室友联机Windows完全够用因为下载、双击、看日志都方便开服脚本也简单。但如果你要用云服务器长期挂机我更推荐Linux主要是内存占用少、稳定性好、远程维护方便。我后来把云服务器从Windows切到Ubuntu之后内存用量直接少了大约三分之一服务器也不会因为Windows更新半夜自动重启。Linux下适合开服的发行版我建议用Ubuntu Server LTS版本教程多、坑少。对新手来说第一步用Windows把流程跑通理解了Forge服务端的工作逻辑之后再考虑把正式服迁到Linux上。最忌讳的是一开始就在Linux上折腾同时还要学vim、cron、systemd精力分散出了问题很难定位是开服问题还是系统问题。3. 实操部署从下载Forge到成功启动3.1 下载Forge安装器并安装服务端开服的第一步是拿到对应的Forge安装器。请注意不要从随便一个网盘下载最好去Forge官网或可靠的镜像站下载选你服务端MC版本对应的“Recommended”版本这个版本经过足够多人测试稳定性和兼容性最好。下载下来的是一个可执行的jar安装器。你用java -jar运行它注意使用对应版本的Java界面上有三个选项Install client、Install server、Extract。这里选Install server然后指定一个空目录作为安装路径。安装完成后这个空目录里会生成一堆文件包括libraries文件夹、versions文件夹、一个叫forge-x.x.x-x.x.x-shim之类命名的版本目录还有server.jar或run.sh之类的启动入口。看到这个结构说明Forge的加载环境已经注入到服务端里了。安装完成后我会检查一下目录里有没有eula.txt和server.properties如果没有就是启动还没跑起来。第一次启动服务端后会自动生成这两个文件然后再停止修改配置再正式启动。很多新手直接去改不存在的server.properties改了个寂寞。3.2 修改服务端关键配置Forge服务端第一次启动后生成的server.properties就是整个服务器的核心配置。我挑几个最关键的说明一下配置项默认值我的建议server-port25565除非你有多服需求否则不用改online-modetrue玩正版就保持true离线服改成falsewhite-listfalse正式服建议改成truemotdA Minecraft Server填点个性签名很加分max-players20根据服务器性能和玩法调整difficultyeasy想挑战就hard但要确保整体装备/经济平衡online-mode是新手最容易忽略的。它控制服务器是否向Minecraft官方会话服务器验证玩家身份。如果开的是正版服玩家只能用正版账号登录离线服通常是国内局域网或内网穿透玩的朋友必须把它改成false否则游戏内会一直报“Invalid session”无法进入。但注意一旦改成false任何人都能伪装成任意玩家名进入服务器所以务必配合白名单使用把white-list改成true然后把认识的朋友名字加进白名单。我在一次离线联机中就是因为没开白名单被路人刷了一地TNT才知道这个教训。还有一个小配置server.properties里的enable-command-block默认是false如果你想在服务器里用命令方块记得改成true。虽然很多服务器用不到但一旦用到这个开关没打开会很头疼。3.3 编写启动脚本与首次启动Forge安装完成后目录下可能自带一个run.shLinux/macOS或者run.batWindows但因为每个人分配的内存和参数不一样我建议自己写一个启动脚本。Windows下在服务端目录新建一个run.bat内容类似这样echo off java -Xms4G -Xmx4G -jar forge-1.20.1-47.3.0.jar nogui pause注意forge-1.20.1-47.3.0.jar这个文件名要换成你目录里实际的jar文件名可以用dir命令看一下。nogui参数表示不启动图形界面纯命令行运行服务器环境不需要那个窗口。Linux下在服务端目录新建一个run.sh内容类似这样#!/bin/bash java -Xms4G -Xmx4G -jar forge-1.20.1-47.3.0.jar nogui然后运行chmod x run.sh给执行权限。用./run.sh启动。我用screen或tmux挂服务器这样可以关掉SSH连接而服务器不会停止。如果不想学screen最简方式是直接nohup挂起不过推荐用tmux因为你能随时回到控制台看日志、输入命令。首次启动时服务端会生成config文件夹、world文件夹以及logs目录。你会看到一大堆“Loading Minecraft Forge”和mod加载日志最后在控制台看到一行类似Done (12.345s)!的内容说明服务器已经启动成功。如果启动过程中某个mod报错导致无法结束一般会在崩溃日志目录生成crash-report这一部分后面有专门章节讲。3.4 添加管理员账号服务器启动后第一件事应该是给自己添加op权限。如果你用正版账号登录直接在控制台输入op 你的游戏ID就能把你自己设为管理员。离线服的话进入游戏的玩家名就是客户端离线登录时的名字控制台添加同样ID即可。不要拿着seed去单人创造测试因为在服务器里你至少要有个op才能执行绝大部分管理命令。另外我习惯在服务器控制台里执行save-off、save-all来备份但当你使用定时备份时这俩命令需要正确处理顺序别在服务器正在写世界的时候直接拷贝文件夹。4. mod安装与性能优化4.1 mod放哪里客户端要不要装Forge服务端的mod统一放在服务端根目录下的mods文件夹里。把mod的jar文件丢进去重启服务器Forge会在启动时扫描并加载。需要特别注意的是大多数mod在客户端和服务端都要装而且版本必须一致。只要有一侧缺mod或者版本不同客户端连接服务器时就会报“Incompatible mods”或“Missing mods”。有一种例外是纯服务端mod比如优化类、管理类mod它只在服务端运行客户端不需要装。但安全起见我判断一个mod是否需要两边都装的方法很简单看mod的介绍页它会明确写到“Client only”“Server only”或者“Both must be present”。还有整合包场景推荐让所有玩家都使用同一个客户端整合包否则mod版本差异会导致各种诡异问题。4.2 服务端推荐的基础优化mod清单我开服过程中试过很多优化mod下面这几个是我在Forge服务端上实测过、对稳定性和性能都有帮助的按优先级排列mod名称作用我的评价FerriteCore减少内存占用亲测大整合包内存能降20%-30%强烈推荐ModernFix集成多个性能优化方向对1.20.1提升明显但要留意与其他mod的兼容性ServerCore服务端tick优化能改善其他mod对tick的重复计算问题Spark性能分析工具排查TPS和卡顿必备谁用谁知道做个补充说明FerriteCore这类内存优化mod也有特定MC和Forge版本要求安装时注意看说明。优化mod不是越多越好装多了反而可能相互冲突。一个稳妥的做法是先开纯Forge空服测试TPS表现再逐个加入优化mod每次加完都重启观察日志有没有报错。不要一次性全塞进去出了问题很难定位。4.3 检查mod冲突的正确顺序mod冲突是Forge服务器崩溃的头号原因。眼见一个mod崩溃第一反应别是删mod先看日志。服务端目录下的logs/latest.log会记录启动过程的完整信息如果是崩溃一般会有crash-reports文件夹生成里面是一个带时间戳的txt文件里面会写明cause by什么异常。我看崩溃日志的习惯顺序是先看有没有Caused by:这是最接近根因的信息再看有没有提示缺少某个前置mod最后看是不是某个mod和当前加载器版本不匹配。比如老牌的JEIJust Enough Items在很多mod里都是前置如果缺少它崩溃日志通常会明确提示缺JEI或类似的前置mod。如果日志给的信息模糊二分法是排查mod冲突最省事的方式把mods目录里的jar全部移动到另一个临时文件夹只放一半进去启动看是否正常如果正常说明问题出在另一半再继续分直到找到冲突源。整个过程很机械但能最快缩小范围。另一个小技巧把mods目录按功能分组内容类、优化类、库类之后排查起来一目了然。5. 让朋友能连进来局域网、公网与云服务器5.1 局域网联机最简单但有很多细节坑同一WiFi下联机的成本最低。服务器启动后在同一个局域网内其他电脑的Minecraft客户端里选择多人游戏添加服务器地址填运行服务端那台电脑的内网IP端口默认25565。如果连不上原因大概率是Windows防火墙拦截了Java进程。我遇到过好多次明明服务端跑得好好的局域网其他人就是连不上最后在防火墙里放行Java或者开放TCP 25565端口就好了。你可以在服务端电脑上执行netstat -an | findstr 25565Windows或ss -lntp | grep 25565Linux来确认端口是否处于监听状态。监听IP如果是0.0.0.0:25565说明服务端在等待所有网卡连接如果只监听127.0.0.1:25565那服务器只接受本地连接外网玩家自然连不上需要检查启动参数或配置文件是否把server-ip写死了。5.2 公网联机路由器端口映射的完整步骤想要让不在同一个WiFi的朋友也能连最简单的思路是端口映射。流程大致是登录你家路由器管理页一般是192.168.1.1或192.168.0.1→找到“端口映射”或“NAT/虚拟服务器”菜单→添加一条规则外部端口25565到内部IP服务器电脑的内网IP25565协议选TCP/UDP都行→保存并应用。完成之后朋友连接时使用的地址就是你家的公网IP加上端口。公网IP可以从路由器WAN口状态里看到也可以在浏览器搜“IP查询”获取。但这里有一个现实问题很多家庭宽带的运营商在小范围内给的是NAT后的私网IP没有真正的公网IP这时端口映射写了也白搭。判断方法很简单看路由器WAN口IP是不是公网段如果看到100.64.0.0/10这种地址就是运营商级NAT端口映射无法对外生效。如果是这种情况解决方案有两个一是用内网穿透工具把本地25565端口映射到一个公网域名和端口上优点是免费选项很多缺点是稳定性受中转服务器影响延迟会高一些二是直接用云服务器开服把服务器搬到有公网IP环境里这是更省心的方向。安全提示家庭网络做端口映射时建议给服务器电脑单独设置固定内网IP动态变化会导致映射失效另外不要随意在路由器上开启DMZ主机功能等于把所有端口都暴露出去。5.3 云服务器开服选型和注意事项长期稳定联机云服务器是最省心的选择。选配置时不要只看CPU和内存还要注意带宽和流量。最小服用2核4G可以跑但稍微加mod和多几个玩家就开始吃紧建议4核8G起步。带宽方面Minecraft联机是典型的持续小包传输上行带宽不够会导致玩家“掉线频繁”“区块加载慢”。系统建议选Ubuntu Server LTS版本参考前面系统选择那一节。用云服务器开服有个新手必踩的坑安全组忘记放行端口。你的服务端明明监听25565但云厂商的安全组规则没放行TCP 25565外部玩家一样连不进来。记得在云控制台的安全组入方向加一条规则端口25565源地址任意。另外一条安全纪律不要用root账号直接跑服务端。创建一个普通系统用户比如mc把服务端目录的所有权给这个用户然后用这个用户运行服务端。同时修改SSH默认端口或者至少设置密码强度高一些有条件就换成密钥登录。这是我在运维浪潮里积累的习惯云服务器暴露在公网安全性的底线不能省。5.4 想快速试水面板服和容器方案如果你只是想快速验证整合包能不能跑、要不要上云可以先租一个月的面板服。面板服的本质是服务商在云服务器上帮你预装好了控制面板和游戏服务端环境你只要点按钮就能开服和装mod省去了系统运维的工作。虽然灵活性差一些但作为入门体验非常合适。我自己在正式接触Linux之前就是先玩了一段时间面板服理解了mod、白名单、定时备份这些概念之后才敢去碰云服务器的。另一种值得关注的方式是用Docker容器跑Forge服它有现成的镜像通过一条docker run命令就能拉起一个隔离的服务器实例升级和迁移都很方便。不过对新手来说Docker又增加了一层抽象还是先把裸机跑通再说别一上来就追求“高大上”的部署方式。6. 常见问题速查与排查思路下面整理的是我在开服过程中遇到频率最高的几类问题按“现象-原因-处理”的方式做成速查表遇到问题可以直接对着找。现象可能原因处理方法Forge安装器双击没反应没安装对应版本Java或PATH里指向Java版本不对先跑java -version确认下载正确版本JRE/JDK服务端启动后秒退eula.txt没改成true或Java版本不匹配打开eula.txt改成eulatrue检查Java版本日志出现OutOfMemoryError堆内存不足调大-Xmx或者删减不常用的mod玩家连不上服务器防火墙拦截、安全组未放行、端口映射错误依次检查服务端监听端口、本机防火墙、云安全组、路由器映射客户端提示Incompatible mods客户端和服务端mod列表不一致用同一份整合包对比两边mods文件夹清单提示Missing mods缺少前置mod看提示中缺少哪个mod找到对应前置装回去游戏内TPS越来越低mod实体运算太重或区块加载太多用Spark分析关掉部分机器/刷怪塔考虑加ServerCore排查问题的思路比记住单个问题的答案更重要。我自己的固定套路是先看logs/latest.log末尾几十行再找crash-reports里最新的崩溃报告根据里面Description和Caused by定位核心方向如果日志里没有明确关键词就用二分法在mods目录上做排除。整个过程不要凭感觉删文件每一次改动都记录一下出问题能回溯。再补充一个习惯性的操作每次对服务端做大改动之前把world目录和server.properties备份好。有了备份遇到再奇怪的问题都可以在几分钟内还原。7. 管理、备份与进阶扩展7.1 日常管理与基本命令服务器跑起来以后日常管理不外乎权限、玩家和世界状态这几件事。我常用的命令如下op 玩家名/deop 玩家名给予或收回管理员权限whitelist add 玩家名/whitelist remove 玩家名管理白名单kick 玩家名踢下线ban 玩家名/ban-ip IP封禁玩家或IPsave-off/save-all/save-on关存档写入、强制存档、开存档写入stop正常停服在Linux上用tmux跑服务端时要进入控制台就用tmux attach -t mc退出但保持后台运行按CtrlB再按D这个组合键需要记熟。Windows下跑服务端直接看控制台窗口就行但别随手关窗口关掉等于强制杀进程可能导致存档损坏。7.2 备份比开服本身更重要服务器玩久了最值钱的就是那个world文件夹里面装着所有玩家辛辛苦苦建的东西。我对备份的态度是宁可多备份几次不可少备份一次。Linux下我写过一个简单的定时备份脚本配合crontab每天凌晨4点执行#!/bin/bash BACKUP_DIR/home/mc/backups WORLD_DIR/home/mc/server/world DATE$(date %Y%m%d_%H%M%S) tar -czf $BACKUP_DIR/world_$DATE.tar.gz -C $WORLD_DIR . find $BACKUP_DIR -name world_*.tar.gz -mtime 7 -delete脚本的思路是用tar把世界文件夹打包压缩保留最近7天的备份旧的自动清理。Windows下也可以用任务计划程序定时执行一个Robocopy或者用WinRAR命令行压缩本质是一样的。备份的时候尽量在服务器相对空闲的时段操作或者先执行save-all把进度写盘再开始压缩防止文件处于正在写入的中间状态。7.3 进阶玩法扩展当你把基础开服流程跑顺之后会发现Forge生态还有太多可以玩的东西。比如想给服务器加经济系统可以装支持Forge的经济类mod想限制玩家圈地可以找对应的地皮mod想自定义合成配方和任务流程可以学习CraftTweaker或KubeJS的脚本写法。我建议进阶阶段的策略是保持mods目录基于一个主题工业化、魔法、探索、空岛等来组织不要什么热门装什么。mod装得越多启动越慢、内存越高、冲突概率越大。每一次加新mod分组测试做好备份。最重要的永远不要在正式服上直接测试新mod先把mod丢到测试服务器跑一下确认没有冲突再同步到正式环境。这个习惯帮我避免了很多次本可以提前发现的崩溃。最后再分享一个小经验开服这件事最大的坑往往不是技术本身而是没有养成“记录”的习惯。我自己的服务器文件夹里永远放着一个CHANGELOG.txt每次改了配置、加了mod、升级了版本都随手记一笔。几个月后再遇到问题回头看这些记录比任何教程都有用。如果你现在准备开服不妨从第一条记录开始。