How to Add Mods to a Minecraft Server (Forge & Fabric)
Once Forge or Fabric is installed, this is how you actually add, update, and troubleshoot mods on a Minecraft server without crashes.

You have a mod loader installed — now you need mods on it. This guide covers adding mods to both Forge and Fabric servers, keeping client and server in sync, and reading the log when something refuses to load.
The one rule that prevents most crashes
Every mod jar must match three things: your Minecraft version, your loader (Forge *or* Fabric — never both in one server), and its own dependencies. A 1.19.2 mod will not load on a 1.20.1 server. Get those aligned and 90% of "modded server won't start" problems disappear.
If you have not set up a loader yet, start with the Forge install guide or the Fabric install guide first.
Where mods go
Both loaders read from a folder literally named mods in the server directory. Create it if the first boot did not:
cd ~/minecraft-server
mkdir -p mods
Download the .jar from CurseForge or Modrinth (pick the file tagged for your exact version and loader) and place it there:
cd mods
wget -O jei.jar "<direct-download-url>"

Client vs server mods
This trips up newcomers. There are three kinds of mods:
- Both sides: most content mods (new blocks, mobs, dimensions). These must be installed on the server *and* every player's client, at the same version.
- Server-only: performance and admin mods like Lithium, Spark, or LuckPerms. Players do not install these.
- Client-only: rendering/UI mods like Sodium or a minimap. Do not put these in the server
modsfolder — they can crash it.
Handle dependencies
Many mods need a library mod. Fabric mods almost always need the Fabric API. Forge content mods often need libraries like Cloth Config or Architectury. The crash log tells you exactly what is missing:
tail -n 60 logs/latest.log
Look for lines like "requires fabric-api which is missing" — download that dependency, drop it in mods, and restart.
Restart cleanly and verify
Never hot-add mods to a running world. Stop the server, add jars, then start again:
# in the server console
stop
# then relaunch
java -Xmx6G -Xms6G -jar server.jar nogui
Watch the log for "Loading X mods" and confirm your new mod is listed.
Updating mods safely
Before updating a content mod on a live world, back up the world — new versions can change how blocks are stored. Update one mod at a time so if something breaks, you know which one did it. Big curated packs handle this for you; see installing a CurseForge modpack if you would rather run a ready-made pack.
CurseForge vs Modrinth
The two main mod repositories are CurseForge and Modrinth. Both are safe and host most popular mods; Modrinth tends to have a cleaner interface and stricter version filtering, while CurseForge has the larger catalogue and hosts most big modpacks. Whichever you use, always filter by your exact Minecraft version and loader before downloading. Avoid random mod-mirror sites — repackaged mods are a common source of malware.
Test a new mod safely
Before adding a mod to a world people are building in, prove it loads on its own:
- Back up the world first.
- Stop the server, add the single mod (plus dependencies), and start again.
- Watch the log for "Loading N mods" and confirm yours is listed.
- Join and check nothing is broken before adding the next mod.
Adding mods one at a time means that if the server crashes, you know exactly which mod caused it. Bulk-adding twenty mods and then debugging a crash is far harder.
Removing a mod cleanly
Removing a content mod that has added blocks or items to your world can leave "missing" entries. To remove one safely:
# stop the server, then:
mv mods/problem-mod.jar ~/disabled-mods/
Restart and check the log — some mods warn about missing content but load fine; others need a cleanup tool. Again, back up before removing anything from an established world. If you're assembling a large set of mods, a curated CurseForge modpack handles all this compatibility work for you, and the Forge and Fabric guides cover the loader underneath.
Reading a crash report
When a mod brings the server down, Minecraft writes a full crash report to crash-reports/ (separate from logs/latest.log). Open the newest one:
ls -t crash-reports/ | head -1
cat crash-reports/$(ls -t crash-reports/ | head -1)
The top section, "Description," usually names the mod or the action that triggered the crash, and the stack trace below often mentions a mod's package (e.g. com.somemod.). That's your prime suspect — disable it and restart. If the report points at a rendering or client class, you likely added a client-only mod to the server. Reading crash reports is the single most useful modded-server skill; it turns "it won't start" into a specific, fixable cause. Combine it with adding mods one at a time (above) and you'll rarely be stuck for long. For loader setup, see the Forge and Fabric guides.
FAQ
Why does my server crash on startup after adding a mod?
Almost always a version or dependency mismatch. Read logs/latest.log — it names the offending mod. Remove it, restart, and re-check the mod's required version.
Do all players need the same mods?
For content mods, yes — identical mods at identical versions. Server-only and client-only mods are the exceptions.
Can I add mods to a vanilla world?
Yes, copy the world into your modded server. Back it up first; mods that add worldgen may change unexplored chunks.
How many mods is too many?
There is no hard cap, but each mod adds RAM and tick cost. If you pass ~150 mods, budget 8 GB+ and read the lag-reduction guide.
Big modpacks need memory and NVMe speed to load fast. Nxeon's game server hosting gives you the root access and resources to run any Forge or Fabric setup you like.