A working guide: which Java you need, which core to download, what to edit in server.properties, how to forward a port, how to optimize, and which plugins to install. With commands and numbers.
A guide that gets your server running in one evening: exact files, commands and setting values. No "download the program and click the button" - you get an explanation of what you are editing and why.
You do not need our services for this. Everything below is free and you can do it yourself. We just do it every day and know where people usually trip up.
A Minecraft server is a Java program. The Java version has to match the game version:
| Minecraft version | Java required |
|---|---|
| 1.16.5 and older | Java 8-11 |
| 1.17-1.20.4 | Java 17 |
| 1.20.5 and newer | Java 21 |
Use the Temurin build from Adoptium - it is free and has no licensing surprises. After installing, check it in a terminal:
java -versionIf the command is not found, Java did not get added to PATH: reinstall and tick the checkbox that adds it to the environment variables.

The core is the jar file you will run. It determines performance and plugin support.
| Core | Plugins | Notes |
|---|---|---|
| Vanilla | no | the official server, only for playing with one or two friends |
| Paper | yes | optimized, fixes vanilla bugs, the standard for public servers |
| Purpur | yes | Paper plus hundreds of gameplay options |
| Fabric / Forge | mods | for modded builds; Bukkit plugins do not work |
Download the jar from the official PaperMC site (or Purpur) and put it in a separate empty folder. The server creates about a dozen files next to itself, and in a shared Downloads folder that turns into a mess.
Create a launch file in the same folder. On Windows it is start.bat:
java -Xms4G -Xmx4G -jar paper.jar nogui
pauseOn Linux it is start.sh:
#!/bin/bash
java -Xms4G -Xmx4G -jar paper.jar nogui-Xms and -Xmx are the minimum and maximum RAM. Set them to the same value so the garbage collector does not keep resizing the heap. Never set more than the machine physically has.
Run the file. The server will tell you to accept the license and shut down. Open the new eula.txt and change the line:
eula=false → eula=trueRun it again and world generation starts. The first start takes one to three minutes.
If the console shows "Can't keep up! Is the server overloaded?" right at startup, you are short on memory or CPU. Lower view-distance (more on that below) before blaming plugins.
This is the main settings file. These are the values worth changing first:
| Setting | Set to | What it does |
|---|---|---|
server-port | 25565 | server port; change it if the machine runs several servers |
max-players | as needed | online player cap |
view-distance | 8-10 | how many chunks a player sees. The main lever for server load |
simulation-distance | 5-7 | the chunks where mobs and machines tick |
online-mode | true | license check. Use false only if the server is for cracked clients |
difficulty | normal / hard | world difficulty |
spawn-protection | 0 or 16 | radius around spawn where building is blocked |
enable-command-block | true | if you plan to use command blocks |
motd | your own | the line shown in the server list |
view-distance is the most underrated setting. Dropping it from 16 to 10 cuts the amount of loaded world several times over, and players barely notice. You can keep simulation lower than render distance: far chunks stay visible, but mobs in them do not tick.
Locally the server already works at localhost. To let others join, you need outside access.
ipconfig on Windows, ip a on Linux.If you do not want the hassle, tunnels like playit.gg or Radmin VPN give you an address without port forwarding. That is fine for testing but not for a public project: latency is higher and the address looks ugly.
The port is already open and the panel gives you the address. This is the only option if you want the server running around the clock.
You can give yourself operator status straight from the server console:
op YourNameUseful commands for the console and in game:
| Command | What it does |
|---|---|
/whitelist on | lets in only players on the list |
/whitelist add Name | adds a player to the list |
/gamerule keepInventory true | players keep their items on death |
/worldborder set 10000 | limits the world to a 10000-block square |
/save-all | forces a world save |
stop | shuts the server down cleanly - do not close the window with the X |
Never close the console with the X: the world is saved on shutdown, and killing the process leaves corrupted chunks. Use stop only.
/worldborder set 10000 - a 5000-block radius covers the server's needs for months and saves tens of gigabytes of disk space.bukkit.yml, under spawn-limits, setting monsters to 50 and animals to 8 instead of the defaults noticeably reduces load./spark profiler start, and a couple of minutes later /spark profiler stop. It shows which plugin or mechanism is eating the tick./tps command. 20 is normal; below 18 players already feel lag.
The rule is simple: with no backup, one day your project ends in a single evening. The minimum:
plugins folder and configs, separate from the world. Restoring settings is much nicer than rebuilding them from scratch.
A public server does not survive without this set. All of these are free and publicly available. Drop them into the plugins folder and they load on restart.
| Task | What people usually install | Why |
|---|---|---|
| Permissions and groups | LuckPerms | who is a moderator, what each group can access |
| Basic commands | EssentialsX | homes, teleports, kits, chat |
| Build protection | GriefPrevention or WorldGuard | claims and regions |
| Change logs | CoreProtect | who broke what, and a rollback with one command |
| Economy | Vault plus an economy plugin | currency for shops and plugins |
| Diagnostics | spark | finding the cause of lag |
| Anti-cheat | depends on the situation | without it PvP turns into a circus |
Install them one at a time and check the console after each one: if startup complains, you know right away which plugin is at fault. Two plugins for one job, such as two anti-cheats or two claim plugins, will almost always conflict.

Technically the server is ready. Next comes the stuff that decides whether projects live or die, and it costs almost nothing:
Servers are not abandoned because the owner could not set up a port. They are abandoned when, two weeks in, there is nothing to do and nobody to update the content.
eula=true, and the server starts with no errors in the console.view-distance and simulation-distance are set for your hardware.
We are Cloud Delight, a studio that makes server builds, custom plugins, websites and branding for Minecraft servers. A ready-made server build installs on your host in an evening: plugins are already selected and linked, the economy is balanced, the interfaces are drawn. Renaming to your server's name and installation are included in the price.
Server builds · Plugins · Ready-made projects
And if you read this far and decided to build it yourself, that is great too. The guide above works end to end, and we hid nothing on purpose.
We have been building server builds, plugins and websites for Minecraft servers since 2022. A ready-made solution goes onto your hosting in an evening, and we install it for free.