Minecraft ยท Modding

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.

  1. 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 like https://modrinth.com/modpack/adrenaserver. Either form works.

  2. 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).

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  1. 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.

  2. Stop your server

    Panel โ†’ Stop. Writing files while the server is running will corrupt something you don't want corrupted.

  3. 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".

  4. Clear out incompatible files (if switching packs)

    If you already had a different modpack installed, delete the old mods/, config/, and libraries/ directories from the file manager. Leave world/ alone unless you're also replacing the world.

  5. 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
                
  6. 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
  7. 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.

  1. 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.

  2. Start the server once to generate directories

    Hit Start, wait for the first boot to finish, then Stop. This creates the mods/, config/, and logs/ directories you'll need.

  3. SFTP upload your mod JARs

    Drop each .jar into /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)
  4. 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, drop view-distance from 10 to 6-8 and match simulation-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.