Choosing a minecraft server vps comes down to two numbers: how fast one CPU core is, and how much memory Java gets after the operating system takes its share. vCPU count matters less than most plan pages imply. Below, we size a Java Edition server running Paper from Mojang's and PaperMC's own documentation, show the arithmetic for RAM, view distance, disk and traffic, and map it onto NexonHost's NEX plans, including the one not to buy.
Minecraft is a trademark of Mojang and Microsoft; this post is not affiliated with or endorsed by either. You install and run the server software yourself.
Why one fast core beats eight slow ones
A Minecraft server advances the world in ticks. Paper's server.properties reference says a tick "should be max 0.05" seconds: 0.05 s is 50 ms, so 1,000 ÷ 50 = 20 ticks a second. Mobs, redstone, crops and players all have to fit in that window.
On vanilla and Paper, that work runs on one main thread. PaperMC says so indirectly: its Folia fork adds "regionised multithreading", and the Folia README notes "there is no main thread anymore" because each region gets its own tick loop. Folia needs plugins written for it and ideally "at least 16 cores (not threads)", so it is not a VPS job. For Paper, the main thread is the ceiling.
Other cores still help. Paper generates chunks on worker threads: one thread with 3 or fewer physical cores, otherwise up to half the physical cores. The garbage collector runs on its own threads too. Extra vCPUs help with generation and spikes; they do not make a tick faster.
VPS plan specs list a vCPU count, not a CPU model, so per-core speed is something you measure (see the last section), not read off a spec sheet.
How much RAM a Minecraft server needs
Two primary sources give numbers:
- Mojang's server download page launches the server with
java -Xmx4G -Xms4G: a 4 GB Java heap. - Paper's Aikar's flags page recommends "at least 6-10GB, no matter how few players", and says 32 GB "will only waste your money".
Paper adds the rule that sinks small plans: the heap is not the whole process. Set it 1,000–1,500 MB below the machine's memory ("Do you have 8GB of memory? Use 6500MB"), and set -Xms equal to -Xmx. Paper notes Minecraft can allocate "at least 800MB/second on a 30 player server", which is why the garbage collector wants room.
With Paper's 1,500 MB margin:
| Plan, a month | RAM → heap | vCPU (chunk threads) | Verdict |
|---|---|---|---|
| NEX1, €9 | 2 GB → 500 MB | 1 (1) | Don't buy for Java Edition |
| NEX2, €18 | 4 GB → 2,500 MB | 2 (1) | Under Mojang's 4 GB; small vanilla world |
| NEX3, €32 | 8 GB → 6,500 MB | 4 (2) | Paper's own example; default pick |
| NEX4, €64 | 16 GB → 10,000 MB set | 8 (4) | Paper's 10 GB example, room for a proxy |
Heap: 2,000 − 1,500 = 500; 4,000 − 1,500 = 2,500; 8,000 − 1,500 = 6,500. NEX4 could take 16,000 − 1,500 = 14,500 MB, but Paper's example command uses 10 GB and it warns that past a point more memory brings diminishing returns, so we set 10,000 MB and leave the rest for a second, smaller process. Threads assume the guest reports each vCPU as a core: 4 ÷ 2 = 2, 8 ÷ 2 = 4.
No primary source publishes RAM per player, so we don't either; measure with spark (last section).
View distance and simulation distance
Both default to 10 in server.properties, and both are a radius in chunks, "not diameter". view-distance sets how much world data the server sends each client; simulation-distance sets how far from a player entities are ticked. One player's area is (2 × radius + 1)² chunks:
| Radius | Chunks around one player | Versus default |
|---|---|---|
| 10 (default) | 441 | 100% |
| 8 | 289 | 66% |
| 6 | 169 | 38% |
21² = 441, 17² = 289, 13² = 169; 289 ÷ 441 = 66%, 169 ÷ 441 = 38%. Players standing together share chunks, so this is the spread-out worst case. Lower simulation distance first: it cuts main-thread work while players still see far.
Disk: worlds grow where players explore
The server is small: the 26.3 server.jar in Mojang's version manifest is 62,294,556 bytes, about 62 MB. The world folder grows as players generate new chunks, not as they log in. There is no honest per-player figure; run du -sh world* weekly and watch the trend.
Set a world border so exploration has an edge, and leave region-file-compression on deflate; Paper's reference says none takes "significantly more disk space".
NEX plans have 40, 60, 80 or 100 GB of SSD. Stop the service before copying the world so you never back up a half-written region file, and keep copies off the VPS: offsite backup storage for servers covers 3-2-1.
Bandwidth: measure it, then compare it with the quota
We found no primary source for Minecraft traffic per player, so this post gives none. Instead, here is the average rate needed to use each quota in a 30-day month (2,592,000 seconds):
| Plan | Monthly quota | Average rate to use it all |
|---|---|---|
| NEX1 | 4 TB | 12.3 Mbit/s |
| NEX2 | 8 TB | 24.7 Mbit/s |
| NEX3 | 16 TB | 49.4 Mbit/s |
| NEX4 | 32 TB | 98.8 Mbit/s |
NEX1: 4 × 10¹² bytes × 8 = 3.2 × 10¹³ bits ÷ 2,592,000 = 12.3 Mbit/s, around the clock. The other rows scale by 2, 4 and 8.
Measure with vnstat: vnstat -l shows live traffic on your busiest evening, vnstat -m monthly totals. A web map or resource pack served from the same VPS counts too. The general method is in how much bandwidth a server needs.
We expect most community servers will not need the unmetered Linux VPS range: UNEX3 is €54 against €32 for NEX3 (€22 more) and has a 1 Gbps port instead of 10 Gbps, while a +10 TB pack on NEX is €15. Buy UNEX only if vnstat says so.
Run it as a service, not as root
Paper publishes builds for 26.3, the current release in Mojang's manifest, which lists Java 25; Paper "requires at least Java 25". Install that runtime, then give the server its own user:
sudo useradd --system --create-home --home-dir /opt/minecraft --shell /usr/sbin/nologin minecraft
A minimal /etc/systemd/system/minecraft.service:
[Unit]
Description=Paper Minecraft server
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms6500M -Xmx6500M -jar paper.jar --nogui
Restart=on-failure
SuccessExitStatus=143
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target
Put the Paper jar in /opt/minecraft as paper.jar, owned by the minecraft user, then:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -f
Adjust the Java path and heap; Paper's script generator adds the rest of Aikar's flags. With no ExecStop=, systemd sends SIGTERM and waits up to TimeoutStopSec before killing. Java exits with status 143 after a SIGTERM, hence SuccessExitStatus=143, so a clean stop is not logged as a failure. Stop it once and check the log shows the world saving before you rely on it.
On first start the server writes eula.txt; read Mojang's Minecraft EULA, set eula=true only if you agree, then run sudo systemctl restart minecraft.
Firewall, Bedrock ports and DDoS
Default-deny inbound, then open SSH and Java Edition's default port, TCP 25565:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
Leave enable-rcon and enable-query at their default false; if you enable RCON, keep port 25575 closed to the internet. The rest is in the new server security checklist.
Bedrock Edition is separate software (Bedrock Dedicated Server, no Paper plugins); Microsoft Learn documents default ports 19132 and 19133 (IPv6), but Mojang's 26.50 changelog has since made NetherNet its default transport, so check the current release notes before opening ports.
NexonHost's Remote DDoS Protection website proxy is HTTP(S) only and cannot carry Minecraft's game traffic. Game server DDoS protection explains why protection has to sit at the network edge and what to ask about packet rates.
Minecraft server VPS plans at NexonHost, and how to test one
For most groups, the Minecraft server VPS to start on is NEX3: 4 vCPU, 8 GB RAM (a 6,500 MB heap by Paper's rule), 80 GB SSD and 16 TB of traffic on a 10 Gbps port, €32 a month. NEX4 (8 vCPU, 16 GB, 100 GB, 32 TB) at €64 fits a 10 GB heap plus a smaller process such as a proxy; NEX2 at €18 suits a small vanilla world. Skip NEX1. All are on the Linux VPS range in Germany, the Netherlands or Romania with 100 Gbps Layer 4 protection included; compare ranges on virtual servers.
Start on a one-month term and test per-core speed. Paper has bundled the spark profiler since 1.21: at your busiest hour run /spark profiler start --timeout 600. If ticks stay well under 50 ms, the plan fits; if not, lower simulation distance before adding vCPUs. If one world still runs out of tick time on NEX4, move to a dedicated server with a named CPU; Xeon vs EPYC covers single-thread speed. Annual billing takes 10% off once the numbers hold.
Prices as of 9 November 2026, EUR excluding VAT, a month; the store preselects a 1 TB backup add-on at €5 a month extra. Check the product page before ordering.
Sources
- Minecraft.net — Download the Minecraft: Java Edition server: launch command with -Xmx4G -Xms4G, open port 25565 for Java, EULA, retrieved 9 November 2026
- Mojang version manifest — latest release 26.3, retrieved 9 November 2026
- Mojang 26.3 version file — javaVersion 25, server.jar 62,294,556 bytes, retrieved 9 November 2026
- Minecraft EULA — Mojang, retrieved 9 November 2026
- MinecraftHopper (community-maintained help site) — Setting up a Java Edition server: the server writes eula.txt; set eula=true after reading the EULA, retrieved 9 November 2026
- PaperMC docs — Getting started: Paper requires at least Java 25; Java 25 for 26.1+, retrieved 9 November 2026
- PaperMC docs — Aikar's flags: 6-10 GB recommended, leave 1,000-1,500 MB, 8 GB → 6,500 MB, Xms = Xmx, 800 MB/s allocation on 30 players, 32 GB wasted, retrieved 9 November 2026
- PaperMC docs — server.properties reference: view-distance and simulation-distance 10 (radius), server-port 25565, rcon.port 25575, enable-rcon and enable-query false, max-tick-time 0.05 s, region-file-compression, retrieved 9 November 2026
- PaperMC docs — Global configuration: chunk worker-threads, 1 thread at 3 or fewer physical cores, otherwise capped at half, retrieved 9 November 2026
- PaperMC docs — Profiling: spark bundled since 1.21, /spark profiler start --timeout 600, retrieved 9 November 2026
- PaperMC Folia README — regionised multithreading, "no main thread anymore", 20 TPS, ideally at least 16 cores, retrieved 9 November 2026
- PaperMC downloads API — Paper 26.3: supported, stable builds, Java 25 minimum, retrieved 9 November 2026
- Microsoft Learn — Getting started with Bedrock Dedicated Server: Windows and Ubuntu, ports 19132 and 19133 (page last updated 2026-01-28), retrieved 9 November 2026
- Microsoft Learn — Bedrock Dedicated Server properties: server-port 19132, server-portv6 19133 (page last updated 2025-06-25), retrieved 9 November 2026
- Minecraft.net — Bedrock Edition 26.50 changelog, published 15 September 2026: "NetherNet is now the default transport used by dedicated servers", retrieved 9 November 2026
- Minecraft Wiki (community protocol documentation) — Java Edition protocol: the server accepts TCP clients, retrieved 9 November 2026
- vnStat man page — -l/--live and -m/--months, retrieved 9 November 2026
- systemd.service man page — TimeoutStopSec, SIGTERM when no ExecStop is set, Restart, SuccessExitStatus, retrieved 9 November 2026
- NexonHost store — NEX and UNEX plans, prices, traffic packs, annual discount, backup add-on, retrieved 9 November 2026
- Computed — 0.05 s = 50 ms, 1,000 ÷ 50 = 20 ticks a second; 2,000/4,000/8,000/16,000 − 1,500 = 500/2,500/6,500/14,500 MB; 4 ÷ 2 = 2; 8 ÷ 2 = 4; 21² = 441; 17² = 289; 13² = 169; 289 ÷ 441 = 66%; 169 ÷ 441 = 38%; 30 × 86,400 = 2,592,000 s; 4 × 10¹² × 8 ÷ 2,592,000 = 12.3 Mbit/s (×2 = 24.7, ×4 = 49.4, ×8 = 98.8); €54 − €32 = €22




