// guide

How to make a modded Minecraft server

A modded server is a normal Minecraft Java server with a mod loader and the same mods your players run. The steps are the same for any pack: get the server files, run them on the right Java, give them enough RAM, accept the EULA, then let your friends in. This guide does it by hand on your own PC or VPS, and shows where a host saves you steps.

Updated  ·  Java Edition  ·  Forge, NeoForge, Fabric

1. Pick a pack or a loader

Most people start from a modpack on CurseForge or Modrinth. The pack decides everything else: the Minecraft version, the loader (Forge, NeoForge or Fabric) and the exact mod list. Before you start, note four things from the pack’s page: its Minecraft version, its loader, whether it publishes a server pack, and how much RAM its authors suggest. Our modpack guides list all four for every pack we’ve checked.

If you’re building your own mod list, choose the Minecraft version and loader first, then only use mod files built for that exact pair. A Fabric mod won’t load on Forge, and a 1.20.1 mod won’t load on 1.21.1. Mixing them is one of the most common crashes (wrong mod loader).

Whatever you pick, give the server its own empty folder. Don’t build it inside your game’s instance folder.

2. Get the server files

Route A: a CurseForge server pack

Many CurseForge packs publish a ready-made server pack for each release. Open the pack’s Files tab, click the version your players will use, and look under Additional Files. Two examples we checked:

Some packs put the server pack on the main file list instead, so if there’s nothing under Additional Files, look there for a file with “server” in its name. Extract it into your empty folder. Inside the ATM10 zip, for example, are mods/, config/, defaultconfigs/, kubejs/, datapacks/, the NeoForge installer, user_jvm_args.txt and two start scripts (startserver.sh and startserver.bat). On first run its script installs NeoForge, refuses to start on anything older than Java 21, and then starts the server. When a pack ships its own start script, use it, and read its comments: ATM10’s explains how to point it at a specific Java.

Route B: a Modrinth pack (.mrpack)

Modrinth packs come as one .mrpack file, which is a zip. It doesn’t contain the mods themselves. It has a modrinth.index.json that lists every file with its download link and an env field saying whether the client and the server need it, plus an overrides/ folder of configs and other files (and optionally server-overrides/ for the server only).

A tool can build the server from that. mrpack-install installs the loader, downloads every file the index doesn’t mark as unsupported on the server, and copies the overrides:

mrpack-install cobbleverse 1.7.42 --server-dir server

It only knows what the pack author wrote in env, and many packs mark everything as needed on both sides. Check the version you download, too: the last stable release, v0.16.10 from February 2024, sets up Fabric, Quilt and Forge servers but not NeoForge. NeoForge support is only in its newer beta builds. For the manual way, and for packs with no server pack at all, see making a server for a modpack with no server pack.

Route C: just the loader, for your own mods

3. Install the right Java

The Java version follows the Minecraft version, whatever the loader:

MinecraftJava
26.1 and newerJava 25
1.20.5 – 1.21.11Java 21
1.18 – 1.20.4Java 17
1.17Java 16
1.16.5 and olderJava 8

Eclipse Temurin (adoptium.net) has free builds of each; the JRE is enough for a server. Newer isn’t better here: a 1.20.1 Forge pack can fail on Java 25, and Forge for 1.12.2 won’t start on anything above Java 8. The Minecraft Java version chart explains why and how to run several Java versions side by side, and lists the Java for every pack we cover.

4. Start it and accept the EULA

Open a terminal in the server folder and start it:

The first start always stops early with:

You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

That’s expected. Open eula.txt in the server folder, read Mojang’s EULA (the link is in the file), change eula=false to eula=true, save, and start the server again. If it keeps asking, see EULA not accepted.

The second start loads every mod and generates the world, which takes a while on a big pack. It’s ready when the console prints Done (…)! For help, type "help". A wall of WARN lines on the way is normal. To shut down, type stop in the console and wait for it to finish saving the world.

5. Set the RAM

On Forge 1.17+ and NeoForge, RAM goes in user_jvm_args.txt. The installer writes it with the setting commented out:

# Xmx and Xms set the maximum and minimum RAM usage, respectively.
# They can take any number, followed by an M or a G.
# M means Megabyte, G means Gigabyte.
# For example, to set the maximum to 3GB: -Xmx3G
# To set the minimum to 2.5GB: -Xms2500M

# A good default for a modded server is 4GB.
# Uncomment the next line to set it.
# -Xmx4G

Remove the # from the last line and set your number, for example -Xmx8G for a mid-size pack. On Fabric and old Forge, the -Xmx goes in the java command itself, as in step 4.

-Xmx caps Java’s heap, and the process uses some memory on top of it. Leave room for that and for your operating system, and if you play on the same PC, for your own game too: a modded client needs plenty of RAM as well. How much a pack needs depends mostly on its size and your player count; how much RAM a modded server needs has a table.

6. Open it to your friends

On the same network

Friends on your home network can join with your PC’s local address, like 192.168.1.20. Minecraft listens on port 25565 unless you changed server-port in server.properties.

Over the internet: port forwarding

  1. Give your PC a fixed local address (a DHCP reservation in your router), so the rule keeps pointing at it.
  2. In your router, forward TCP port 25565 to that address. The menu is usually called port forwarding or virtual servers.
  3. Allow Java through your PC’s firewall.
  4. Give friends your public IP address (search “what is my IP”). They join with that address, plus :port if you changed it.

Check for CGNAT first. Compare the WAN address your router reports with the public IP a “what is my IP” search shows. If the two differ, or the router’s address is in the 100.64.0.0 to 100.127.255.255 range, you’re most likely behind CGNAT: your provider puts several customers behind one public address, and port forwarding on your router won’t help. Your options are asking the provider for a public IPv4 address, using a tunnel service, or hosting the server elsewhere.

Two more things to know: everyone you give the address to can see your home IP, and the server is only up while your PC is on. If the server won’t start because the port is taken, see failed to bind to port. If it runs but friends can’t get in, why friends can’t join a modded server goes through each error message they might see.

On a host

A hosted server comes with its own address and nothing to forward. That’s most of what you pay for in this step.

7. Friends join with the same pack

Every player needs the same pack, at the same version, as the server. Install it from the same source in a launcher that supports modpacks, such as the CurseForge app, the Modrinth App or Prism Launcher, and check the version number matches. A player on a different pack version, or missing a mod, usually can’t connect, or is disconnected right after joining.

8. Home or hosted: the honest costs

Hosting at home costs no subscription, and for a few friends who play while you’re online, it’s a fine way to start. The costs are real, though; they’re just not on a bill from us.

Your own PCA host (DSN)
MoneyElectricity. A PC drawing 100 W around the clock uses 72 kWh a month (100 W × 720 hours); multiply by your rate. Check your own PC’s draw.Planned at Standard $16 (4 GB), Premium $30 (8 GB) or Heavy $42 (12 GB) a month. Ordering is closed until we relaunch.
When it’s upOnly while your PC is on and awake.Runs without your PC. We don’t promise an uptime SLA.
PerformanceShares CPU and RAM with whatever else you run, including your own game.Hardware picked for single-core speed. Our first servers had a Ryzen 7 5800X and NVMe storage; the relaunch hardware isn’t final yet, and we’ll publish the CPU and storage before ordering opens.
NetworkPort forwarding, possibly CGNAT, your upload speed, your home IP shared.Its own address, and no home IP to hand out. Our first servers ran in US East (Virginia) behind the data center’s network DDoS protection; we’ll confirm the location and DDoS protection with the new hardware.
BackupsWhatever you set up yourself.Nightly off-site backups with monthly restore checks, plus 5 on-demand backups.
Your timeYou’re the admin: installs, updates, crashes.Still yours for the pack, but the panel does the installs, and support is by email or Discord.

Measure your own PC’s power draw with a plug-in meter if you want a real number; ours above is only an example of the sum.

When it won’t start

Paste the end of the console, logs/latest.log or the newest file in crash-reports/ into the free crash log analyzer. It names the error and the fix. The usual first-boot problems:

Or skip steps 2 to 6.

On DSN, the panel installs Forge, NeoForge, Fabric or a CurseForge or Modrinth pack in one click. You pick Java from a dropdown, accept the EULA yourself in the console, and get a file manager, SFTP and scheduled tasks. We're moving DSN Servers to new hardware, and ordering is closed until then. Join the launch list and we'll email you when servers open.

Join the launch list