How to Host a Minecraft Server
Whether you want a private world for friends or a public community server with mods, this guide covers everything from choosing your server type to optimizing performance.
Java Edition vs Bedrock Edition
The first decision: which edition are you hosting for?
| Java Edition | Bedrock Edition | |
|---|---|---|
| Platform | PC (Windows, macOS, Linux) | PC, Xbox, PlayStation, Switch, Mobile |
| Modding | Extensive (Forge, Fabric, Paper) | Limited (Bedrock Add-Ons) |
| Performance | More resource-hungry | Lighter, better on low-end hardware |
| Crossplay | Java players only (unless using Geyser) | All Bedrock platforms natively |
| Server software | Vanilla, Paper, Forge, Fabric, Spigot | Vanilla Bedrock Dedicated Server |
| Default port | 25565 (TCP) | 19132 (UDP) |
Most popular choice: Java Edition — it has the largest modding community, plugin ecosystem, and server software options.
Want both Java and Bedrock players on the same server? Use GeyserMC — a proxy that lets Bedrock clients connect to Java servers. Works with Paper and Fabric.
Server Software: Which One to Pick
This is the most important decision for your server. Each type has different strengths:
Vanilla
The official Mojang server software. No mods, no plugins, just Minecraft.
- Best for: Small friend groups who want the pure experience
- Performance: Decent for small groups, struggles with 10+ players
- Plugins: None
- Mods: None
Paper
A high-performance fork of Spigot. The most popular choice for serious servers.
- Best for: Any server that needs plugins, performance, or 10+ players
- Performance: Significantly faster than Vanilla — async chunk loading, entity optimizations
- Plugins: Full Bukkit/Spigot plugin compatibility (thousands available)
- Mods: No Forge/Fabric mods (plugins only)
- Use if: You want plugins (economy, permissions, minigames, anti-cheat)
Fabric
A lightweight, modern modding framework. Fast and minimal.
- Best for: Modded servers focused on performance and modern mods
- Performance: Very fast — minimal overhead compared to Forge
- Plugins: Via Fabric API mods (not Bukkit plugins)
- Mods: Fabric mods (Sodium, Lithium, Iris, Create Fabric)
- Use if: You want client-side performance mods or modern mod packs
Forge
The original modding framework. Massive mod library, but heavier.
- Best for: Large modpacks (RLCraft, All The Mods, FTB)
- Performance: Heavier than Fabric — needs more RAM
- Plugins: Limited (SpongeForge for Bukkit-like plugins)
- Mods: Forge mods (the largest mod library)
- Use if: You want specific Forge-only modpacks
NeoForge
A community-driven fork of Forge, gaining traction since 2024.
- Best for: Modern Forge-style modding with better community governance
- Performance: Similar to Forge with ongoing improvements
- Mods: Growing library, many Forge mods are porting over
Quick Decision Guide
Do you want mods?
├── No → Do you want plugins?
│ ├── No → Vanilla
│ └── Yes → Paper ✓
└── Yes → Which mod loader?
├── Fabric mods → Fabric
├── Forge modpacks → Forge
└── Not sure → Paper (most flexible) ✓
How Much RAM Do You Need?
RAM is the most important resource for Minecraft servers. Here's what we recommend:
| Use Case | Players | RAM | CPU |
|---|---|---|---|
| Vanilla / Small | 1-5 | 2-4 GB | 2 vCPU |
| Paper + plugins | 5-15 | 4-6 GB | 2-4 vCPU |
| Paper + many plugins | 15-30 | 6-8 GB | 4 vCPU |
| Fabric + performance mods | 5-20 | 4-6 GB | 2-4 vCPU |
| Forge light modpack | 5-10 | 6-8 GB | 4 vCPU |
| Forge heavy modpack | 5-20 | 8-16 GB | 4-8 vCPU |
| Large community server | 30-50+ | 12-16 GB | 6-8 vCPU |
What Eats RAM
- Loaded chunks: Each player loads chunks around them. More players = more chunks = more RAM
- Entities: Mobs, dropped items, minecarts. A mob farm with 1000 entities is a RAM killer
- Mods: Each mod adds overhead. A 200-mod Forge pack needs 8 GB minimum just for the mods
- Plugins: Most plugins are lightweight, but some (Dynmap, world generation) use significant RAM
- Pre-generation: Pre-generating the world uses temporary RAM but reduces lag during gameplay
- Bronze (4 GB): Vanilla or Paper with a few plugins, up to 10 players
- Silver (8 GB): Paper with plugins or light modpacks, up to 20 players
- Gold (16 GB): Heavy Forge modpacks or large community servers
Essential Server Configuration
server.properties
The main configuration file. Key settings to change:
# Server identity
server-name=My Awesome Server
motd=Welcome to our server!
server-port=25565
# Gameplay
difficulty=hard
gamemode=survival
pvp=true
max-players=20
view-distance=10 # Lower = better performance (default 10)
simulation-distance=8 # Lower = better performance (default 10)
# World
level-seed= # Leave empty for random, or set a seed
level-type=default # Options: default, flat, largeBiomes, amplified
allow-nether=true
spawn-protection=16 # Radius around spawn that non-ops can't modify
# Performance
max-tick-time=60000 # Crash if a tick takes >60s (set to -1 to disable)
network-compression-threshold=256
# Security
online-mode=true # KEEP TRUE — verifies accounts with Mojang
white-list=false # Enable if you want invite-only
enforce-secure-profile=false # Set false if players have issues connecting
# RCON (remote administration)
enable-rcon=true
rcon.port=25575
rcon.password=YourSecurePassword
JVM Flags (Performance)
For Paper servers, use Aikar's optimized JVM flags:
java -Xms4G -Xmx4G \
-XX:+UseG1GC \
-XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch \
-XX:G1NewSizePercent=30 \
-XX:G1MaxNewSizePercent=40 \
-XX:G1HeapRegionSize=8M \
-XX:G1ReservePercent=20 \
-XX:G1HeapWastePercent=5 \
-XX:G1MixedGCCountTarget=4 \
-XX:InitiatingHeapOccupancyPercent=15 \
-XX:G1MixedGCLiveThresholdPercent=90 \
-XX:G1RSetUpdatingPauseTimePercent=5 \
-XX:SurvivorRatio=32 \
-XX:+PerfDisableSharedMem \
-XX:MaxTenuringThreshold=1 \
-jar paper.jar --nogui
Key rule: Set -Xms and -Xmx to the same value. Don't give Minecraft more than 12-16 GB — the garbage collector becomes inefficient beyond that.
Must-Have Plugins (Paper)
Permissions & Security
| Plugin | Purpose |
|---|---|
| LuckPerms | Permission management — groups, ranks, per-world permissions |
| EssentialsX | Core commands — /home, /tpa, /spawn, /warp, kits |
| CoreProtect | Block logging — see who placed/broke what, rollback grief |
Economy & Gameplay
| Plugin | Purpose |
|---|---|
| Vault | Economy API — required by most economy plugins |
| EssentialsX Economy | Basic economy — /pay, /balance, signs |
| ChestShop | Player-to-player trading via chest shops |
Performance
| Plugin | Purpose |
|---|---|
| Spark | Profiler — find what's causing lag |
| Chunky | Pre-generate world chunks to reduce exploration lag |
| ClearLag | Auto-remove dropped items and limit entities |
World Management
| Plugin | Purpose |
|---|---|
| Multiverse-Core | Multiple worlds (creative, survival, minigames) |
| WorldEdit | In-game world editing — selections, copy/paste, fill |
| WorldGuard | Region protection — define areas players can't modify |
| Dynmap | Live web map of your world (increases RAM usage) |
Player Management
Whitelist (Invite-Only Server)
# In-game or via RCON
whitelist on
whitelist add PlayerName
whitelist remove PlayerName
whitelist list
Or edit whitelist.json directly:
[
{
"uuid": "player-uuid-here",
"name": "PlayerName"
}
]
Operator Levels
Minecraft has 4 operator levels:
| Level | Permissions |
|---|---|
| 1 | Bypass spawn protection |
| 2 | Use /clear, /difficulty, /gamemode, /gamerule, etc. |
| 3 | Use /ban, /kick, /op |
| 4 | Use /stop, /save-all (full admin) |
Set in ops.json or via /op PlayerName.
Banning Players
ban PlayerName Reason # Ban by name
ban-ip 192.168.1.1 # Ban by IP
pardon PlayerName # Unban
banlist # View bans
Performance Tuning
If your server is lagging, check these in order:
1. Check TPS (Ticks Per Second)
A healthy server runs at 20 TPS. Below 18 is noticeable lag.
# Paper command
/tps
# Output: §aTPS from last 1m, 5m, 15m: 20.0, 20.0, 19.98
2. Use Spark Profiler
/spark profiler start
# Wait 2-3 minutes during normal gameplay
/spark profiler stop
# Opens a web report showing what's using CPU
3. Common Lag Causes
| Cause | Fix |
|---|---|
| Too many entities | Use ClearLag, reduce mob farm sizes |
| Large view distance | Lower view-distance to 8, simulation-distance to 6 |
| Chunk generation | Pre-generate with Chunky |
| Redstone machines | Limit redstone clock speed |
| Too many plugins | Remove unused plugins, check Spark for slow ones |
| Not enough RAM | Increase allocation (see RAM table above) |
| Wrong JVM flags | Use Aikar's flags (see above) |
4. Paper-Specific Optimizations
Edit config/paper-world-defaults.yml:
chunks:
max-auto-save-chunks-per-tick: 8 # Lower = less IO during saves
entities:
armor-stands:
tick: false # Don't tick armor stands
spawn-limits:
monsters: 50 # Default 70, lower for performance
animals: 8 # Default 10
water-animals: 3 # Default 5
Backup Strategy
Your Minecraft world is in the world/ directory (and world_nether/, world_the_end/ for dimensions).
What to back up:
world/— Overworld (the big one)world_nether/— Netherworld_the_end/— Endplugins/— Plugin configs and dataserver.properties— Server configwhitelist.json,ops.json,banned-players.json
When to back up:
- Before any update (server software, plugins, mods)
- Before major events (community builds, map resets)
- Automatically every day (Reactor does this for you)
All Reactor Minecraft servers include automatic daily backups with 7-day retention. Manual backups can be triggered from your dashboard anytime. Learn more →
Connecting to Your Server
Direct Connect
Players connect via the server's IP and port:
your-server-ip:25565
If using the default port (25565), the port can be omitted:
your-server-ip
SRV Records (Custom Domain)
Want players to connect via play.yourserver.com instead of an IP? Add an SRV record to your DNS:
_minecraft._tcp.play.yourserver.com SRV 0 5 25565 your-server-ip.
This lets players type play.yourserver.com in the Minecraft client without specifying a port.
Updating Your Server
Paper / Spigot
- Download the new
.jarfrom papermc.io - Stop the server
- Replace the old
.jarwith the new one - Start the server
- Check plugin compatibility — some plugins may need updates
Forge / Fabric
- Download the new installer from files.minecraftforge.net or fabricmc.net
- Stop the server
- Run the installer to update server files
- Check mod compatibility — major Minecraft versions often break mods
- Start the server
Always back up your world before updating. Version changes can occasionally corrupt world data, and downgrading is not always possible.
Related Guides
- Steam Query Protocol — Minecraft doesn't use A2S, but this explains how other games are discovered
- RCON Protocol — Remote administration for Minecraft
- Minecraft Server Plans — View pricing and tiers
Ready to host? Get your Minecraft server running in under a minute →