How to make a Minecraft server: Java 25, the EULA and the whitelist
Setting up the official 26.3 Java server step by step: it needs Java 25, stops once for the EULA, and now ships with the whitelist switched on.
The official Minecraft: Java Edition server is a single free file, server.jar, from Mojang's server download page at minecraft.net/download/server. For 26.3 it is the same jar Mojang's version manifest lists: 62,294,556 bytes, SHA-1 beginning 33680f5f. Setting it up takes five steps.
1. Install Java 25
26.3 is compiled for Java 25 — the version file inside the jar says "java_version": 25, and its class files are version 69. The Minecraft Launcher brings its own Java for the game, but a server runs on whatever java your system has. With an older Java the server refuses to start with an UnsupportedClassVersionError that mentions class file version 69. Check with:
java -version
2. Give it a folder and run it once
Put server.jar in an empty folder — on first start it unpacks its libraries there and writes its world, logs and settings next to them — and start it:
java -Xms2G -Xmx4G -jar server.jar nogui
nogui skips the server's own window and keeps everything in the console. The memory flags set the starting and maximum heap; 2 and 4 GB are the same values the launcher uses for the 26.3 client, a sensible start for a few friends.
This first run stops almost at once. The server has written eula.txt with eula=false and prints: "You need to agree to the EULA in order to run the server." Nothing loads until you agree. (Starting it with --initSettings writes both files and quits on purpose, if you want to edit settings before the world is created.)
3. Accept the EULA
Open eula.txt, read the licence it links to (https://aka.ms/MinecraftEULA), and change the line to:
eula=true
Run the same start command again. This time it generates the world and ends with a line saying it is done.
4. Check server.properties — the whitelist is on
server.properties now exists, and its defaults are read from the 26.3 server code:
| setting | default |
|---|---|
server-port | 25565 |
max-players | 20 |
gamemode / difficulty | survival / easy |
view-distance / simulation-distance | 10 / 10 |
online-mode | true — players need a real Minecraft account |
white-list | true |
pause-when-empty-seconds | 60 |
The whitelist default is the one that surprises people: 26.3 creates new servers with white-list=true. Your friends will be turned away with "You are not white-listed on this server!" until you add them. In the server console (no slash needed there):
whitelist add FriendName
op YourName
Operators are always let in, whitelist or not — so once you have opped yourself, testing alone never shows the problem your friends will hit. Set white-list=false if you would rather keep the server open.
5. Let people connect
| who | address to type |
|---|---|
| you, on the same PC | localhost |
| someone on your home network | the server PC's local IP, e.g. 192.168.1.20 |
| someone over the internet | your public IP, after forwarding TCP port 25565 on the router to the server PC |
A different port goes after a colon — 192.168.1.20:25570 — and has to match server-port. If a friend on the same network still cannot connect, a common cause is the computer's firewall blocking Java, not Minecraft.
Stop the server by typing stop in the console: it saves the world and shuts down cleanly.
With pause-when-empty-seconds at 60, an empty server stops ticking a minute after the last player leaves: crops and furnaces wait for someone to come back.
The start command is where most tuning happens. The Server Config Generators write JVM flags sized to your player count, a start script, eula.txt and proxy configs, so the files above come out right the first time.