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 covers both, current as of 26.2.
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.
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 |
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
Two recent 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.
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. 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".
- 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.