Running your own Minecraft server
Which server software to pick, how much hardware it really needs, and the settings that matter on day one.
Running a public server is not hard, but almost every decision that matters is made in the first hour and is annoying to change afterwards. These are those decisions.
Pick the server software first
- Vanilla — Mojang's own
server.jar. No plugins, no API, no land claiming. Fine for a handful of friends, impractical for a public server. - Paper — the default choice for public Java servers. A fork of Spigot with substantially better performance and far more configuration to tune, and it runs Spigot and Bukkit plugins unchanged. If you are not sure, this is the answer.
- Fabric or NeoForge — for modded servers. Both require every player to install the same mods, so you are taking on a distribution problem as well as a hosting one.
- Velocity or BungeeCord — proxies, not servers. They sit in front and route players between several backend servers behind one address. You need one the day you want a lobby and separate gamemode worlds, and not before.
- Bedrock — Mojang's Bedrock Dedicated Server, or PocketMine if you want a plugin ecosystem. Or run Paper with Geyser and serve both editions from one world, which is what most networks now do; see Java and Bedrock.
What the hardware actually has to be
Minecraft servers are bound by single-core CPU speed far more than by core count. A modern desktop chip with high per-core clocks will outperform a server-grade processor with twice the cores, which is why cheap shared hosting on old hardware feels bad no matter how much RAM it advertises.
On memory, 4 GB comfortably runs a survival server for ten to twenty players with a normal plugin set. The same number of players on a heavy modded pack wants 8 GB or more. Allocating far more than you need does not help and can make garbage collection pauses worse, which is what Aikar's flags — the widely copied set of G1GC tuning arguments — exist to address.
The Java version matters and is not optional: 1.20.5 and later need Java 21, and 1.18 through 1.20.4 need Java 17. Running the wrong one produces an unhelpful crash at startup.
Hosting it at home
You can, and for a private server with friends it is reasonable. For a public one, understand what you are accepting. Port forwarding exposes your home connection to the internet, your public IP becomes known to everyone who joins, home upload bandwidth is usually the bottleneck long before the CPU is, and a residential line has no protection against the denial-of-service attacks that public Minecraft servers genuinely attract. Rented hosting with filtering costs a few pounds a month and removes all four problems.
First-run settings that matter
Start the server once, let it fail, set eula=true in eula.txt and start it
again. Then, in server.properties:
online-mode=true. Leave it alone. Setting it false makes the server cracked, meaning anybody can log in as any username including your administrators. If you run behind a proxy the proxy handles authentication instead, and the backend must then be firewalled so nobody can reach it directly.view-distanceandsimulation-distanceare the two biggest performance levers you have. Eight and six are sane for a busy public server; the defaults are generous.max-players. Set it to what your hardware can actually hold rather than what you hope for.spawn-protection. Set it to 0 if you handle protection with a plugin, which you will.- A world border, set before anybody plays. Retro-fitting one after players have built outside it is a genuinely miserable conversation to have.
The plugins worth having on day one
- LuckPerms — permissions. Every other plugin assumes you have one, and this is it.
- EssentialsX — homes, warps, teleport requests, kits and a basic economy. The commands players expect to exist.
- CoreProtect — block logging and rollback. Install it before you need it, because it cannot tell you about anything that happened before it was running.
- GriefPrevention or WorldGuard — land claiming. On a public survival server this is what makes building worth doing at all.
- A backup plugin, plus copies somewhere else. A backup on the same disk is not a backup.
- NuVotifier, if you want vote rewards from server lists.
Resist adding more than that at the start. Most servers that die of lag died of forty plugins nobody audited, not of too many players.
Then the part nobody warns you about
The software is the easy half. A public server needs moderation, somewhere for players to report things, an answer for what happens when your only administrator goes on holiday, and a decision about what you will and will not sell — see ranks, stores and pay-to-win for why that choice sets the tone of everything else. Decide all of it before you open rather than during your first incident.
When the server is up and answering on a public address, add it here and it starts being pinged the moment it is approved.
Related guides
- How to add your server — What the submission form asks for, what the ping check does, and what happens next.
- What server versions mean and which to pick — Why a server sits on 1.20.4 while you are on 1.21, how one server supports both, and what to run.
- Java Edition and Bedrock Edition — Two different games with the same name, and why a server address only works on one.
- Every Minecraft server gamemode explained — Survival, skyblock, prison, factions, minigames, anarchy, towny and creative, and who each one is for.