If you have ever tried to run a Minecraft Java world for more than four or five friends off someone's home PC, you already know the symptoms: chunk loading stutters when two people explore in opposite directions, the server "freezes" for a second every time a villager farm ticks over, and whoever is hosting can't log off without killing the world for everyone else. A minecraft dedicated server hosting plan solves all three problems by moving the world onto hardware that is built to stay online and dedicated to a single job: running your world, all day, every day, without sharing CPU cycles with someone's Chrome tabs.
This guide walks through exactly what a Java Edition server needs in 2026, how to size it correctly the first time (oversizing wastes money, undersizing causes tick lag no amount of tuning will fix), and how to configure server.properties, choose a server jar, install plugins safely, and keep the whole thing backed up. Everything here is based on running real survival and modded worlds with player counts from 5 to 60, not theoretical specs.
What Is a Minecraft Java Dedicated Server?
A Minecraft Java dedicated server is a copy of the official server.jar (or a fork like Paper or Purpur) running continuously on hardware you control, separate from any player's own game client. Unlike Realms or a "LAN world," a dedicated server:
- Stays online 24/7 regardless of whether the owner is playing
- Accepts connections from anywhere with the correct IP/port and firewall rules
- Can run plugins (Paper/Spigot) or mods (Forge/NeoForge/Fabric) that change gameplay
- Gives you full control over
server.properties, world seed, difficulty, whitelist, and backups - Scales independently of any single player's home internet or PC hardware
Java Edition specifically (as opposed to Bedrock) is single-threaded for world simulation — one CPU core does almost all of the heavy lifting for redstone, mob AI, and chunk ticking, which is why clock speed matters more than core count when you're choosing hardware for a Java server.
System Requirements and Pricing for a Minecraft Server
The official minimum for a vanilla server is laughably low (1 GB RAM), but that number assumes almost no players, no plugins, and a tiny world border. In practice, here is what actually holds up under real play:
| Player Count | RAM (allocated) | CPU | Storage | Typical Monthly Price |
|---|---|---|---|---|
| 2-5 (small friend group, vanilla) | 4 GB | 2 vCPU / 3.5+ GHz | 20-30 GB NVMe | $8-$15 |
| 6-15 (survival + a few plugins) | 6-8 GB | 3-4 vCPU / 3.8+ GHz | 40-60 GB NVMe | $18-$35 |
| 16-30 (community server, Paper + plugins) | 10-12 GB | 4-6 vCPU / 4.0+ GHz | 80-100 GB NVMe | $40-$70 |
| 30-60+ (large modpack or public server) | 16-24 GB | 6-8 dedicated cores / 4.2+ GHz | 150-250 GB NVMe | $80-$150 |
Two numbers matter more than any other spec sheet line item: single-core clock speed and storage latency. Because world generation, redstone, and entity AI run mostly on one thread, a server with a 3.0 GHz 16-core CPU will often run worse than one with a 4.5 GHz 6-core CPU. Likewise, NVMe SSD storage cuts chunk-loading stutter dramatically compared to spinning disks or even SATA SSDs, since Minecraft reads and writes region files constantly as players explore.
RAM Allocation Math
A common mistake is allocating "all the RAM" to the JVM heap. Don't — the OS, plugins that use native memory (like some world generation and anti-cheat plugins), and the JVM's own overhead need headroom. As a working rule: allocate 70-80% of the box's total RAM to the Minecraft heap and leave the rest for the OS and metaspace. On an 8 GB box, that means a -Xmx6G heap, not -Xmx8G.
Step-by-Step Setup
1. Provision the Server and Install Java
Start with a clean Linux image (Ubuntu 22.04 or 24.04 LTS is the most common choice for Minecraft hosting because of the widest community documentation). Modern Minecraft versions (1.20+) require Java 17 or newer; 1.21+ prefers Java 21. Install it with:
sudo apt update && sudo apt install -y openjdk-21-jre-headless
Confirm the version with java -version before going further — running an old server jar against Java 8 (or a new server jar against an old JDK) is one of the most common causes of a server that silently refuses to start.
2. Download the Server Jar
For vanilla, grab the version-specific jar from Mojang's official version manifest. For nearly everyone running plugins, Paper is the better choice — it's a drop-in replacement for vanilla that fixes dozens of known performance issues and exposes tuning options vanilla doesn't have. Download the build for your target Minecraft version, rename it server.jar, and place it in its own directory, e.g. /opt/minecraft/.
3. Accept the EULA and First Boot
Run the jar once to generate config files: java -Xms2G -Xmx6G -jar server.jar nogui. It will exit immediately and create eula.txt. Open it and change eula=false to eula=true — Mojang requires this explicit acceptance before the server will run.
4. Tune server.properties
This file controls almost everything about how the world behaves. The keys that actually matter for a real community server:
| Key | Recommended Value | Why |
|---|---|---|
| view-distance | 8-10 | Higher values multiply chunk-loading and entity-tracking cost; 10 is a good balance for 10-20 players |
| simulation-distance | 6-8 | Controls how far redstone/mobs actively simulate — lower this before view-distance if you need headroom |
| max-players | match your plan | Don't set this higher than your RAM/CPU budget supports just because you can |
| difficulty | normal or hard | Peaceful disables hostile mobs entirely, changing progression significantly |
| spawn-protection | 0-16 | Set to 0 if using a plugin-based claim/land system instead |
| enable-command-block | true/false | Enable only if you trust your playerbase; command blocks can be abused |
| online-mode | true | Keep this true unless you have a specific cracked-client use case — it authenticates players against Mojang |
| network-compression-threshold | 256 | Default is fine for most; lower values increase CPU use compressing small packets |
A frequent question is whether to lower view-distance or simulation-distance first when a server is lagging. Lower simulation-distance first — it has a bigger CPU impact per point than view-distance, which mostly affects RAM and network.
Less-Obvious server.properties Keys Worth Knowing
Beyond the headline settings, a handful of quieter keys change behavior in ways that surprise first-time admins:
| Key | Recommended Value | Why |
|---|---|---|
| entity-broadcast-range-percentage | 75-100 | Lowering this reduces how far entities are synced to clients, trimming network load on crowded servers at the cost of players seeing mobs "pop in" slightly closer |
| max-tick-time | 60000 | The watchdog that force-kills a server it thinks is frozen; raise this temporarily while debugging a single very slow tick instead of leaving the server to auto-restart mid-diagnosis |
| rate-limit | 0 (or a modest cap) | Limits packets per second per connection; useful as a cheap anti-bot measure on a public server without a dedicated anti-DDoS layer |
| sync-chunk-writes | true | Forces safer disk writes at a small performance cost — turn this off only if you fully understand the data-loss trade-off on a crash |
| enforce-secure-profile | true | Requires players to have a valid, signed Mojang profile; disabling it can let un-authenticated clients cause chat/skin oddities |
Choosing Paper vs Purpur vs Folia
Paper is the safe default for almost every survival or semi-vanilla community. Purpur forks Paper and adds more gameplay-affecting toggles (mob behavior, additional performance knobs) at the cost of being slightly further from vanilla feel — good for servers that want deep customization without writing plugins. Folia, Paper's regionized multi-threading fork, is worth considering only for very large (60+) concurrent-player servers spread across a big world border, since it splits the world into independently-ticked regions across multiple cores; for a typical 10-30 player community it adds plugin-compatibility headaches without a meaningful performance win, since most plugins aren't yet written to be Folia-safe.
5. Configure the JVM Flags
The flags you launch the jar with matter almost as much as server.properties. The Aikar flags (widely used in the Paper community) reduce garbage-collection pauses that otherwise show up as random half-second freezes:
java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -jar server.jar nogui
Note that -Xms and -Xmx are set to the same value here — this pre-allocates the full heap up front instead of growing it dynamically, which avoids a resize pause during the server's first busy period.
6. Open the Firewall and Port-Forward
Java Edition uses TCP port 25565 by default. On a dedicated server (as opposed to home hosting), you generally don't need port forwarding — you need firewall rules. With UFW: sudo ufw allow 25565/tcp. If you're running a query/RCON tool, also open the RCON port you configured (default 25575) but restrict it to your own IP, never the public internet.
7. Run It as a Persistent Service
Don't run the server in a raw SSH session — it will die the moment your connection drops. Use screen, tmux, or (better) a proper systemd unit so the server restarts automatically on crash or reboot. A minimal unit file at /etc/systemd/system/minecraft.service runs the start script under a dedicated non-root user, with Restart=on-failure and a reasonable RestartSec.
8. Install Plugins (Paper/Spigot only)
Drop .jar files into the plugins/ folder and restart. For a first server, the plugins most people actually need are a permissions plugin (LuckPerms), an economy plugin if you want shops (Vault + EssentialsX), a land-claim plugin to stop grief (GriefPrevention or Lands), and a backup plugin. Install one at a time and restart between each — installing ten plugins at once and then debugging a crash is much harder than isolating one at a time.
9. Set Up a Reverse Proxy Domain (Optional but Recommended)
Players remember play.yourserver.com far better than an IP address, and a domain lets you migrate hosts later without every player having to update a bookmark. Add an SRV record (_minecraft._tcp) pointing at your IP and port, or simply an A record if you're running on the default 25565 — Minecraft's launcher understands both. This is a five-minute DNS change that pays for itself the first time you need to move hosts.
10. Configure a Whitelist for Private Servers
For invite-only communities, set white-list=true in server.properties and manage whitelist.json either by editing it directly or with in-game /whitelist add commands. Combine this with enforce-whitelist=true so changes take effect immediately without a restart — without it, already-connected players who get removed from the whitelist can stay connected until they disconnect.
Common Issues and Troubleshooting
TPS Drops Below 20
Minecraft targets 20 ticks per second. If /tps (via a plugin) or console warnings show consistent drops into the teens, the usual suspects are: too many loaded chunks (lower view-distance), a redstone clock or hopper-chain someone built, mob farms with unbounded entity counts (cap them with a plugin like Spark or vanilla's max-entity-cramming), or a plugin doing expensive work on the main thread. Use the /spark profiler command (from the Spark plugin) to get a flame graph of exactly what's eating tick time — guessing wastes far more time than profiling.
Server Won't Start After a Plugin Update
Check logs/latest.log immediately — a stack trace naming the plugin is almost always right there. The most common cause is a plugin built for an older/newer Minecraft API version than your server jar.
World Corruption After a Crash
This is why automated backups matter (see below). If a region file does get corrupted, tools like Amulet or MCASelector can sometimes repair or excise the damaged chunk without losing the whole world.
High Memory Use But Low Player Count
Check for memory leaks in poorly written plugins, or an ever-growing number of dropped items/entities in the world (a common side effect of automatic farms with no item collection). The /gc and entity-count commands in most admin plugins will show you where memory is going.
Troubleshooting Reference Table
| Symptom | Likely Cause | Fix |
|---|---|---|
| Server lists as offline in launcher | Firewall blocking 25565/TCP, or server still starting | Confirm ufw status shows the rule and check logs/latest.log for "Done" before assuming it's broken |
| "Outdated server" error for players | Server jar version doesn't match client version | Update the server jar to match the version your players' launchers are on |
| Random single-player kicks with no error | Client-side connection timeout, often a home ISP hiccup rather than server-side | Check if the kick correlates with server-side TPS drops in the same window; if not, it's usually the player's own connection |
| Chunk not generating past world border | world border explicitly set too small, or pregenerated region cut off | Check /worldborder value and pregenerate new terrain with Chunky before players explore there |
| Server uses 100% CPU with almost no players | Runaway redstone clock, entity loop, or a plugin scheduler stuck retrying | Use Spark's profiler to isolate whether it's a plugin thread or main-thread tick cost |
Common Mistakes First-Time Server Owners Make
A few patterns show up again and again on new community servers, and all of them are easy to avoid once you know to look for them. Setting view-distance to the maximum of 32 "because the plan has the RAM for it" is one of the most common — it multiplies chunk-loading and entity-tracking cost far beyond what most communities actually need, and 8-10 looks and plays nearly identically for most builds. Running the server without ever setting up a non-root system user is another: a compromised plugin or a careless rm command run as root can damage far more than the Minecraft install. Skipping the whitelist on a "just for now, we'll lock it down later" public test server is a third — server IPs get scanned constantly, and an unprotected test world can be griefed within hours of going public even without being advertised anywhere. Finally, installing a large modpack-adjacent plugin bundle all at once instead of one at a time makes crash diagnosis dramatically harder than it needs to be; the ten extra minutes of restarting between each plugin install is cheap insurance.
Backups: Non-Negotiable
A world can take hundreds of hours to build. Automate backups with a cron job that stops accepting new chunk writes briefly (via a plugin like save-all then a filesystem snapshot), compresses the world folder, and ships it off-server (to S3, Backblaze, or even a second disk on the same box). Keep at least 7 daily and 4 weekly snapshots on a rolling basis — disk is cheap, rebuilding a griefed or corrupted world is not.
Buyer's Checklist
- Confirm the host allows full root/SSH access — Minecraft hosting panels that hide the filesystem make plugin troubleshooting much harder
- Check the CPU model and clock speed explicitly, not just "vCPU count" — ask what generation the host actually runs
- Verify NVMe storage, not spinning disk or budget SATA SSD
- Make sure the plan's RAM matches your real player count plus plugin overhead, not just the vanilla minimum
- Ask whether automated daily backups are included or need a separate plugin/cron job
- Check DDoS protection — public Minecraft servers are a common target for booter attacks
- Look for a provider that allows a custom Java version and startup flags rather than locking you to a fixed panel template
Frequently Asked Questions
How much RAM does a 10-player Minecraft Java server need?
Vanilla with no plugins usually runs fine on 4-6 GB. Add Paper with a handful of plugins (economy, land claims, backups) and budget 6-8 GB to leave headroom for garbage collection without stutter.
Is Paper better than Vanilla for a dedicated server?
For almost any server with more than 2-3 players, yes. Paper is compatible with vanilla gameplay and clients but includes performance patches and configuration options (like per-world mob caps) that vanilla simply doesn't expose.
Do I need a static IP for a Minecraft dedicated server?
A dedicated server plan already comes with a static IP by default, unlike most home internet connections. That's one of the main reasons to move off a home PC — players can bookmark one address that never changes.
Can I run mods and plugins at the same time?
Not directly — Forge/NeoForge/Fabric mods and Paper/Spigot plugins use different APIs. Some hybrid loaders exist but are unofficial and often break on version updates; for a stable server, pick one ecosystem (plugins for a survival/economy server, mods for a tech/exploration modpack) rather than mixing them.
How often should I restart the server?
A scheduled restart every 12-24 hours (during low-traffic hours) clears accumulated memory fragmentation and entity buildup even with good JVM flags. Pair it with a warning plugin that gives players a 5-minute countdown.
What is the difference between view-distance and simulation-distance?
View-distance controls how far chunks are sent to the client and rendered; simulation-distance controls how far the server actively ticks entities, redstone, and crop growth. You can set simulation-distance lower than view-distance to save CPU while still letting players see distant terrain.
Should I pre-generate the world before opening the server to players?
Yes, for any server expecting real exploration. A plugin like Chunky can pregenerate a radius (say, 5,000-10,000 blocks) during off-hours so players never hit the "new chunk generation" stutter mid-adventure — it moves the CPU cost to a quiet period instead of the moment someone's exploring with friends watching.
How do I migrate an existing world to a new dedicated server?
Stop the old server cleanly (never copy a live world folder), compress the world, world_nether, and world_the_end folders (plus server.properties and your plugins/ folder if applicable), transfer them to the new box, and start the new server with the same server jar version before opening it to players.
Can I run more than one Minecraft server on the same box?
Yes, as long as each instance has its own port, its own directory, and a RAM allocation that fits within the box's total budget with headroom left over for the OS — a common setup is a main survival server plus a smaller creative/build server sharing one modest VPS.
What's the safest way to test a risky plugin or config change?
Clone the world folder into a second local instance running on a different port, apply the change there first, and only push it to the live server once you've confirmed it doesn't break anything — this is far cheaper than debugging a broken plugin in front of an online playerbase.
Running a smooth Minecraft Java server comes down to matching real hardware to your real player count and tuning the handful of settings that actually move the needle — not guesswork. If you want the CPU clock speed, NVMe storage, and DDoS protection this guide describes without managing bare metal yourself, WebsNP's VPS server hosting and Linux dedicated server plans are both solid starting points depending on your player count, and our team can help you size the right plan before you buy. For cross-play with Bedrock players, see our Minecraft Bedrock dedicated server guide, and if you're running Steam-distributed titles alongside your Minecraft box, our SteamCMD guide covers the install process those games share.