There are two ways to run a Minecraft server: host it yourself on your PC, or rent a dedicated server that stays online 24/7. This guide covers both, then shows the fastest path to a server your friends can join in under a minute.
Running the server on your own PC is free, but your world is only online while your machine is on, your home IP is exposed, and your upload bandwidth limits how many players can join smoothly. A dedicated Minecraft server stays online around the clock, has a proper network with DDoS protection, and is built for low latency — which is why most communities rent one.
CPU clock speed matters as much as RAM — Minecraft is largely single-threaded, so a high-clock AMD Ryzen core keeps tick rate (TPS) at a smooth 20.
Java Edition has the deepest modding scene (Paper, Spigot, Forge, Fabric). Bedrock is for console and mobile crossplay. Want both on one world? A Paper server with Geyser lets Bedrock players join your Java server.
difficulty, gamemode and max-players in server.properties (editable in the panel).white-list for a private SMP.A Java Edition server listens on TCP port 25565 by default, set by server-port in server.properties. Two optional services have their own port settings, and both are disabled by default.
| Service | Default port | Protocol | Property |
|---|---|---|---|
| Game traffic | 25565 | TCP | server-port |
| Query (server list stats) | 25565 | UDP | query.port / enable-query |
| RCON (remote console) | 25575 | TCP | rcon.port / enable-rcon |
The wiki warns that exposing RCON ports to the internet is dangerous: RCON is not encrypted and can be subject to man-in-the-middle attacks.
If you run the server on a non-standard port, an SRV record at _minecraft._tcp.<your-domain> with the value formatted <weight> <port> <target> lets players connect using the bare domain name instead of typing a port.
If the installed Java runtime is older than the version the server JAR was built for, startup fails with java.lang.UnsupportedClassVersionError. A JAR compiled for Java 21 carries class file version 65.0; a runtime that only recognizes class file versions up to 61.0 is Java 17 and will not load it.
The usual fix is to upgrade Java rather than to downgrade the server JAR.
The table below lists vanilla defaults, allowed values, and the wiki's description of what each setting controls.
| Setting | Default | Values | What it controls |
|---|---|---|---|
view-distance | 10 | 3–32 | The amount of world data the server sends the client, measured in chunks in each direction |
simulation-distance | 10 | 3–32 | The maximum distance from players at which living entities may be located in order to be updated |
max-players | 20 | 0–2147483647 | Players allowed on the server at the same time; extremely large values break the client-side user list |
network-compression-threshold | 256 | integer | Packet size in bytes at or above which packets are compressed; -1 disables compression entirely, 0 compresses everything |
For both distance settings, the wiki recommends reducing the value if a player has major lag.
Which Geyser build you need depends on the server software and Minecraft version you run:
Geyser's default port is 19132, and because Bedrock Edition uses UDP, that port must allow UDP traffic. Bedrock's own dedicated server (BDS) uses the same 19132/UDP default, which is separate from the 25565/TCP the Java server listens on.
Paper and Spigot plugins go in the plugins folder in the root directory of the server; restart the server afterwards so the plugin loads. Fabric server mods go in the mods folder of the server installation instead, and the Fabric wiki notes that any mod labeled CLIENT can be excluded from the server mods folder.
The majority of Fabric mods also require Fabric API, which can be downloaded from Modrinth or CurseForge.
If a file does not load, check that it matches the server software. Paper's troubleshooting section addresses the usual mix-up directly: a file you downloaded that is in fact a mod for Forge, Fabric, or similar will not run on Paper.