How to Host a Minecraft Modpack Server (Forge & Fabric)
Run a modded Minecraft server for CurseForge or Modrinth packs. Install Forge or Fabric, match versions, allocate RAM and open the port.
Modpacks turn Minecraft into whole new games โ tech progression, magic systems, kitchen-sink adventures. Hosting one is a bit more involved than vanilla because you're matching mod loaders, versions and memory. Here's how to do it properly.
First: Forge or Fabric?
Modpacks are built on one of two mod loaders, and you must run the matching one:
- Forge (and its fork NeoForge) โ the older, larger ecosystem; most big kitchen-sink packs use it.
- Fabric โ lighter and faster, popular for performance and smaller packs.
Check your modpack's page. It will state the loader and the exact Minecraft version, e.g. "Forge 1.20.1". Everything must match that.
Sizing up: modpacks are hungry
Modded Minecraft needs far more RAM than vanilla:
- Light packs (30โ80 mods): 4 GB.
- Medium packs: 6 GB.
- Large kitchen-sink packs (200+ mods): 8โ10 GB.
Give the OS an extra 1โ2 GB on top. Under-allocating RAM is the number one cause of modpack crashes.
Step 1: Install Java
Match Java to the Minecraft version โ Java 21 for 1.20.5+, Java 17 for many 1.18โ1.20.4 packs. Check the pack's requirements:
sudo apt install openjdk-21-jre-headless screen -y
Step 2: Get the server pack
Most modpacks provide a dedicated server pack download on CurseForge or Modrinth โ use that, not the client pack. Download and unzip it onto your VPS:
wget -O modpack-server.zip "PASTE_SERVER_PACK_URL"
unzip modpack-server.zip -d modpack && cd modpack
The server pack usually includes an install or start script that downloads the correct Forge/Fabric loader and all mods.
Step 3: Run the installer/start script
Many packs ship a startserver.sh or an installer:
chmod +x startserver.sh
./startserver.sh
On first run it fetches the mod loader and mods, then stops at the EULA. Set eula=true in eula.txt and run it again.
Step 4: Set the RAM in the start script
Open the start script and set the heap to match your pack โ for example -Xms8G -Xmx8G for a large pack on a 10 GB box. Add Aikar's flags here too; modded servers benefit heavily from the tuned garbage collector.
Step 5: Launch inside screen and open the port
screen -S modpack
./startserver.sh
Modpacks use the standard Minecraft port unless changed:
sudo ufw allow 25565/tcp
Step 6: Players must match the pack
Every player needs the same modpack at the same version installed via a launcher (CurseForge, Prism, Modrinth). A mismatched mod or version will refuse to connect and usually names the offending mod, which makes troubleshooting easy.
Updating a modpack
When a pack updates, back up your world first, then update the server files to the new version โ do not mix mod versions. Some updates are save-compatible and some aren't, so read the changelog and always keep the pre-update backup.
Common crash causes
- Not enough RAM โ the most frequent culprit; bump the heap.
- Wrong Java version โ match it to the pack.
- A single incompatible mod โ the crash log names it; check the pack's known issues.
Reading the crash log
When a modpack server crashes, don't guess โ read the log. It's written to the logs folder (and often a crash-reports folder) and almost always names the mod or cause near the bottom. A line like "OutOfMemoryError" means bump the heap; a mod name in a stack trace points you straight at the culprit. Learning to skim these logs saves hours, because modded Minecraft tells you exactly what went wrong if you look.
Where hosting helps
Big modpacks are demanding on both memory and disk โ hundreds of mods mean lots of files to load and larger, more frequent world saves. Nxeon's NVMe VPS keeps those loads and saves quick, offers the RAM headroom kitchen-sink packs need, and gives you full root to run install scripts and Aikar's flags freely. Upload the server pack over SFTP, allocate the memory, and your modded world is ready for the group.