Modded Minecraft opens up a whole new world: industrial machines, magic systems, new mobs and sprawling dimensions that vanilla simply cannot deliver. But to play smoothly with a group of friends, renting a VPS and running your own server is the most cost-effective and flexible option. This guide walks you through setting up a modded Minecraft server with the popular mod loaders Forge, NeoForge, Fabric and Quilt, from an empty box to a world your friends can join.
What a Mod Loader Is and Why the Choice Matters
Vanilla Minecraft cannot load mods on its own, so you need an intermediary called a mod loader that hooks mods into the game. The single most important rule to remember is that the server and every player must run the same loader, the same set of mods, and matching versions of each. Otherwise players simply cannot connect.
The loader families
- Forge — the oldest and most mature loader, built for large mods and enormous modpacks; ideal for tech and industrial packs.
- NeoForge — a community fork of Forge that has become the dominant choice for Minecraft 1.20.1 and newer; structurally similar to Forge but developed faster.
- Fabric — lightweight and quick to update for new Minecraft versions, but most mods depend on a helper mod called Fabric API.
- Quilt — a fork of Fabric focused on backward compatibility with existing Fabric mods plus extra features.
Forge vs NeoForge vs Fabric vs Quilt
| Trait | Forge | NeoForge | Fabric | Quilt |
|---|---|---|---|---|
| Maturity | Very high | High (fast-growing) | High | Moderate |
| Speed to support new MC | Slow-moderate | Moderate | Fastest | Fast |
| Best for | Large modpacks | Modern 1.20.1+ | Lightweight, performance | Fabric+ crowd |
| Requires separate API | No | No | Needs Fabric API | Fabric/Quilt API |
| Cross-family mods | No | No | No | Runs Fabric mods |
Iron rule: Forge/NeoForge mods and Fabric/Quilt mods are completely incompatible with each other. Choose a loader first, then only install mods that match that family and your exact Minecraft version.
Preparing the VPS and Java
A Minecraft server runs on Java, and you should install the Java version that matches your Minecraft release: 1.20.1+ uses Java 17, while 1.21+ requires Java 21. On Debian/Ubuntu you can set it up with the following.
sudo apt update
sudo apt install -y openjdk-21-jre-headless screen
java -version
mkdir ~/mcserver && cd ~/mcserver
Run the server as a regular (non-root) user and use screen or systemd so the server keeps running after you close your SSH session.
Installing a Forge or NeoForge Server
Download the Forge/NeoForge installer that matches your Minecraft version, then run it in server-install mode.
wget https://.../forge-1.20.1-XX.X.X-installer.jar
java -jar forge-1.20.1-XX.X.X-installer.jar --installServer
# produces a libraries/ folder and a run.sh script
echo "eula=true" > eula.txt
./run.sh
Recent versions generate a run.sh launch script (on Linux) alongside a libraries/ folder. NeoForge follows almost identical steps; you simply swap in its installer jar.
Installing a Fabric or Quilt Server
Fabric uses a universal installer; call its server command to produce the run file.
wget https://.../fabric-installer.jar
java -jar fabric-installer.jar server -mcversion 1.20.1 -downloadMinecraft
echo "eula=true" > eula.txt
java -Xmx6G -jar fabric-server-launch.jar nogui
This produces fabric-server-launch.jar, which you launch with the command above. Remember that nearly every Fabric mod requires Fabric API to be placed in the mods/ folder as well.
Installing Mods on the Server
Every loader works the same way: drop mod files with the .jar extension into the mods/ folder (create it if it does not exist), then restart the server.
- Create a
mods/folder inside your server directory. - Download mods from CurseForge or Modrinth that match your loader and Minecraft version.
- Upload the
.jarfiles intomods/. - Restart the server and check the log for any mod that throws an error.
Some mods are purely client-side (minimaps, shaders) and do not need to be on the server, but content mods (blocks, items, mobs) must exist on both sides.
Ready-Made Modpacks from CurseForge, Modrinth and FTB
If you would rather not install mods one by one, use a ready-made modpack. The most popular sources are CurseForge, Modrinth and FTB (Feed The Beast), and each pack usually offers a separate "server files" download.
- Download the pack's server files, extract them onto the VPS, and run the bundled
start.shscript. - Note which loader and Minecraft version the pack uses so players can match it on the client side.
Warning: large modpacks are extremely memory-hungry, commonly demanding 6-10GB+ of heap, compared with 1-2GB for vanilla. Pick a VPS plan with enough RAM from the start.
Tuning RAM and the JVM
A modded server uses noticeably more CPU and RAM than vanilla. Set the heap with the -Xms and -Xmx parameters and use a G1/Aikar's-style garbage collector.
java -Xms6G -Xmx6G \
-XX:+UseG1GC -XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
-jar fabric-server-launch.jar nogui
Set -Xms equal to -Xmx to avoid heap resizing, and keep the heap under roughly 80% of system RAM to leave room for the OS. Per-tick performance still depends mostly on single-thread CPU speed, so choose a VPS with a high per-core clock.
The Player Side: Matching Mods Exactly
Every player must install the same loader and mod set as the server. The easiest approach is a dedicated launcher, such as:
- CurseForge App — installs CurseForge modpacks in a single click.
- Prism Launcher — open source, excellent at managing multiple instances.
- ATLauncher — supports a wide range of packs.
- Modrinth App — purpose-built for Modrinth packs.
Share the exact same modpack link with everyone so mod versions align perfectly and you avoid the dreaded "can't connect" errors.
Compatibility and Backup Cautions
- Every mod must match your Minecraft version and chosen loader.
- Update the whole mod set together; never update a single mod until its dependencies fall out of sync.
- Back up the world/ folder before adding or removing any mod, because removing certain mods can corrupt the save.
- Always read the log when the server crashes; it tells you which mod is conflicting.
Choosing a VPS for a Modded Server
Because mods consume a lot of RAM and CPU, choosing a plan with sufficient resources matters. AsiaGB's Linux VPS plans start at 500 THB/month, use SSD storage, offer a 99% uptime guarantee, and are managed through the DirectAdmin control panel. For large modpacks, pick a plan with 8GB of RAM or more so it can comfortably serve the heap you need.
Frequently Asked Questions
Can I mix Forge and Fabric mods on the same server?
No. Forge/NeoForge mods and Fabric/Quilt mods target completely different APIs and are incompatible. You must pick a single loader family and use only mods built for it, with the sole exception that Quilt can run Fabric mods because it was forked from Fabric.
How much RAM does a modded server need?
It depends on the number of mods and players. A few lightweight mods may run on 4GB, while large CurseForge or FTB modpacks often need a heap of 6-10GB or more. Set -Xmx to no more than about 80% of system RAM and choose a VPS plan with enough capacity from the outset.
Do players install mods themselves or does the server handle it?
Players must install the loader and client-side mods to match the server themselves, except for purely server-side mods. The simplest method is a launcher such as CurseForge, Prism or the Modrinth App, then share the same modpack link with everyone.
Why do I get kicked out immediately when I join?
The most common cause is a mismatch between the client's mod or loader versions and the server's. Confirm you are using the same Minecraft version, the same loader and the complete matching mod set, including Fabric API if using Fabric, then read the log to find the missing or conflicting mod.
Ready to launch your Minecraft server?
AsiaGB Linux VPS (SSD, DirectAdmin, 99% uptime) from 500 THB/month — Thailand & Singapore datacenters for low ping, perfect for Minecraft servers of any size.
View VPS Plans