Getting a Minecraft server running takes about ten minutes. Getting one that doesn't get griefed, doesn't crash under six players, and doesn't quietly run the wrong Java version takes a few more decisions. This guide to how to make a Minecraft server covers both, current as of 26.3 (released September 15, 2026).
What you need before you start
- A machine you can leave running — your PC, a spare box, or rented hosting.
- The correct JDK for your target Minecraft version (table below — this trips up more people than anything else).
- Enough RAM. There's no official spec; the commonly cited figure for a small server is around 4–6GB, but treat that as a community estimate, not a requirement.
- A plan for how friends will connect, decided before you open a port.
Choosing your server software
Paper is the de-facto standard in 2026, and there's little reason left to pick Spigot or CraftBukkit for a new server. It's a drop-in replacement — migrating a vanilla world is automatic — and it carries performance work and configuration options vanilla doesn't.
Pick Fabric instead if what you want is mods rather than plugins. The two ecosystems are separate; Bukkit-family plugins do not run on Fabric.
Forks like Purpur, Pufferfish and Leaf exist, and they mostly matter once you're past 100 concurrent players. Below that, the difference is negligible. We'll also be honest that we could not verify the current maintenance status of each fork — check the project's own repository activity before depending on one.
One 26.1 change that affects plugins
Paper fully dropped its internal remapper in 26.1. Obfuscated names are gone, and plugins compiled against Spigot mappings break. If you're running older plugins or writing your own, read Paper plugin best practices before you update.
Paper on 26.3: still experimental
As of October 2, 2026, PaperMC's downloads page still offers Paper 26.2 as its main download, with 26.3 builds behind an "experimental builds" toggle. Pixly's tracking reports the 26.3 builds moved from alpha to beta on September 28, with none marked stable yet. For a server your friends rely on, start on 26.2 and move up when PaperMC promotes a 26.3 build — and back up first, because PaperMC warns that once a world is upgraded to 26.3 you cannot downgrade it.
The catch, per Pixly: a player on a 26.3 client can't join a 26.2 server — they get an "Incompatible client! Please use 26.2" message. ViaVersion 5.12.0 or newer lets them in on a plugin server.
Installing the right Java version
From the official PaperMC documentation:
| Minecraft version | Required Java |
|---|---|
| 1.7.10 – 1.11 | Java 8 |
| 1.12 – 1.16.4 | Java 11 |
| 1.16.5 | Java 16 |
| 1.17 – 1.19 | Java 17 |
| 1.20 – 1.21.11 | Java 21 |
| 26.1 and later | Java 25 |
26.3 changes nothing here: Paper's getting-started docs, updated after the release, still say Paper needs at least Java 25, and the Minecraft Wiki lists Java SE 25 as the minimum for 26.3.
One conflict worth flagging: at least one third-party mirror lists Paper 26.2 as requiring Java 21. That contradicts the official documentation, and we defer to the official docs — install Java 25 for 26.1 and later. If you want the version history behind that table, see the latest Minecraft update.
First run and the EULA
Drop the jar in an empty folder and run:
java -Xms4G -Xmx4G -jar paper.jar --nogui
The first run stops immediately and generates eula.txt. Open it, change eula=false to eula=true, and run the command again. That's the whole "installation".
Paper server setup: startup script and flags
Two rules for memory. Set -Xms equal to -Xmx — a fixed heap avoids resize pauses. And leave roughly 512MB to 1GB of system RAM outside the heap for the JVM itself and the OS; allocating your entire machine's memory to the heap is a classic way to make things worse.
PaperMC publishes an official Startup Script Generator, which is the easiest correct answer. If you'd rather paste the documented baseline, Aikar's flags are officially recommended in the Paper docs:
java -Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper.jar --nogui
In fairness: a minority view on r/admincraft holds that these flags are mostly placebo on Java 21 and newer. We're including that because it's a real position, not because we've measured it either way. The flags are the documented baseline, they don't hurt, and they're what support channels will assume you're running.
Configuring the basics
The first thing a 26.3 server will surprise you with: the whitelist is on by default. Since 26.3, a freshly generated server.properties contains white-list=true, so a brand-new server turns away everyone you haven't added (operators are whitelisted automatically). Add friends with /whitelist add <name>, or set white-list=false and restart if the server is meant to be public. Existing servers keep whatever value their file already holds, because the server only fills in missing keys — set it explicitly and it can't surprise you either way.
Two older changes will confuse you if you're following an older guide. allow-nether was removed from server.properties in 1.21.9 — Nether access is now a gamerule, or enable-nether in Paper's global config. And Paper's unsupported-settings.compression-format was merged into vanilla as region-file-compression in 26.1. Full key-by-key detail is in server.properties, fully explained.
One more on the horizon: PaperMC says it is preparing to merge the options currently split across the Bukkit, Spigot and Paper config files into one place, with 26.4 as the current target. Expect config guides to shift again when that lands.
Letting friends connect
Port forwarding
The lowest-latency option, and the one that exposes your home IP address to anyone who joins. The risk is real but limited in practice; the sensible discipline is to close the port when the server isn't running.
Tunnels like playit.gg
playit.gg gives you a free tunnel that hides your IP and works behind CGNAT, which port forwarding can't. The trade-offs: you're depending on a third party staying up, and you're adding latency. One report describes severe degradation with three or more players — a single data point, not a general finding, but worth testing early.
Paid hosting
Third-party and anecdotal figures — non-authoritative, and prices move — put vanilla servers around $10–20/month, modded around $20–35, and heavy modpacks around $35–50, with per-gigabyte pricing roughly $1–3/GB.
Self-hosting cuts both ways in the anecdotes. Some admins report a rude awakening once electricity and hardware are counted honestly. Others report the opposite: one ran a low-power box costing around £700 for four and a half years. Both are individual experiences, not a cost model.
Security essentials
Do not set online-mode=false on a public server. It removes account verification entirely, which means anyone can join impersonating anyone — including your operators — and multiple sources treat it as an EULA violation. If your situation genuinely requires it, mitigate with a whitelist plus an authentication plugin such as AuthMe Reloaded or FastLogin, and understand you're accepting the risk.
The whitelist is the highest-value control you have; r/admincraft calls it the number one way to protect against random griefing. On 26.3 it's on out of the box for new servers — resist the urge to switch it off just to save typing a few names. Beyond that, three habits: take backups and verify they restore, hand out operator status sparingly and revoke it when it's no longer needed, and keep configuration under version control so you can see what changed.
Common first-time mistakes
- Running the wrong JDK — check the table before troubleshooting anything else.
- Allocating all system RAM to the heap, leaving nothing for the JVM and OS.
- Setting
-Xmsand-Xmxto different values. - Leaving the server open with no whitelist "just for tonight".
- Wondering why nobody can join a fresh 26.3 server — the whitelist is on by default, so add them first.
- Running an experimental Paper build on a world you can't afford to lose, with no backup to roll back to.
- Setting
online-mode=falseto let one cracked-client friend in. - Copying a 1.21-era config with
allow-netherstill in it. - Having no backups until the first time you need one.