How to Set Up a Modded Minecraft Server: Forge, Fabric and NeoForge
Quick answer
To set up a modded Minecraft server, first find out which loader (Fabric, NeoForge, Forge or Quilt) and Minecraft version your modpack uses. Run that loader's server installer with the matching Java version, then copy the pack's server files onto the server. The server and every player need the same Minecraft version, loader and mod list, and client-only mods such as Sodium or OptiFine must be removed from the server. For an average pack, 6 to 10 GB of RAM is a sensible starting point.
What do you need to run a modded Minecraft server?
A modded server needs a few pieces a vanilla one does not: a mod loader, mods built for that loader, and enough RAM and CPU to carry them. On a Paper server with plugins, players join with the normal game client. On a modded server, every player also has to install the same loader and the same mod list on their own machine, so you are really planning two sides at once.
You can build a mod list from scratch, but for a first server a ready-made modpack causes far fewer problems. The pack author has already picked versions of each mod that work together, tuned the config files and often published a dedicated server download. If you do assemble your own list, start small and test the server after every addition. For the basics of running any Minecraft server, such as the EULA and server.properties, see our guide to making a Minecraft server; this one focuses on what is specific to mods.
- The Minecraft version and loader version your modpack targets
- The right Java version for that Minecraft release, such as Java 21 for 1.21.x
- The pack's server files, or a mod list cleaned up for server use
- Between 4 and 16 GB of RAM depending on pack size
- Somewhere to keep backups, and the habit of taking them
- A client pack to hand out to players, plus the server address
What is the difference between Fabric, NeoForge, Forge and Quilt?
All four loaders do the same basic job: they give mods a way to hook into the game's code. Where they differ is in their mod ecosystems, how quickly they follow new Minecraft releases and which kinds of packs use them. In practice you rarely pick the loader yourself; the modpack you want, or a mod you cannot live without, picks it for you. A mod only runs on the loader it was built for, so a Fabric mod dropped onto a Forge server simply will not load.
NeoForge started in 2023 when most of the Forge team split off. On 1.20.1 the two projects were still largely compatible, and they have diverged since. Today a large share of new big modpacks target NeoForge, while Forge stays widespread thanks to its huge back catalogue of packs on older, much-loved versions. Quilt is a fork of Fabric that can run most Fabric mods, but its community and its own mod library are smaller.
| Loader | Strength | Typical use | Watch out for |
|---|---|---|---|
| Fabric | Lightweight, quick to support new Minecraft versions | Performance and vanilla+ packs, newest versions | Most mods also need Fabric API |
| NeoForge | Modern base for big content and tech mods | Current large modpacks, especially on 1.21.x | Not compatible with Forge mods after 1.20.1 |
| Forge | The largest catalogue of older mods and packs | Packs on classic versions like 1.12.2, 1.16.5, 1.18.2 and 1.20.1 | Some new large packs have moved to NeoForge |
| Quilt | Runs most Fabric mods as well as its own | Smaller packs that rely on Quilt-specific mods | Smaller ecosystem; not every Fabric mod behaves |
Can plugins and mods run on the same server?
Technically yes, but it is usually not recommended. Paper and Spigot plugins are written against the Bukkit API, while mods are written against a loader's API, and the two do not officially run together. Hybrid server software such as Arclight, or Youer, the successor to Mohist, tries to bridge the gap by adding a Bukkit compatibility layer on top of a loader so you can run both.
That layer is prone to conflicts, because plugins and mods change the game in different ways. A plugin may not recognise blocks or entities a mod adds, some plugins refuse to start, and some mods misbehave in ways that are hard to trace. Hybrids are not supported by the official Forge, NeoForge or PaperMC projects and often reach new versions late. For needs like permissions, land claims or an economy, look at native mods first; popular tools such as LuckPerms already ship Fabric and NeoForge versions. If you do go hybrid, keep the plugin list short and test everything on a copy first.
How do you choose a modpack on CurseForge or Modrinth?
Most modpacks are published on CurseForge, Modrinth or both. Each pack page shows the Minecraft version and loader, the number of mods and when it was last updated. Before you commit a server to a pack, check that it is actively maintained, note the RAM the author recommends and see whether a separate server download exists.
The key distinction is between a server pack and a client pack. The client pack is the full pack players install in their launcher, including client-side mods, shaders, resource packs and menu tweaks. The server pack contains the mods and configs the server actually needs, often with a script that installs the right loader, and has the client-only mods stripped out. On CurseForge it usually sits under the pack's Files tab as an additional file. Modrinth packs come as .mrpack files that record whether each mod is needed on the client, the server or both, so a server install can use that information. With no server pack, you can copy the client pack over and strip client-only mods by hand, which is the most common source of crashes on new modded servers.
How do you install the loader's server version?
Each loader ships its own server installer from its official site. For Forge and NeoForge, you run the installer jar you downloaded with the --installServer flag in an empty folder. It fetches the Minecraft server and libraries and, on 1.17 and later, creates run.sh and run.bat start scripts plus a user_jvm_args.txt file where you set memory. For Fabric, the server page on the official site lets you pick the Minecraft and loader versions and download a ready-to-run server launcher jar, or you can run the Fabric installer with its server command.
Once the loader is in place, copy the server pack's mods and config folders, plus extras such as defaultconfigs or kubejs if the pack has them, into the server folder, accept eula.txt and start the server once. Keep the loader version identical to the one the pack specifies; if the pack includes an install script, it usually downloads the right version for you. On TheCrewHost's game panel, NeoForge, Fabric and Forge Enhanced come as ready server types, so instead of running the installer by hand you choose the version and fill the mods folder.
If the Java version is wrong, the server stops within a second and the log shows something like UnsupportedClassVersionError. The table below shows which Java each Minecraft version expects.
| Minecraft version | Java required | Note |
|---|---|---|
| 1.16.5 and older | Java 8 | Old Forge packs usually refuse to start on newer Java |
| 1.17.x | Java 16 | A short-lived, rarely used version |
| 1.18 to 1.20.4 | Java 17 | Covers popular 1.18.2 and 1.20.1 packs |
| 1.20.5 to 1.21.x | Java 21 | Most current NeoForge and Fabric packs |
| 26.1 and later | Java 25 | Mojang's newer year-based version numbers |
How do you match mod versions with loader versions?
The golden rule of modded servers is that the server and every player run the same Minecraft version, the same loader and compatible versions of every mod. Each mod file is built for one Minecraft version and one loader. A NeoForge mod made for 1.21.1 will not load on a 1.20.1 server, and a Fabric mod is invisible to Forge. When you download from a mod page, filter by both the Minecraft version and the loader.
The loader has a version of its own, too. Some mods require at least a certain NeoForge, Forge or Fabric Loader build and fail with a dependency error on an older one. On Fabric, most mods also need Fabric API, and many large mods depend on libraries such as Architectury or Cloth Config. Those dependencies belong on the server as well, and the server names any missing ones in its log during startup.
When players join with a mod list that does not match the server's, they usually see an error screen listing missing or mismatched mods. The easiest fix is to have players install the client pack at exactly the server's version through a launcher such as the CurseForge app, the Modrinth App or Prism Launcher, and to announce the new version number to everyone whenever you update.
Which mods crash a dedicated server?
The most common problem is a client-only mod copied onto the server. These mods touch rendering, sound or menu code that simply does not exist on a dedicated server. On Forge and NeoForge the result is usually an error containing invalid dist DEDICATED_SERVER, and on Fabric you get a crash complaining that a class starting with net/minecraft/client cannot be found. The mod named in the log tells you which file to remove.
Some mods work on both sides but do nothing useful on a server, while others must be present on both; recipe viewers like JEI and any content mod that adds blocks or items fall into that second group. If you are not sure where a mod belongs, check the client and server information on its Modrinth page or read its description. Keep a list of the client-only mods you removed, since players are free to keep them on their side.
- Performance and rendering: Sodium, Embeddium, OptiFine
- Shader loaders: Iris, Oculus
- Interface mods: menu tweaks, HUD and zoom mods, some minimap mods
- Audio and visual effect mods: sound physics, particle and animation mods
- Resource packs and shader packs, which a server never needs
- Client helpers: screenshot, controls and key-binding mods
How much RAM does a modded server need?
RAM depends on the number of mods, the type of pack and how many people play. Adventure packs that add new dimensions and structures use far more memory than a Fabric pack made only of performance mods, and big automation builds load the CPU as much as the RAM. The table uses the same starting points as our Minecraft RAM guide. On Forge and NeoForge you set memory with the -Xmx value in user_jvm_args.txt; on Fabric it goes on the start command. Never hand Java all of the machine's RAM, because the operating system needs a share.
On modded servers, much of the lag comes from generating new terrain, since mods add structures and biomes to world generation. Pre-generating a reasonable radius with Chunky before players arrive cuts first-week stutter dramatically, and Chunky has both Fabric and NeoForge builds. Our Minecraft lag guide covers this in more detail.
Single-thread CPU speed matters as much as memory, because most world logic still runs on one main thread. TheCrewHost runs its NeoForge, Fabric and Forge Enhanced servers on Ryzen 9 9950X hardware in İstanbul, which also keeps latency low for players in Türkiye.
| Pack type | Typical size | Starting RAM | Note |
|---|---|---|---|
| Performance or vanilla+ pack | Up to 50 mods | 4–6 GB | Behaves close to vanilla |
| Themed or adventure pack | Around 100–200 mods | 6–10 GB | New dimensions and structures push memory up |
| Large kitchen-sink pack | 250–400+ mods | 10–16 GB | Slow startup; usage grows with the world |
| Heavy tech or automation pack | Varies | 10–16 GB or more | Single-core CPU speed matters too |
How do you update a modpack without losing your world?
Updating a modpack is the riskiest thing you will do to a modded world. Removing a mod deletes its blocks from the world, and a major version change in a mod can read saved data differently. Before any update, stop the server and back up the world, config and mods folders together. A world backup alone is not enough, because rolling back also needs the old mod list.
Read the update's changelog. A change of Minecraft version is usually a major migration that calls for a new world, while updates within the same Minecraft version normally work with the existing one. Extract the new server pack into a separate folder, delete the old mods folder completely and replace it with the new one; copying new files over old ones can leave two versions of the same mod. Note any config changes you made yourself and carry them over to the new files by hand. Test on a copy of the world first if you can, then announce the new client pack version.
How do you read a Minecraft crash report?
When the server goes down, look in two places: the dated file in the crash-reports folder and latest.log in the logs folder. Forge and NeoForge also write a more detailed debug.log. The Description line at the top of a crash report tells you what happened, and the first error line and stack trace below it tell you where. Forge and NeoForge reports also include a section listing suspected mods; treat it as a lead rather than a verdict.
In the stack trace, look at package names: something like com.example.modname points to the mod involved. If you cannot narrow it to one mod, remove half the mods and test, then half of the suspects again; this bisection approach finds the culprit in a handful of attempts even in a pack of a hundred mods. When you send the report to support or a mod author, attach latest.log too, because the warnings leading up to a crash usually live there.
| What the log says | Likely cause | Fix |
|---|---|---|
| invalid dist DEDICATED_SERVER or net/minecraft/client | A client-only mod is on the server | Remove the mod named in the error |
| A dependency error mentioning missing or requires | A library mod is missing or too old | Add the requested mod at the requested version |
| UnsupportedClassVersionError | Wrong Java version | Switch to the Java your Minecraft version needs |
| OutOfMemoryError: Java heap space | Too little RAM allocated, or a memory leak | Raise -Xmx and look for heavy mods |
| A single server tick took 60.00 seconds | The watchdog stopped a frozen tick | Find the stuck mod in the report; reduce heavy chunk generation |
| Mixin apply failed | Two mods are patching the same code | Remove or update one of the conflicting mods |
Set up a modded Minecraft server in 8 steps
- 1
Pick the pack and loader
Choose an actively maintained modpack on CurseForge or Modrinth and note its Minecraft version, loader and loader version.
- 2
Download the server pack
Grab the pack's server files. If there are none, use the client pack and be ready to strip client-only mods by hand.
- 3
Install the right Java
Install the Java version your Minecraft release needs: Java 17 for 1.20.1, Java 21 for 1.21.x and Java 25 for 26.x.
- 4
Install the loader
Run the Forge or NeoForge installer with --installServer, or download the Fabric server launcher; on a managed panel, pick the matching server type.
- 5
Copy files and set RAM
Upload the mods and config folders, accept eula.txt and set the -Xmx value according to the size of the pack.
- 6
Watch the first startup
Start the server and follow the console to the end; remove client-only mods or add missing dependencies as the log reports them.
- 7
Pre-generate the world
Use Chunky to generate a sensible radius around spawn before players arrive, then hand out the matching client pack version.
- 8
Set up backups and an update routine
Back up the world, mods and config folders on a schedule, and test every update on a copy before applying it to the live server.
Frequently Asked Questions
Can I run Fabric mods on a NeoForge server?
Not directly, because each mod is built for its own loader. Bridge projects such as Sinytra Connector try to run Fabric mods on NeoForge for certain Minecraft versions, but not every mod works and problems are not officially supported. Choosing the loader most of your pack already uses, then looking for an equivalent mod on that loader for anything missing, causes far fewer headaches in the long run.
Why do players get a mod mismatch error when they join?
Their client's mod list or mod versions differ from the server's. An old pack version, a missing mod or a different loader build on the player's side will all trigger it. Having every player install exactly the same client pack version as the server, and announcing the version number with each update, solves the problem in nearly every case.
Can I use Paper plugins on a modded server?
Not on a regular Forge, NeoForge or Fabric server. Hybrid software such as Arclight or Youer adds plugin support, but it is unofficial, tends to lag behind new versions and is prone to clashes between mods and plugins. For permissions, land protection or an economy, look at native mods first; many popular admin tools now ship modded versions of their own.
Will updating my modpack break my world?
Updates within the same Minecraft version usually go smoothly, but any mod dropped from the pack takes its blocks and items with it. Updates that change the Minecraft version generally call for a fresh world. If you back up the world, mods and config folders together before updating, you can roll back within minutes when something goes wrong.
There is no server pack. Can I use the client pack on the server?
Yes, but strip the client-only mods first. Shader, rendering, interface and sound mods will crash a dedicated server. Start the server, find the failing mod in the log, remove it from the mods folder and repeat until it boots cleanly. Keep a note of what you removed; players can keep those mods on their own side without any problem.
How many players can a modded server handle?
The limit usually comes from single-core CPU speed and the automation players build rather than from RAM. A mid-size pack on a good processor comfortably carries 10 to 20 players, while large factories in heavy tech packs push tick times up quickly. A profiler such as spark shows your MSPT and which mod or machine is responsible for the load.
