For Server Developers

How to Make a Minecraft Server (Paper, Java, and Everything Else)

How to make a Minecraft server on 26.3 — Paper, the right JDK, and the four decisions that decide whether it survives its first month.

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

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 versionRequired Java
1.7.10 – 1.11Java 8
1.12 – 1.16.4Java 11
1.16.5Java 16
1.17 – 1.19Java 17
1.20 – 1.21.11Java 21
26.1 and laterJava 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