Guides

Modded Minecraft server: Forge, Fabric and a CurseForge server pack

Download a modpack's server pack from CurseForge or Modrinth, install the matching Java version, accept the EULA, size the RAM, and run it as a systemd service.

Published ~7 min read

A modded Minecraft server runs the same way a vanilla one does — Java, a port, a systemd service — with one extra layer: a mod loader (Forge or Fabric) that every client and the server must run in matching versions, plus the actual mod files sitting in a mods folder the loader reads at startup. The easiest path for most packs is downloading the pack’s ready-made server pack from CurseForge or Modrinth rather than assembling the mod list by hand.

Forge or Fabric — pick what the pack already uses

You do not choose a loader independently of the modpack; the pack was built for one of them, and that decision is made for you the moment you pick a pack. The two are not interchangeable — a Forge mod will not load under Fabric or the reverse.

ForgeFabric
Typical useThe larger, older modpacks — most “kitchen sink” packs on CurseForgeLighter, more performance-focused packs, and most of the newest mods first
Server file you runforge-VERSION-installer.jar, run once with --installServerfabric-installer.jar, run once with server -mcversion VERSION -downloadMinecraft
What it needs at runtimeforge-VERSION-shim or the generated run script, plus the Minecraft server jar it downloadsfabric-server-launch.jar, plus Fabric API as a regular mod almost every pack needs

The fast path: a CurseForge or Modrinth server pack

Almost every published modpack has a server pack download alongside the regular client one — a zip containing the correct Forge or Fabric installer, every server-compatible mod already placed in mods/, and a ready-made start script. On CurseForge’s site, it is on the pack’s Files tab as a separate “Server Pack” download next to the client download; on Modrinth it is usually linked from the pack’s overview page. This is almost always less error-prone than rebuilding the mod list yourself, because the pack author has already filtered out client-only mods (shaders, HUD tweaks, resource pack loaders) that would crash a dedicated server or simply do nothing there.

  1. 1Install Java

    Match the Java version to the Minecraft version the pack targets — current releases want Java 21, older ones (1.16 and earlier) want Java 8 or 17 depending on the exact version. Check the modpack’s own page for the Minecraft version it is built on.

    Debian 13 · Ubuntu 24.04
    sudo apt update && sudo apt install -y openjdk-21-jre-headless
  2. 2Upload and unpack the server pack
    your machine, then upload with scp
    scp ServerFiles.zip USER@SERVER_IP:/opt/minecraft/
    Debian · Ubuntu · on the server
    sudo mkdir -p /opt/minecraft
    cd /opt/minecraft
    unzip ServerFiles.zip

    scp covers the upload in full if the server pack is large enough that a stable connection matters.

  3. 3Accept the EULA
    /opt/minecraft/eula.txt
    eula=true

    Without this the server starts, prints a line pointing at Mojang’s EULA, and exits immediately — every time, on every modpack, vanilla included.

  4. 4Give it enough RAM in the start script

    Most server packs ship a start.sh or a plain run.sh with the memory flags already in it; open it and raise -Xmx before the first run rather than after players complain about lag:

    start.sh — edit the existing flags
    java -Xms4G -Xmx6G -jar forge-1.20.1-47.2.0-shim.jar nogui

    Modded packs are the memory-hungry case the plain Minecraft server guide warns about — a heavy pack with forty or more mods routinely wants 6–10 GB where a vanilla server of the same player count runs fine on 2–4 GB. Leave headroom below the box’s total RAM for the OS and the JVM’s own off-heap memory.

  5. 5Open the port and run it as a systemd service
    Debian · Ubuntu
    sudo ufw allow 25565/tcp
    /etc/systemd/system/minecraft.service
    [Unit]
    Description=Minecraft modded server
    After=network.target
    
    [Service]
    User=minecraft
    WorkingDirectory=/opt/minecraft
    ExecStart=/opt/minecraft/start.sh
    Restart=on-failure
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    Debian · Ubuntu
    sudo useradd -r -m -d /opt/minecraft minecraft
    sudo chown -R minecraft:minecraft /opt/minecraft
    sudo systemctl daemon-reload
    sudo systemctl enable --now minecraft

    Creating a systemd service and setting up ufw cover each step in more depth if either is new to you.

Performance: forks and settings that actually move the needle

  • Server JARs aren’t interchangeable with performance forks here. Paper and Purpur (Bukkit-plugin servers) are a separate ecosystem from Forge/Fabric mods — they cannot load a Forge mod. Some packs ship a “hybrid” loader (Mohist, Arclight) that runs both Forge mods and Bukkit plugins together, at the cost of being less actively maintained than either parent project; check its own page for how current it is before relying on it.
  • view-distance and simulation-distance in server.properties cost CPU and RAM per extra chunk; lowering both from the defaults is the single biggest lever on a loaded modded server, well before adding more RAM.
  • Per-core speed still matters more than core count — the same ticking bottleneck that applies to vanilla Minecraft applies to every mod running inside the same tick, only with more code running per tick.

Updating mods without breaking the world

Mod versions are tied to the exact Minecraft and loader version the pack was built against. Updating a single mod to a newer release built for a different Minecraft version, without updating the whole pack, is the most common way to corrupt a world or crash the server on startup. Treat a modpack update as a unit: back up the world folder first, apply the pack author’s new server pack as a whole, and only then bring players back on. Check disk usage before a big pack update — Forge keeps old library jars around across updates, and a world with a lot of generated terrain is rarely small.

Sizing the server

Pack sizeRAMvCores
Light pack (QoL mods, under ~50 mods)4–6 GB2, fast clock preferred over more cores
Medium pack (tech or exploration, 100+ mods)6–8 GB2–4
Heavy kitchen-sink pack, several players10 GB+4, still clock-speed sensitive

These are starting points, not promises — the only reliable number is the one you measure with your own pack and player count, with Can’t keep up! in the console as the warning sign to size up. A Hi-CPU KVM instance, built around fast AMD EPYC cores rather than many slower ones, suits this kind of single-threaded-tick workload better than a plan optimised for parallel load. For the vanilla setup this guide builds on, see hosting a Minecraft server on a VPS, and for other game servers on the same box, the gaming VPS page’s sizing table covers several titles side by side.

Frequently asked

Do I need Forge or Fabric?

You don't choose independently — the modpack was built for one of them, and picking the pack decides it. Forge and Fabric mods are not interchangeable; a mod built for one will not load under the other.

Where do I get the server files for a modpack?

Almost every published pack has a separate “Server Pack” download next to the regular client download — on CurseForge it's on the pack's Files tab, on Modrinth it's usually linked from the overview page. It already contains the correct loader installer and every server-compatible mod, with client-only mods filtered out.

How much RAM does a modded Minecraft server need?

It depends entirely on the pack. A light pack of quality-of-life mods runs on 4–6 GB; a heavy kitchen-sink pack with a hundred or more mods commonly wants 8–10 GB or more. Treat any number as a starting point and watch the server's own memory use under real play.

Why does the server say Can't keep up?

The tick loop fell behind — the server isn't finishing a game tick within its time budget. On a modded server this is almost always too many mods doing too much per tick for the CPU available, or one specific mod with a known performance problem, more often than a flat lack of RAM.

Related articles

All guides