The short version:
- 1Decide where the server runs: your own PC, a game host or a VPS.
- 2Install the right Java: 21 for Paper 1.20–1.21.11, 25 for 26.1 and newer.
- 3Download the server software — Paper or its fork Leaf.
- 4Start the server with a script that sets memory, and accept the EULA.
- 5Check
server.propertiesand open port 25565. - 6Add the basic plugins: permissions, block logging, an anticheat.
- 7Set up backups and rules — only then invite players.
What you need
A Minecraft Java Edition server is a Java program: a single .jar file you start from the command line. There is no separate “server edition” to buy — Paper is free, and so are most plugins. The only thing you pay for is hardware, if the server has to run around the clock.
Java
Each Paper version needs a specific Java version. Paper's documentation recommends:
| Paper version | Java |
|---|---|
| 1.17–1.19 | 17 |
| 1.20–1.21.11 | 21 |
| 26.1 and newer | 25 |
Use an OpenJDK build: Paper's guide uses Amazon Corretto, and Adoptium or Azul Zulu work too. Avoid packages with a -headless suffix — they lack dependencies Paper needs. Check the install with java -version in a terminal.
Server software
The vanilla server from Mojang doesn't load plugins, which is why public servers almost always run Paper: it's optimized for performance out of the box, runs Bukkit and Spigot plugins, and is a drop-in replacement for Spigot. Leaf is a Paper fork focused on performance and fully compatible with Spigot and Paper plugins.
Mods (Forge, NeoForge, Fabric) need different server software — a separate path, see modded servers. How Paper, Leaf, Purpur and Folia differ and which one fits your game mode is covered in which server software to choose.
Where to run it: your PC, a game host or a VPS
A server is only online while the machine it runs on is. You have three options:
| Option | Good for | Downsides |
|---|---|---|
| Your own PC | Playing with friends, testing plugins and settings | The PC has to stay on; you need port forwarding and a public IP; players see your home address |
| Game hosting | A quick start: a web panel, Java and the port already set up | Resources are shared with neighbours; not everything is configurable |
| VPS or dedicated server | A long-term server, a network, full control | You set up the OS, firewall and backups yourself |
What matters most is a fast CPU core. Most of the server's work is the tick loop, which runs on a single thread. Paper's docs recommend a CPU with high single-threaded performance and at least 4 threads for the server. How to compare plans and where not to cut corners: hosting or VPS.
How much memory to give it
Two Java flags set the memory: -Xms is what the server gets at start, -Xmx is the maximum. Make them equal: Paper's guidance is that a server should be expected to use all of -Xmx eventually, and anything between the two values is memory sitting idle.
Paper's getting-started command uses 4 GB, while its Aikar's flags page recommends 6–10 GB no matter how few players you have. Never hand Java your plan's entire memory: Java needs a bit more than -Xmx, and the OS needs its own, so keep 1000–1500 MB spare. Sizing and measuring real usage: how much RAM a server needs.
First start and the EULA
- 1
Create a server folder
A dedicated one: the world, configs and the
pluginsfolder will appear in it. On a VPS, run the server as a separate user, not as root. - 2
Download Paper
On Paper's downloads page, pick your version and click the build number. Put the file in the server folder and rename it to
paper.jarfor convenience. - 3
Create a start script
Start the server with a command, not by double-clicking the
.jar. Put the command instart.bat(Windows) orstart.sh(Linux, macOS) — examples below. Paper's start script generator builds one for you. - 4
Run it and accept the EULA
The first run creates
eula.txtand stops. Changeeula=falsetoeula=truein it — this confirms you've read the Minecraft EULA. Without it the server shuts down right after starting. - 5
Start the server again
Now it generates the world,
server.properties, Paper's configs and thepluginsfolder. It's ready when the console printsDone. Shut it down withstopin the console — that saves the worlds and disables plugins cleanly.
java -Xms4G -Xmx4G -jar paper.jar --nogui
pause#!/usr/bin/env sh
java -Xms4G -Xmx4G -jar paper.jar --nogui--nogui disables the vanilla server window so you don't get two interfaces in the terminal. pause at the end of start.bat keeps the window open on an error so you can read it. On Linux, make the script executable (chmod +x start.sh) and run ./start.sh.
The essentials of server.properties
server.properties sits in the server folder and holds the basic settings. Edit it while the server is stopped — changes apply after a restart. Check these keys first:
| Key | Default | What to set |
|---|---|---|
server-port | 25565 | Keep it unless your host assigned another port |
online-mode | true | true — only premium accounts can join. On false and its risks, see offline mode |
white-list | true since 26.3, false before | true for a private, invite-only server; false for a public one |
max-players | 20 | What your hardware can actually handle |
view-distance | 10 | How many chunks around a player the server sends to the client. Lower means less load |
simulation-distance | 10 | How far from players the server updates mobs and other living entities |
difficulty | easy | normal or hard for survival |
spawn-protection | 16 | Protects spawn from everyone but operators; 0 turns it off when a region plugin guards spawn |
server-ip | empty | Leave it empty: it's not your public address but the network interface the server binds to |
enable-rcon | false | Don't enable it without a strong password and a port closed to the outside |
Joining the server and opening the port
In the game, open Multiplayer → Add Server and enter the address. You don't need to type port 25565 — the client adds it; any other port goes after a colon: play.example.com:25570.
- Same computer —
localhost. - Same home network — the local IP of the machine running the server (like
192.168.x.x). - Over the internet from your PC — forward TCP port 25565 on your router to that machine and give friends your public IP. If your ISP shares one public IP between many customers (CGNAT), forwarding won't work without a dedicated public IP.
- Game host or VPS — the panel gives you the address and port. On a VPS, open the server port in the firewall.
Ports, forwarding and connection errors in detail: Minecraft server port.
Plugins: what to install first
Installing a plugin: download the .jar, drop it into plugins/ and restart. /plugins lists them — green is running, red failed to load, and the reason is in logs/latest.log. Step by step, with dependencies and errors: how to install a plugin.
A baseline for any game mode:
| Job | What to install | Why |
|---|---|---|
| Permissions | LuckPerms | Player and staff groups instead of OP |
| Block logging | CoreProtect | Who broke or placed what — and grief rollback |
| Other client versions | ViaVersion | Players join from clients newer than the server |
| Anticheat | DGuard | Catches cheats in combat, movement, building, inventory and packets; free up to 30 online |
| Backups | Your host's panel, a script or a plugin | Scheduled copies of worlds and configs |
The full list, with picks for survival, anarchy and minigames: must-have plugins.
Permissions: LuckPerms instead of OP
An operator (OP) gets every command at once, including the ones that can break the server. Give OP to yourself only — op <name> from the console — and hand out permissions to staff and players in groups with LuckPerms. A moderator needs kick, mute and player checks, not stop or item spawning.
If the server lets in players without a premium account (online-mode=false), install an authentication plugin first — otherwise anyone can join under an admin's name, with all of the admin's permissions.
Protection from cheaters
A vanilla server barely checks players: at best it kicks someone for flying in survival. It doesn't see KillAura in fights, Scaffold on builds, Nuker in mines, or Speed and Fly across the map. Without an anticheat, the first cheater wrecks your economy, leaderboards and events — and honest players leave.
Install the anticheat before you open, not after the first report. DGuard watches every front at once — combat, movement, building and world, inventory, packets — and in our comparison it has a check for every one of the 47 kinds of cheats. It runs on Paper and Leaf 1.21–26.3, with 1.21.11 as the main version. Up to 30 players online DGuard is free: one server, no time limit, no card, and the same protection as on paid plans. Setup takes four steps:
- 1
Get a key
Sign up and add a server in the panel — it issues a
dg_…key. It's shown once, so copy it right away. - 2
Install PacketEvents
DGuard reads packets through the PacketEvents plugin and needs its latest release — not a dev or SNAPSHOT build. Put it in
plugins/. - 3
Add DGuard.jar and paste the key
DGuard.jargoes intoplugins/too, and the key intoplugins/DGuard/config.yml, fieldlicense.key. - 4
Restart the server
/dguard licenseshows the license state, and the server turns “Online” in the panel. New DGuard versions install themselves on restart from then on.
No plugin anticheat sees X-Ray: the cheat only changes what the client draws. Paper's built-in anti-xray, which hides ores, is the answer — see X-Ray protection. Choosing an anticheat for your mode: the best Minecraft anticheats. Full server protection, step by step: the guide.
Backups
A backup isn't for “if”, it's for “when”: a broken plugin, griefers, a bad update. Back up three things: the world folders, the server configs, and plugins with their configs. Keep several copies from different days, and not on the same disk as the server.
Back up on a schedule and always before updating the server software or plugins. Every so often, check that the server actually comes up from a copy. On a game host, look at the panel's built-in backups first. Schedules, tools and restoring: server backups.
Updates without surprises
Paper recommends updating at least once a week, but not automatically: update when you can watch the console. The order: backup → new plugin versions into plugins/update → stop the server → replace paper.jar → start and read the log. Plugins in plugins/update are swapped in on startup. Never replace a .jar on a running server.
Be careful with Minecraft version upgrades: a world opened on a newer version can't go back to an older one. Before upgrading, make sure your key plugins support the new version — DGuard's list is on the versions page.
Rules and moderation
Rules come before the first ban: players need to know what gets them punished, and moderators need something to point to. Spell out what counts as cheating, griefing and abuse, and which punishment goes with what. The rules generator builds a set for your game mode.
Recruit moderators early and give them tools, not OP: LuckPerms permissions, a punishment log with reasons, a clear process for reports. How to build the team: moderation team.
Pre-launch checklist
- Right Java version, the server starts from a script,
-Xmsequals-Xmx, and the OS has memory to spare. - EULA accepted;
online-mode,white-list,max-playersandview-distancechecked inserver.properties. - Port open: a friend on another network joins without errors.
- OP is yours alone; staff and player permissions are LuckPerms groups.
- Block logging, ViaVersion (if needed) and an anticheat installed; everything green in
/plugins. - Scheduled backups set up and restored at least once as a test.
- Rules published; moderators know how to handle a report.
- The server survived a test crowd:
/spark health(spark ships with Paper since 1.21) shows a steady 20 TPS.
FAQ
Can I make a Minecraft server for free?
Yes: Java, Paper and most plugins are free, and you can run the server on your own computer. You only pay for a host or VPS once the server needs to run around the clock. The DGuard anticheat is free up to 30 players online.
Which Java version does a Minecraft server need?
Per Paper's docs: Java 21 for 1.20–1.21.11 and Java 25 for 26.1 and newer. The wrong Java is a common reason a server won't start.
Why does my server stop right after starting?
Usually the EULA isn't accepted: open eula.txt and set eula=true. Other causes are the wrong Java version or a wrong .jar name in the script; the exact error is in logs/latest.log.
How do my friends join my server?
On the same network, by your computer's local IP. Over the internet, forward TCP port 25565 on your router and give them your public IP — or run the server on a host or VPS, where the panel gives you the address.
Paper or the vanilla server?
For a plugin server, Paper: vanilla doesn't load plugins. Paper is a drop-in replacement for Spigot and CraftBukkit and converts a vanilla world automatically.
Does a small server need an anticheat?
Yes: cheaters join small servers too, and every honest player who leaves is felt more there. DGuard is free up to 30 players online, with the same protection as on paid plans.
Sources
- Paper: Getting started
- Paper: Installing Java
- Paper: Start script generator
- Paper: Aikar's flags
- Paper: Adding plugins
- Paper: Updating
- Paper: Basic troubleshooting
- Paper: Next steps
- Paper: Profiling
- spark: commands
- Minecraft Wiki: server.properties
- Minecraft Wiki: Setting up a Java Edition server
- Minecraft EULA
- Leaf on GitHub
- DGuard, the best anticheat for a modern Minecraft server: checks compared with GrimAC, Vulcan, Polar, Intave and Matrix
- DGuard: installation, requirements and troubleshooting
- DGuard: supported Paper and Leaf versions