🧩
VPS

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 vs NeoForge vs Fabric vs Quilt

TraitForgeNeoForgeFabricQuilt
MaturityVery highHigh (fast-growing)HighModerate
Speed to support new MCSlow-moderateModerateFastestFast
Best forLarge modpacksModern 1.20.1+Lightweight, performanceFabric+ crowd
Requires separate APINoNoNeeds Fabric APIFabric/Quilt API
Cross-family modsNoNoNoRuns 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.

  1. Create a mods/ folder inside your server directory.
  2. Download mods from CurseForge or Modrinth that match your loader and Minecraft version.
  3. Upload the .jar files into mods/.
  4. 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.

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:

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

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

View all affordable VPS Thailand plans →