
Playing on someone else’s server is fine until you want your own rules, your own plugins and a world your friends can’t lose when the host gets bored. Running your own Minecraft server is easier than it looks. This guide walks through Java Edition from download to first players, on a home PC or a rented VPS, and ends with the part most guides skip: keeping it online.
What you need before you start
A Minecraft server doesn’t need a gaming PC, but it does need steady memory and a stable connection.
- RAM: 2 GB is enough for a vanilla world with a few friends. Plan on 4–6 GB for 10–20 players or a modpack.
- Storage: an SSD. World saves are lots of small writes, and a hard drive makes chunk loading stutter.
- Upload speed: each player needs roughly 0.5–1 Mbps of upload. Home connections are often fast down and slow up.
- Java: recent Minecraft versions need Java 21. Run java -version in a terminal to check what you have.
You also need to decide where the server lives:
| Option | Good for | Watch out for |
| Your own PC | Trying it out, LAN play | Server stops when the PC sleeps; port forwarding needed |
| A VPS (from about $5/month) | A small public server | You manage updates, backups and security |
| Managed Minecraft host | No-fuss setup | Less control, plugin limits on cheap plans |
Step 1: Download the server software
Get the official server.jar from the Minecraft website’s download page. That gives you a vanilla server, identical to the game rules your players know.
If you want more, pick a different server type before you build your world:
- Paper for better performance and Bukkit/Spigot plugins (permissions, anti-grief, economy).
- Fabric for lightweight mods and performance mods.
- Forge or NeoForge for most big modpacks.
Put the jar in its own empty folder. The server creates its world and config files next to it.
Step 2: Run it once and accept the EULA
Open a terminal in that folder and start the server:
java -Xms2G -Xmx2G -jar server.jar nogui
-Xmx sets the maximum memory, so raise it to 4G or more for bigger servers. The first run stops almost straight away and creates eula.txt. Open it, change eula=false to eula=true, save, and run the command again. This time the server generates a world and waits for players.
On Windows, save the command in a start.bat file so you can double-click it. On Linux, run it inside screen or tmux so it keeps going after you log out, or set it up as a systemd service so it starts after a reboot.
Step 3: Configure server.properties
Stop the server (type stop in the console) and open server.properties. The settings that matter most:
- motd: the message shown under your server name in the multiplayer list.
- max-players: keep it realistic for your RAM.
- online-mode=true: leave this on. It checks that players own the game and stops people joining under someone else’s name.
- white-list=true: only invited players can join. Add them with whitelist add <name> in the console.
- view-distance and simulation-distance: lowering these to 8–10 is the single biggest fix for lag on small machines.
- enable-status=true: this is what lets your server answer the multiplayer screen’s status ping. Turn it off and the server looks offline in everyone’s list, even when it’s running.
Give yourself admin rights with op <yourname> in the console, then start the server again.
Step 4: Open the port so friends can join
Players on your home network can join using your computer’s local IP address. Everyone else needs a way in from the internet.
- Forward TCP port 25565 on your router to the local IP of the machine running the server. Give that machine a fixed local IP first, or the forward breaks when it changes.
- Allow the port through the firewall. On Windows, add an inbound rule for Java or for port 25565. On Ubuntu, run sudo ufw allow 25565/tcp.
- Share an address. Your public IP works, but a domain is nicer. Point an A record such as play.yourdomain.com at the server. If you use a non-default port, add an SRV record so players don’t need to type it.
If port forwarding does nothing, check whether your ISP uses CGNAT. When the WAN IP on your router doesn’t match your public IP, incoming connections can’t reach you, and a VPS or a tunnelling service is the easier route.
Step 5: Check your server from outside your network
Connecting to localhost only proves the server runs. It doesn’t prove anyone else can reach it. Test from outside: run a free minecraft server status check with your address and see what the internet sees. A good result shows the server online, its version, its MOTD and the player count, just like the multiplayer screen does.
If you can join locally but the check says offline, the problem is almost always the port forward, the firewall or CGNAT, not Minecraft itself.
Step 6: Keep it running
Most servers don’t die because of a bad setup. They die from neglect.
- Back up the world folder on a schedule. Run save-all first, and keep at least one copy off the machine.
- Restart once a day during your quietest hour. It clears memory leaks from plugins and long uptime.
- Back up before every version update. Plugins and mods often lag behind new releases by days or weeks.
- Watch it while you sleep. Servers crash at 3 a.m. and players find out before you do. An uptime monitor that queries your server the same way the game does can post an alert to your Discord when it goes down and again when it recovers. FastPing’s free plan covers 3 monitors, which is enough for a small server.
Quick troubleshooting
| Error | Likely cause | Fix |
| “Failed to bind to port” | The server is already running, or another app uses 25565 | Close the other instance or change server-port |
| “Connection timed out” | Port not forwarded or blocked by a firewall | Recheck steps 4.1 and 4.2 |
| “Outdated client” or “Outdated server” | Version mismatch | Match the client version to the server |
| “You are not white-listed” | Whitelist is on | whitelist add <name> |
| “Can’t keep up!” in the console | Not enough RAM or CPU | Lower view distance, raise -Xmx, try Paper |
That’s it: a working server, open to your friends, with a plan for keeping it alive. Start small, add plugins one at a time, and back up before every big change.