How to install a Minecraft modpack on your server
Three ways to get a modpack running: 1-click install from CurseForge or Modrinth, manual SFTP upload of a server pack, or a DIY pack built from individual mods. Includes RAM sizing, first-boot expectations, and fixes for the errors you'll actually hit.
What you need first
Before you install anything, make sure you have:
- An active Minecraft Java Edition server on Fatality Servers. Modpacks don't run on Bedrock โ all of this guide is Java-only.
- Enough RAM for the pack you're installing (see the sizing table below). Undersized RAM is the #1 cause of "it won't start" tickets.
- An SFTP client if you plan to do Method 2 or 3 โ FileZilla, WinSCP, or any SSH-capable client works.
- The client-side modpack installed locally for every player. We'll cover this at the end of each method โ server-side mods don't work unless each player has a matching client.
Heads up: If you're bringing a modded world over from another host, install the modpack first then upload the world โ this guarantees the Minecraft + modloader versions match the save's format.
Method 1 โ 1-click install (recommended)
If your modpack is on CurseForge or Modrinth, this is the fastest path. We auto-detect the modloader, pick the right Java version, and apply Aikar's GC flags for you.
-
Find your modpack's URL or ID
On CurseForge, open the pack page and copy the browser URL (something like
https://www.curseforge.com/minecraft/modpacks/all-the-mods-9). On Modrinth, the URL looks likehttps://modrinth.com/modpack/adrenaserver. Either form works. -
Open your server's Modpacks tab
In the Fatality panel: Your server โ Modpacks. Paste the pack URL into the Install modpack field. If the pack has multiple versions available, pick the one you want (latest stable is usually the right call).
-
Click Install and wait
The panel will:
- Download the server pack (not the bulkier client pack)
- Extract into your server directory
- Select the matching modloader โ Forge, Fabric, NeoForge, or Quilt
- Set the correct Java version (Java 8 for 1.12.2, Java 17 for 1.18-1.20.4, Java 21 for 1.20.5+)
- Apply Aikar's GC flags to your startup command
- Preserve your existing world if it's compatible; otherwise archive it before overwriting
Most packs finish in 60-120 seconds. Very large ones (ATM9, GT: New Horizons, DawnCraft) can take 3-5 minutes depending on the source's download speed.
-
Confirm your RAM allocation
After install, the panel shows the pack's recommended minimum. If your current plan is below that, upgrade from the panel now โ see the RAM table for real-world numbers.
-
Start the server
Hit Start. First boot generates chunks and builds the mod registry โ takes 2-5 minutes for most packs. You'll see a
Done (X.XXXs)! For help, type "help"message in the console when the server is ready. -
Install the same pack on every player's client
Every player needs the matching pack installed locally. The easiest launchers:
- CurseForge App โ official client for CurseForge packs
- Prism Launcher โ open-source, handles both CurseForge and Modrinth
- Modrinth App โ official client for Modrinth packs
Share the pack's direct URL with your community. Version numbers must match the server exactly โ a player on 1.2.3 can't connect to a 1.2.4 server.
Where did the 1-click install option go? If you don't see a Modpacks tab, your plan's game template may need to be switched to Minecraft first. Go to Settings โ Game and pick Minecraft Java, then the Modpacks tab appears.
Method 2 โ Manual SFTP upload
Use this when the pack isn't on CurseForge/Modrinth (private packs, beta versions, NDA'd packs) or when you're migrating a modded server wholesale from another host.
-
Download the server pack, not the client pack
On CurseForge โ Files tab โ find the Server Pack download (it's smaller, has no client-only mods like minimap or JEI). On Modrinth, server-compatible files are tagged server.
If you only have a client pack, you'll need to manually remove client-only mods before uploading. The usual suspects: JEI, Xaero's Minimap, OptiFine, Sodium (client-side versions), Iris.
-
Stop your server
Panel โ Stop. Writing files while the server is running will corrupt something you don't want corrupted.
-
Back up your existing server state
Panel โ Backups โ Create manual snapshot. Daily auto-backups cover you, but a manual snapshot right before a big change is cheap insurance. Label it "pre-modpack-install".
-
Clear out incompatible files (if switching packs)
If you already had a different modpack installed, delete the old
mods/,config/, andlibraries/directories from the file manager. Leaveworld/alone unless you're also replacing the world. -
Extract the server pack locally and upload
Unzip the server pack on your machine. Connect via SFTP using the credentials from your panel (Settings โ SFTP Details), then drag the extracted contents to
/home/container/on the server.# SFTP target layout when you're done: /home/container/ โโโ mods/ (all mod JARs) โโโ config/ (modpack configs) โโโ libraries/ (modloader libraries) โโโ server.properties โโโ run.sh or start.bat -
Set the correct server JAR in the panel
Panel โ Settings โ Startup. The Server JAR field needs to match what your pack ships:
- Forge pre-1.17:
forge-{version}-universal.jar - Forge 1.17+:
run.sh(Forge stopped shipping a single-JAR launcher) - NeoForge:
run.sh - Fabric:
fabric-server-launch.jar - Quilt:
quilt-server-launch.jar
- Forge pre-1.17:
-
Start, watch the console
Panel โ Start. Tail the console for errors โ a clean boot shows progress through "Loading mods", "Reloading ResourceManager", and ends at "Done (X.XXXs)". If it errors, jump to Common errors.
Method 3 โ DIY modpack (your own mods)
Curated your own mod list instead of using a pre-built pack? This is the manual path โ more work, more control.
-
Pick your base: Forge, Fabric, NeoForge, or Quilt
Panel โ Settings โ Game โ Version. Pick the modloader + version your mods are built for. Don't mix modloaders โ a Fabric mod won't load on a Forge server and vice versa.
-
Start the server once to generate directories
Hit Start, wait for the first boot to finish, then Stop. This creates the
mods/,config/, andlogs/directories you'll need. -
SFTP upload your mod JARs
Drop each
.jarinto/home/container/mods/. Make sure every mod:- Matches your Minecraft version exactly
- Matches your modloader (Forge vs Fabric JAR โ they're different files)
- Has its dependencies also uploaded (Create needs Flywheel, many Fabric mods need Fabric API, some need Cloth Config or Architectury)
- Isn't a client-only mod (minimaps, shaders, JEI for crafting search โ these belong in the player's client, not the server)
-
Start and fix errors iteratively
Startup will often fail the first time with a missing-dependency error. The console tells you exactly which mod is missing what โ read it, grab the dep from CurseForge/Modrinth, upload, restart. Usually 2-3 iterations to a clean boot.
Distributing a DIY pack to players: Players can't install your custom pack from CurseForge / Modrinth โ it's not published there. Either zip your client-side mods folder and share it in Discord / your website, or publish the pack to CurseForge / Modrinth for easy player installs. For a 10-player friend SMP the ZIP route is fine; for a 100-player community, publish it.
Sizing RAM for your modpack
Undersized RAM is the most common cause of modded Minecraft crashes, and oversized RAM can also hurt (GC pauses grow with heap size when the collector is mistuned โ we handle that with Aikar's flags, but bigger isn't always better).
Rough guide based on what we actually see admins run:
Pack size Recommended RAM
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Light (50 mods, vanilla+) 4 GB
Medium (100-200 mods, e.g. Better MC) 6 GB
Heavy (ATM9, Create: Astral, DawnCraft) 10-12 GB
Kitchen-sink (GT: New Horizons, Divine
Journey 2, 400+ mod DIY) 14-16 GB
Add roughly 1 GB per 10 concurrent players on top of the base pack size. Skyfactory with 8 friends and a shared farm is very different memory behaviour than ATM9 with 30 players building across a 5k-block range.
What to expect on first boot
Modded first-boots are slow. If you're expecting a 10-second vanilla start, it'll feel broken. It isn't.
- 0-30s: JVM starts, modloader initializes.
- 30s-3min: Mod registration pass. Console scrolls with hundreds of
[INFO] Loading mod: ...lines. This is the slowest part on huge packs. - 3-5min: Data pack / resource reload, world generation for spawn chunks.
- Done: Console shows
[Server thread/INFO]: Done (X.XXXs)! For help, type "help". Now players can connect.
First player to connect triggers more chunk gen around their spawn point, so expect 5-10 seconds of visible lag the first time anyone joins. This settles within a minute.
Common errors and fixes
"java.lang.OutOfMemoryError: Java heap space"
The server ran out of RAM. Panel โ Settings โ Resources โ bump your plan up, or upgrade to the next tier. Daily backups protect you while you restart.
"UnsupportedClassVersionError" / "has been compiled by a more recent version of the Java Runtime"
Wrong Java version. Panel โ Settings โ Java Version. Match to your Minecraft version:
- 1.8 โ 1.16: Java 8
- 1.17: Java 16
- 1.18 โ 1.20.4: Java 17
- 1.20.5+: Java 21
Player sees "Mismatched mod list" / "Missing mods" on connect
Player's client doesn't have the same pack version as the server. Either:
- Have them update their pack via CurseForge / Prism / Modrinth app to match the server version, or
- If the server was just updated, roll it back to the pack version players are on โ from the panel's Backups tab, pick the snapshot from before the update.
"Failed to load world" / corrupt save
Panel โ Backups. Pick the most recent snapshot before the issue appeared and rollback. All managed Minecraft plans have daily auto-snapshots with 30-day retention; manual snapshots are unlimited.
"Invalid save format" after modpack update
Some pack updates introduce breaking world-format changes (especially modloader major-version jumps like Forge 1.18 โ 1.19). Check the pack's changelog for breaking changes. Options:
- Roll back the modpack to the previous version if you can't lose the world
- Start a fresh world on the new pack version (consider keeping both servers running for a migration period)
Crash on a specific action (placing a block, entering a biome)
Check /home/container/crash-reports/. The top of the stack trace usually names the mod at fault โ often a known bug with a newer version available. Update that one mod via SFTP and restart.
Don't edit level.dat manually. It's tempting to open it with NBT Explorer to "fix" something โ 95% of the time you make the corruption worse. Roll back from a backup instead; if the last good backup is too old, open a support ticket and we'll take a look at the save.
Performance tuning
Once the pack boots cleanly, these are the wins that actually move the TPS needle on modded servers:
- Pre-generate the world โ install the Chunky mod (works on Forge and Fabric) and run
/chunky radius 3000 && /chunky start. Pre-generation runs in a few hours overnight and eliminates the lag spikes players see when exploring new chunks. - Lower view and simulation distance โ in
server.properties, dropview-distancefrom 10 to 6-8 and matchsimulation-distance. For 200+ mod packs this single change can double your TPS under player load. - Install performance mods โ Starlight (replaces vanilla's lighting engine; huge 1.18+ gain), Lithium (Fabric) or Radium (Forge port), FerriteCore (memory usage). Compatible with almost every pack.
- Trim optional bundled mods โ many packs include optional decoration/QoL mods you don't need. Check the pack's README for the removable list; moving them out of
mods/saves RAM and tick time. - Keep Aikar's flags on โ our panel applies them automatically, don't override them in Settings โ Startup unless you know what you're doing. They tune G1GC for the exact memory access pattern Minecraft has.
Stuck on something specific? Email support with your server ID, the modpack name + version, and the last 50 lines of your server console โ we'll usually have an answer within the hour. For the broader list of common questions, see the FAQ's Games & Mods section.