Turning one Minecraft server into a network
A network is several servers sharing one address, with a proxy in front sending players between them. It is how one address can offer survival, skyblock and a minigame lobby, and it introduces exactly one serious security step people skip.
What a proxy actually does
Players connect to the proxy. The proxy speaks the Minecraft protocol, holds the connection, and forwards it to whichever backend server it decides. When a player runs a command to change server, the proxy moves the connection without them ever disconnecting.
That gives you one address, one MOTD, one player count and cross server chat. Each backend keeps its own world, plugins and configuration.
Velocity or BungeeCord
BungeeCord is the original and still works. Velocity is the modern replacement and is the default choice for a new network: it performs better under load, has a cleaner plugin API and handles player identity properly through modern forwarding.
The practical difference is that modern forwarding in Velocity passes a player's real identity to the backend with a shared secret, so backends can verify that a connection genuinely came from your proxy. BungeeCord's legacy forwarding cannot, which is why the next section exists.
The step everybody skips
Backend servers behind a proxy must set online-mode=false, because the proxy already did the authentication. That means a backend, on its own, will let anybody log in as anybody.
So the backends must not be reachable from the internet. Bind them to a private address or localhost, firewall their ports so only the proxy can reach them, and never port forward them. A network with an exposed backend is a network where a stranger logs in as your owner account, and this happens constantly to people who followed a tutorial that stopped one step early.
With Velocity, also set the forwarding secret on the proxy and in each backend's config, and turn on the setting that makes backends require it.
What you need to solve once you have more than one server
- Shared player data. Permissions, economy and punishments should live in one database that every backend reads, or players will have different ranks on different servers.
- Cross server chat. Either a proxy plugin or a chat plugin with a messaging backend.
- A hub. One small lobby world that players land in, with portals or a menu to the rest.
- Consistent versions. Backends on mismatched Minecraft versions behave badly through one proxy. Keep them aligned, or use a protocol translation plugin deliberately rather than by accident.
When a network is the wrong answer
A proxy adds a moving part, a second config to keep in sync and a new failure mode where the proxy is up but a backend is not. If you run one gamemode and forty players, you do not need it.
Add a proxy when you actually have a second server to point at, or when you need to restart one gamemode without kicking everybody. Doing it early costs you evenings and buys nothing. If you are still on your first server, the Java server guide and the SRV lookup are the two things worth reading first.
How networks look on a server list
Worth knowing if you are about to list yours: the player count in your status response is whatever the proxy reports, which is every player on every backend. Our ping reads that number, so a network shows its total, and a single world server shows the people actually in that world.
We say so on the listing rather than pretending the two are comparable. If your network is large, that total is a real advantage on the most players page. Tag the gamemodes you really run so players land somewhere they wanted.