What the server needs
| Item | Requirement | Source |
|---|---|---|
| Java | 25 for Minecraft 26.1 and later; 21 for 1.20.5 to 1.21.x | minecraft.wiki, Paper docs |
| Server software | Mojang's server jar, or Paper for plugins and performance | minecraft.net, PaperMC |
| Memory | 2 GB for a small vanilla server; Paper recommends at least 6 to 10 GB | minecraft.wiki, Paper docs |
| Port | 25565 by default, set in server.properties | minecraft.wiki |
| Licence | eula=true in eula.txt after the first run | minecraft.wiki |
The game runs at a fixed 20 ticks per second, one every 50 ms, and the server holds 20 only while each tick finishes inside that budget. When ticks run long, TPS falls and the whole world slows for every player at once. That is a CPU question first: farms, redstone, mob counts and loaded chunks all spend the same 50 ms.
Sizing the heap
Paper's guidance is to set -Xms and -Xmx to the same value, since a lower -Xms leaves memory unused, and never to give the JVM so much that -Xmx can run the machine out of memory. On a host you share, Paper says to leave 1,000 to 1,500 MB below what you could allocate.
On a dedicated machine the arithmetic is simpler: take the RAM, subtract what the operating system and any other services need, and give the rest to the heap up to the figure your world needs. A server with 16 GB of RAM comfortably holds Paper's 6 to 10 GB with room to spare for the system and the page cache that keeps region files hot.
Installing Paper on Ubuntu
- Install Java 25. On Ubuntu 24.04 it is
openjdk-25-jre-headless, in the universe component; the default Java there is 21. - Create a user and folder for the server, and download the current Paper build from PaperMC's downloads page into it.
- Run it once. It stops and writes
eula.txt; seteula=true. - Allow SSH and then port 25565 in the firewall, and start the server through the systemd unit below.
sudo add-apt-repository universe
sudo apt update
sudo apt install -y openjdk-25-jre-headless
java -version
sudo useradd -r -m -d /opt/minecraft minecraft
# download paper.jar from papermc.io, then put it in place:
sudo install -o minecraft -g minecraft paper.jar /opt/minecraft/paper.jar
sudo -u minecraft sh -c 'cd /opt/minecraft && java -Xms8G -Xmx8G -jar paper.jar --nogui'
sudo sed -i 's/eula=false/eula=true/' /opt/minecraft/eula.txt
sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
The first start runs inside /opt/minecraft as the minecraft user, so eula.txt, server.properties and the world are written there. The vanilla jar works the same way with --nogui.
Running it as a service
A systemd unit restarts the server after a crash or a reboot and runs it as the unprivileged minecraft user:
# /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft server (Paper)
After=network-online.target
[Service]
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms8G -Xmx8G -jar paper.jar --nogui
Restart=on-failure
[Install]
WantedBy=multi-user.target
Load it with sudo systemctl daemon-reload and start it with sudo systemctl enable --now minecraft. Paper's /mspt command shows how long ticks are taking; keep the figure under 50.
Backing up the world
The world is a set of folders next to the jar, and copying them while the server writes can catch a region file half saved. Stop the service for the copy: sudo systemctl stop minecraft, copy the world folders, sudo systemctl start minecraft. A server under systemd has no console to type into, so a backup without downtime goes over RCON instead: set enable-rcon=true and a strong rcon.password in server.properties, keep the RCON port closed in the firewall, and send save-off, then save-all flush, copy, then save-on. Always send save-on afterwards, even if the copy fails, or autosave stays off. Keep the copies off the machine; a disk is not a backup of itself.
Why a whole machine
The tick budget is the argument. On a shared host, a neighbour's load can take CPU time the world needed, and the first sign is players rubber-banding. A dedicated game server has one tenant: every core and all the memory are the world's, on HPE enterprise hardware.
Pick the city nearest your players: New York, Miami, San Francisco, Amsterdam or Bucharest, all on our own network, AS19624. The port is unmetered, so a busy evening or a map download costs nothing extra, and a machine already racked is live about 30 minutes after the order is approved. Larger worlds can be built to order with the processor and memory chosen part by part.
When a dedicated server is too much
A handful of friends on a vanilla world fit in 2 GB of RAM, and a shared Minecraft host or a home PC is fine for that. A whole machine earns its place with a public server, a modded or plugin-heavy world, several worlds side by side, or a community that needs the tick rate to hold at peak.
Questions
What Java version does a Minecraft server need in 2026?
Java 25 for Minecraft 26.1 and later, and Paper requires at least Java 25 as well. Versions from 1.20.5 up to the 1.21 releases need Java 21. On Ubuntu 24.04, install openjdk-25-jre-headless from the universe component.
How much RAM should a Minecraft server have?
Minecraft's community wiki puts a small vanilla server at 2 GB. Paper recommends at least 6 to 10 GB for the server process, set as equal -Xms and -Xmx, and the machine needs more than that so the operating system never runs out.
Which port does the server use?
25565 by default, configurable in server.properties. Allow it in the firewall after allowing SSH, and players connect with the machine's IP address or a DNS name that points at it.
Why does my server lag with few players?
Usually ticks taking longer than 50 ms. The game runs 20 ticks a second, so a tick that overruns slows the world for everyone. Paper's /mspt command shows tick times; farms, redstone and loaded chunks are the common causes.
Can I run mods or plugins?
Plugins run on Paper. Mod loaders are a different server jar with their own Java requirements; check the loader's documentation before you pick a Java version.
How fast can I have the server?
A machine already racked is live about 30 minutes after the order is approved, and you install Java and the server yourself with root access.