How to set up a Minecraft server: RAM and plugin planning
Setting up a Minecraft server is technically easy; sizing it correctly is surprisingly hard. The reason is this: what decides is not the player count but the size of the world and the plugin list.
Choosing the server type
| Type | What for | Resource profile |
|---|---|---|
| Vanilla | Official server, no plugins | Lightest |
| Paper | Plugins, optimised | More efficient than vanilla |
| Spigot | Plugins, Paper's ancestor | Prefer Paper |
| Forge / Fabric | Mod packs | Heaviest, 8 GB+ |
If you are going to use plugins, choose Paper: it is compatible with Spigot and does noticeably less work per tick.
The Java memory limit
A Minecraft server runs on Java and the memory it can use is capped by the -Xmx parameter. Growing the server's RAM does not change that value by itself — this is the situation most often run into after an upgrade.
java -Xms4G -Xmx6G -jar paper.jar noguiDo not set -Xmx to the server's entire RAM; leave 1-2 GB for the operating system and other services.
RAM planning
- Vanilla, 10 players: 2-3 GB
- Paper + 20-30 plugins, 20-40 players: 6-8 GB
- Forge mod pack, 10-20 players: 8-12 GB
- Large mod pack + a widely explored world: 12-16 GB
World size is an invisible cost: as players travel further, new chunks are generated, and every generated chunk is written to disk and held in memory. Lowering view-distance and simulation-distance is often more effective than adding RAM.
CPU: clock speed, not core count
Minecraft runs the main world loop on a single thread. Paper has split some work off, but the tick budget still depends on one core. The practical consequence: 4-6 vCPU is enough for most servers and more than that gives no measurable gain. If TPS is dropping, the answer is not adding cores but upgrading the processor family or reducing the plugin/entity load.
The general logic of the calculation: how many vCPUs and how much RAM?
Installation steps
- Install with the Ubuntu 22.04 template and install Java 21 (or whichever Java your version requires).
- Download the server jar and run it once;
eula.txtis created — set the value inside it totrue. - Set
view-distance,simulation-distanceandmax-playersinserver.properties. - Open port 25565 TCP (19132 UDP for Bedrock).
- Set up automatic backups — the world is permanent and restoring is the only route if it is corrupted.
- Run the server under
screenor as asystemdservice; do not leave it attached to an SSH session.
Where to start when TPS drops
Look in order:
- Entity count — overgrown animal farms and item stacks are the biggest consumers of the tick.
- `view-distance` — going from 10 down to 6 makes a noticeable difference on most servers.
- Plugin profile — Spark or a similar profiler shows which plugin is eating the tick.
- Chunk generation — setting a
worldborderstops new chunks being generated continuously.
Growing the hardware without checking these four is usually spending money in the wrong place.
Next step
We have put the recommended plans by player count and the Minecraft-specific questions on one page: Minecraft server plans.