A modpack promises twenty minutes of joy and, if you download the wrong file, three hours of staring at a crash log. Most of that detour is avoidable.
The short answer
How do you run a modded Minecraft server for friends? Start from the pack, not from the loader. Read which Minecraft version, mod loader and Java version the pack names, download the pack's server files instead of the client pack, install the matching loader with its own server installer, accept the EULA, and have every friend install the identical pack version [5][12][13]. Fabric or NeoForge is rarely your choice, because the pack was built for one of them. This guide shows both routes. We have not run a pack for this article; every command comes from the Fabric, NeoForge, CurseForge and Modrinth documentation named below, and where sources disagree we say so.
How it works
- Read the pack page before you download anything. Note four things: the Minecraft version, the mod loader (Fabric, NeoForge, Forge or Quilt), the loader version, and the memory and Java advice the pack's author gives. In a Modrinth pack (
.mrpack, a ZIP file) the filemodrinth.index.jsonlists the Minecraft version and the loader underdependencies[13]. The loader is the pack's decision, not yours. NeoForge's own guide recommends Forge rather than NeoForge on Minecraft 1.20.1 and NeoForge on 1.20.2 and newer [6]. NeoForge numbers follow the game: the major number is the Minecraft minor version, so 21.1.x belongs to 1.21.1, and since Minecraft 26.1 the version has four parts such as 26.1.0.5-beta [7]. The newest Minecraft is also not where most packs live. The Minecraft Wiki lists 26.3 as the current Java Edition version at the time we retrieved it [11], while NeoForged's 2025 review called 1.21.1 still its most popular version [9]. One NeoForge maintainer guessed in March 2026 that 26.1 would replace 1.21.1 as the next stable modding version, and labelled it a personal opinion [8]. Plan for the version your pack states. - Install the Java version for that Minecraft version. The server needs the Java that the game version requires. The Minecraft Wiki names Java 16 for 1.17, 17 for 1.18, and 21 from 1.20.5 [11]. PaperMC's table lists Java 21 up to 1.21.11 and Java 25 from 26.1 [16]. Mojang's release notes confirm it: 26.1 is the first version that requires Java 25 [10]. Fabric's developer documentation also names JDK 25 for 26.1 [4]. The table below the list sets the versions side by side.
- Download the server pack, not the client pack. A client pack is what your launcher installs, and it can contain client-only mods that a server has no use for [5]. CurseForge describes a server pack as a specially prepared version of the pack for multiplayer servers. Authors typically include
mods,configand, if the pack uses it,kubejs, plus optional start scripts and aserver.properties; they upload it as an additional file to the matching pack file, and "The pack and server should match pack versions" [12]. So open the Files tab, choose the exact pack version your friends will play, and look for the additional server file. Modrinth works differently. A.mrpackmarks each file withclientandservervalues (required,optionalorunsupported), and aserver-overridesfolder applies server-specific files on top ofoverrides, which the format description says eliminates the need for separate server packs [13]. A tool still has to apply it. Modrinth's help center names Modrinth Servers, the third-party tool mrpack-install and theitzg/minecraft-serverDocker image as server-side options [14]. We do not cover them step by step here. - Install the loader with its server installer. Use an empty folder. The commands for both loaders are below the list.
- Add the pack's files and remove what a server cannot use. With NeoForge, the documentation says that a modpack needs a launcher to be installed. Install the server first, then install the server pack or, if none exists, a separate instance of the normal pack in a launcher, move its contents into the server's game folder, and optionally remove client-side mods [5]. Take care not to overwrite an existing
worldfolder. Recognizing client-side mods is the hard part. NeoForge admits that it is not always clear and often takes trial and error [5]. Use the labels when they exist. Modrinth's environment metadata separates mods that are client-only, server-only, required on both sides and several in-between cases, with Mod Menu as an example of a client-only mod [15]. In a.mrpack, a file withserver: unsupportedstays off the server [13]. Whatever you add, check three things on the mod page: it is built for your Minecraft version, for your loader, and for Java Edition [3]. Download mods only from sources you trust: NeoForge recommends CurseForge and Modrinth [5], and Fabric asks you to use trustworthy sources [3]. We link no mod files. - Set memory, start, and open the port. Use the pack author's memory figure, not a number from a random guide. NeoForge keeps JVM arguments in
user_jvm_args.txt[5]; with Fabric you set-Xmxin the start command [1]. The Minecraft port is 25565 by default, and NeoForge reminds you to open it in your system and network firewall; for a server that runs around the clock, schedule periodic restarts [5]. - Get your friends in and keep the versions in lockstep. Every player needs the same pack version as the server [12]. When the pack updates, update the server and all players together. Back up your world before you update NeoForge or any mod [5].
Java by Minecraft version
| Minecraft version | Java |
|---|---|
| 1.17 | 16 [11] |
| 1.18 to 1.20.4 | 17 [11][6] |
| 1.20.5 to 1.21.11 | 21 [11][16] |
| 26.1 and newer | 25 [10][16] |
Sources disagree about the newest row. NeoForge's user guide still ends its table at "1.20.5-latest: Java 21" [6], and the Fabric wiki page we retrieved recommends Java 21 for 1.20.5 and higher [1]. Neither page mentions the 26.1 change. Our reading: follow Mojang for the game version, then check your install with java -version.
Install commands for Fabric and NeoForge
For Fabric, the Fabric wiki describes two routes. The simple one downloads a server launcher jar from the Fabric server page with your versions baked in. The manual one uses the installer [1][2]:
java -jar fabric-installer-<installer-version>.jar server -mcversion <minecraft-version> -loader <loader-version> -downloadMinecraft
java -Xmx<pack-author-value> -jar fabric-server-launch.jar noguiThe installer options -mcversion, -loader and -downloadMinecraft are documented by Fabric, and the installer creates fabric-server-launch.jar [1]. Most Fabric mods also need Fabric API in the mods folder [2][3].
For NeoForge, the NeoForged documentation gives these steps. Download the installer from NeoForge's Maven, run it with --installServer, set memory in user_jvm_args.txt if you want to, and start with ./run.sh on Linux [5]:
wget https://maven.neoforged.net/releases/net/neoforged/neoforge/<version>/neoforge-<version>-installer.jar
java -jar neoforge-<version>-installer.jar --installServer
./run.shThe first start ends by itself. Open eula.txt, change eula=false to eula=true, which means you agree to the Minecraft EULA, and run ./run.sh again [5].
A worked example
This is a plan, not a report. Assume six friends want a NeoForge pack for Minecraft 1.21.1 from CurseForge. First read the pack page for the version, the NeoForge version and the author's memory advice. Because the pack is for 1.21.1, you need Java 21 [11][16]. Then open the Files tab, pick the exact pack version, and download its additional server file [12]. Install NeoForge with --installServer into an empty folder, unpack the server pack into it, set memory in user_jvm_args.txt, start once, accept the EULA and start again [5]. Open port 25565 and send your friends the pack name and the pack version number. If the log stops at a mod that only draws something on screen, check whether it is client-only before you delete it [15].
Checklist
- Read the pack page and note Minecraft version, loader, loader version and the author's memory advice.
- Check
java -versionagainst the Java your Minecraft version requires. - Download the server files for the exact pack version, or confirm that the
.mrpackcarries server settings. - Install the loader in an empty folder with its own installer.
- Compare every mod you add against Minecraft version, loader and Java Edition.
- Accept the EULA yourself, in
eula.txt. - Open the Minecraft port and give your friends the exact pack version.
- Back up the world before every update of the loader, the pack or a mod.