Setting up a Minecraft server is technically a ten-minute job; the hard part is having it still run smoothly in week two. Pick the wrong Java version and the server never starts. Pick the wrong server software and it stutters at 30 players. Allocate memory badly and you get regular freezes. This guide covers the installation from scratch — and explains why each step is done the way it is, because most later problems trace back to decisions made during setup.
"Minecraft server" sounds like one program, but there are several options and the choice directly determines your performance ceiling.
Short version: for a survival, minigame or general community server, start with Paper. Moving to Purpur later is easy; moving from Paper to Fabric is not.
A Minecraft server runs on Java, and each game version expects a specific Java release. On the wrong version the server either refuses to start or throws an error that explains nothing.
Check the requirement for the build you download before installing. Verify your version with java -version. If several Java versions are installed, specifying the full path in your start script avoids confusion.
On the server side JRE is enough — no need for the full JDK. Any OpenJDK distribution (Temurin, Zulu, Corretto) will do.
Performance in Minecraft is driven less by player count than by loaded chunk count, plugin load and redstone/mob density. Still, as a starting point:
Key point: the server's main world loop runs largely on a single core. A 16-core CPU at 2.4 GHz will fall behind a 6-core at 4.2 GHz. That is why high clock speed processors are preferred in game hosting. We covered the same logic in our guide on how much RAM an MTA server needs.
Install the JRE matching your game version and confirm it with java -version on the command line.
For Paper, get server.jar from the official PaperMC site; for vanilla, from Minecraft's official server download page. Put it in an empty folder — the first run will generate dozens of files there.
Open a command prompt in that folder and run:
java -jar server.jar --nogui
The server will start and immediately shut down. That is expected: you have not accepted the EULA yet.
Open the generated eula.txt, change eula=false to eula=true and save.
Run the same command. This time the server generates the world and finishes with "Done". You can connect locally via localhost to test.
To avoid typing the command each time, create start.bat in the folder:
java -Xms2G -Xmx4G -jar server.jar --nogui
pause
For a permanent server, Linux uses fewer resources and is more stable.
Install Java:
sudo apt update && sudo apt install -y openjdk-21-jre-headless
Create a folder and download:
mkdir -p ~/minecraft && cd ~/minecraft
wget -O server.jar <server-jar-url>
First run and EULA:
java -jar server.jar --nogui
sed -i 's/eula=false/eula=true/' eula.txt
Start script (start.sh):
#!/bin/sh
cd "$(dirname "$0")"
exec java -Xms2G -Xmx4G -jar server.jar --nogui
Then make it executable with chmod +x start.sh.
To keep the server alive after your SSH session ends, use screen or tmux. For a permanent install, defining a systemd service is the sound approach — the server then comes back automatically after a reboot.
Memory is set with -Xms (initial) and -Xmx (maximum). Three rules:
-Xmx6G is a sensible ceiling.For a typical 16-player Paper server, -Xms4G -Xmx4G is a good starting point.
server-port=25565 — the default port for Minecraft Java (TCP). Change it and players must append the port to the IP.max-players=20 — maximum players. Do not exceed what your hardware can carry.view-distance=10 — render distance. This is the single most impactful performance setting; going from 16 to 8 cuts server load substantially.simulation-distance=10 — mob and redstone simulation range. Heavier than view distance.online-mode=true — verifies players against Mojang accounts. Do not turn this off; disabling it exposes the server to account spoofing.white-list=true — only listed players may join. Recommended for the first days of a new server.difficulty=normal and gamemode=survival — game mode and difficulty.If the server runs on your own computer, outside connections require forwarding port 25565 on your router and having a static IP. Home internet is not ideal for this: your IP changes often, upload bandwidth is limited, and the server drops when your machine shuts down.
For a lasting community server, a VDS or rented game server makes far more sense. If you run a firewall, remember to open 25565/TCP. The Bedrock (mobile/console) edition uses a different port: 19132/UDP.
op playername in the server console. Op rights mean full control — hand them out carefully.whitelist add playername, then enable it with whitelist on.eula.txt to true.view-distance and simulation-distance first. If it persists, use a profiler like Spark to find which plugin is costing time.-Xmx is too low, or the machine ran out of physical RAM.level-name setting and your working directory.How smooth a Minecraft server feels comes down to single-core CPU speed and disk latency. Nubitro's Minecraft server packages come with instant setup, DDoS protection and 24/7 support. If you want full control over your own configuration, look at our AMD Ryzen 9 based VDS options in Turkey. Planning a different game server? See our FiveM server setup guide as well.
The server software is free. The only thing you pay for is the hardware hosting it. Players need a licensed copy of the game.
For playing with a few friends, yes. For a lasting community it is unsuitable: your IP changes, upload bandwidth falls short, and the server drops when your machine shuts down.
Roughly: 4 GB for 10 players, 8 GB for 30, 12-16 GB for 50+. But the real drivers are plugin count and render distance; a heavy plugin set can double these figures.
Paper if you plan to use plugins or expect more than about ten players. Vanilla only makes sense for a small group who want untouched game mechanics.
On a rented server you share the IP and port shown in the panel. On your own machine you give your external IP and the forwarded port. You can also point a domain at it for a memorable address like play.yoursite.com.
Back up the world folder and plugins first. Replace the old server.jar with the new one and start the server. Do not make large version jumps without checking that your plugins support the new release.
eula.txt to true.view-distance and simulation-distance are the two settings with the largest TPS impact.online-mode enabled and take regular backups.