Minecraft remains the most popular game server to self-host, and for good reason. Whether you are running a small survival world for friends or a public server with dozens of plugins, a VPS gives you full control over performance, mods, and who gets to play. No subscription to Realms, no limitations on player count, and no one else's rules about what you can install.
This guide covers setting up both Java Edition and Bedrock Edition servers on Linux and Windows, from initial installation through optimization and ongoing management.
Java Edition vs Bedrock Edition
Before you start, you need to decide which edition to host. Java Edition is the original version that runs on PC. It has the largest modding community, supports plugins through Spigot and Paper, and gives you the most control over server behavior. Bedrock Edition is the cross-platform version that runs on consoles, mobile devices, and Windows 10/11. If your players are on different platforms, Bedrock is the only option that lets everyone play together.
Java Edition servers are more resource-intensive but offer far more customization. Bedrock servers are lighter on resources but have a smaller plugin ecosystem. Most serious Minecraft communities run Java Edition. If you need cross-platform support, consider running both with a bridge plugin like GeyserMC.
Server Requirements
Java Edition
2 to 5 players: 2 CPU cores, 2 to 4 GB RAM, 10 GB storage. A vanilla or lightly modded server for a small group. Budget 10 to 20 dollars per month.
5 to 20 players: 4 CPU cores, 4 to 8 GB RAM, 20 GB storage. Room for plugins, a larger world, and more concurrent players. Budget 20 to 35 dollars per month.
20 to 100 players: 6 to 8 CPU cores, 8 to 16 GB RAM, 40 GB NVMe storage. A public server with many plugins, large worlds, and heavy activity. Budget 40 to 70 dollars per month.
Minecraft Java Edition is single-threaded for the main game loop, which means clock speed matters more than core count. A VPS with fast single-core performance like those using Ryzen 9 processors will outperform one with more but slower cores.
Bedrock Edition
Bedrock servers are significantly lighter. A server handling 10 players needs only 2 CPU cores and 1 to 2 GB of RAM. The Bedrock server binary is more optimized and does not run on the JVM, eliminating Java's memory overhead entirely.
Java Edition Server Setup on Linux
System Preparation
Start with Ubuntu 22.04 or Debian 12. Install Java and create a dedicated user:
Java 21 is required for Minecraft 1.20.5 and newer. For older versions, Java 17 works. Check the Minecraft version requirements before installing.
Download and First Run
Download the server jar file. We recommend Paper instead of vanilla Mojang server because it includes critical performance optimizations:
Run the server once to generate config files:
The server will stop and create an eula.txt file. You need to accept the EULA:
Run it again and the server will generate the world and all configuration files:
Server Configuration
The main configuration file is server.properties. Edit it to customize your server:
Key settings to change:
The view-distance and simulation-distance settings have the biggest impact on performance. Lower values reduce the area the server simulates around each player. A view distance of 10 is a good balance between visibility and performance. Reduce to 6 or 8 if you experience lag with many players.
Optimized JVM Flags
The default Java flags leave performance on the table. Use Aikar's optimized flags which are the standard for Minecraft server hosting:
These flags optimize garbage collection to minimize lag spikes. Set -Xms and -Xmx to the same value to prevent the JVM from constantly resizing the heap. Allocate about 80% of your available RAM to the JVM, leaving the rest for the OS.
Firewall and Systemd Service
Open the Minecraft port and set up auto-start:
Create the systemd service file:
Enable and start:
Bedrock Edition Server Setup on Linux
The Bedrock server is a standalone binary, no Java required:
Edit server.properties the same way as Java Edition. The settings are similar but not identical. Start the server:
Bedrock uses UDP port 19132 by default. Open it in your firewall:
Windows Server Setup
Connect via Remote Desktop. Download the server jar (Java) or server zip (Bedrock) and extract to a folder. For Java Edition, install Java 21 from Adoptium. Create a start script:
Open the port in Windows Firewall:
For automatic startup, add the batch file to Task Scheduler with a trigger set to run at system boot.
Essential Plugins for Paper/Spigot
A vanilla server works fine for small groups, but plugins transform Minecraft into whatever experience you want. Here are the essentials:
EssentialsX: The Swiss army knife of Minecraft plugins. Adds homes, warps, kits, economy, and hundreds of utility commands. Almost every server runs this.
LuckPerms: Permission management. Control who can use which commands, access which areas, and perform which actions. Essential for any server with more than a handful of players.
WorldGuard + WorldEdit: Region protection and world editing. Prevent griefing by protecting areas, and use WorldEdit for large-scale building and terrain modification.
CoreProtect: Block logging and rollback. See who placed or broke every block, and roll back griefing with a single command. This plugin has saved countless servers from griefers.
Install plugins by dropping the jar files into the plugins folder and restarting the server:
Performance Optimization
Paper-Specific Tuning
Paper has additional configuration files that let you fine-tune performance beyond what vanilla offers. Edit paper-world-defaults.yml:
Key optimizations:
World Pre-Generation
Generating new chunks is the most CPU-intensive operation a Minecraft server performs. Pre-generate your world to eliminate lag when players explore new areas:
This generates all chunks within 5000 blocks of spawn. It takes time but eliminates chunk generation lag during gameplay.
Backup and Maintenance
Automate world backups. Minecraft worlds are just files on disk, making backups straightforward:
Troubleshooting
TPS drops below 20: Check timings with /timings on, wait 5 minutes, then /timings paste. The report shows exactly what is consuming server ticks. Common culprits are too many entities, unoptimized plugins, or excessive view distance.
Players experience lag but TPS is fine: This is usually network latency, not server performance. Check player ping with /ping. If ping is high, the server location is too far from the players. Choose a VPS in a data center close to your player base.
Out of memory errors: Increase -Xmx in your startup flags. If you are already using all available RAM, upgrade your VPS. Do not set -Xmx higher than your physical RAM or the server will swap to disk and performance will be terrible.
Server not appearing in server list: Verify the port is open and the server is running. Check server.properties to ensure server-port matches the port you opened in the firewall. If using a non-standard port, players need to specify it when connecting (e.g., your.ip:25566).
BlastVPS VPS plans come with NVMe storage and high clock-speed processors, giving your Minecraft server the single-thread performance it needs for smooth gameplay even with heavy plugin loads.
Ready to Deploy?
Get a high performance VPS with instant setup, full root access, and 24/7 support.