BungeeCord: turning servers into a network
A proxy lets several Minecraft servers share one address, so players move between a hub, survival and minigames without disconnecting. BungeeCord is the long-established way to do it.
What a proxy actually does
Players connect to the proxy, not to a game server. The proxy holds the connection open and forwards it to whichever backend server it decides, which is why switching worlds looks like a loading screen rather than a disconnect and reconnect.
That also means one address, one player count, and shared chat and party features across every server if you install plugins for them. The backends stop being separate places from the player's point of view.
The cost is a second thing to run and a new class of mistake, since the proxy and the backends have to agree about who a player is.
Setting it up
Run the BungeeCord jar in its own folder. It creates config.yml, where the parts that matter are the listener address and the server list:
listeners:
- host: 0.0.0.0:25565
priority:
- hub
servers:
hub:
address: 127.0.0.1:25566
restricted: false
survival:
address: 127.0.0.1:25567
restricted: falseThe proxy takes the public port. Every backend moves to its own port and should bind to 127.0.0.1 so nothing outside the machine can reach it. priority is the join order, so the first entry is where players land.
The two settings people get wrong
On every backend server, set online-mode=false in server.properties. Authentication happens once at the proxy, and a backend that tries to authenticate again rejects everyone.
On the proxy, keep ip_forward: true, and on each Paper backend set bungeecord: true in spigot.yml. Without that the backends see every player as connecting from the proxy's IP, which breaks bans, per-IP limits and any plugin that cares where someone came from.
Those two together create the risk below, and it is the single most important thing on this page.
Securing it, which is not optional
Backends running offline mode will accept anyone who reaches them claiming any username, including yours. If a backend port is reachable from the internet, someone can connect directly to it as an administrator and skip the proxy entirely. This is how networks get taken over.
Bind backends to 127.0.0.1 if everything is on one machine. If it is not, firewall those ports to the proxy's address only, and run a plugin that rejects connections not forwarded by your proxy. Do both rather than either.
Test it from outside. Our status checker will tell you whether a backend port answers from the public internet, which it should not.
BungeeCord or Velocity
Velocity is the newer proxy and is the better default for a network started today. It performs better under load, its modern forwarding is cryptographically signed rather than trusting a header, and it is under active development.
BungeeCord still wins on plugin availability, since a long tail of network plugins were written for it and never ported. If a specific plugin you need is BungeeCord only, that decides it.
Waterfall, the patched BungeeCord fork, is no longer maintained, so it is not the middle ground it used to be. Our Velocity guide covers the other side of this choice.
What to install next
A proxy alone gives you server switching and nothing else. Networks normally add a chat bridge so messages cross servers, a party or friends plugin, a shared punishment system so a ban applies everywhere, and a permissions plugin with a shared database so ranks follow players.
Point them all at the same database rather than flat files, or a rank bought on one server will not exist on the next. Our plugin guide covers the individual picks.