Link multiple Minecraft servers (BungeeCord/Velocity)
Connect your servers with Velocity or BungeeCord using a modern forwarding secret.
Link multiple Minecraft servers (BungeeCord/Velocity)
A proxy (Velocity, Waterfall, or BungeeCord) links several Minecraft servers under a single IP address. Players connect to the proxy and switch between servers (lobby, survival, creative) without disconnecting. Velocity is the recommended modern option.
Cause / The problem
Without a proxy, each server has its own IP and players must disconnect/reconnect to move between them, losing inventory and state. A proxy unifies everything but requires secure authentication between the proxy and the backend servers to prevent spoofing.
Solution
- Prepare your servers: 1 proxy + at least 2 backend servers (e.g. lobby, survival). All backends must run Paper/Spigot; the proxy is Velocity, Waterfall, or BungeeCord.
- On each backend, switch to
online-mode=falseinserver.properties: it’s the proxy that handles Mojang authentication.online-mode=false - For Velocity, enable modern forwarding in each backend’s
paper-global.yml:proxies: velocity: enabled: true secret: 'a-long-secret-string' online-mode: true - Configure the proxy in
velocity.toml:
Velocity auto-generates aplayer-info-forwarding-mode = "modern" forwarding-secret-file = "forwarding.secret"forwarding.secret— copy its contents into each backend’spaper-global.yml(both must match). - Declare your servers in
velocity.toml:[servers] lobby = "127.0.0.1:25566" survival = "127.0.0.1:25567" creative = "127.0.0.1:25568" - Firewall: expose only the proxy port (25565). Backends must only be reachable from the proxy — otherwise an attacker can bypass authentication.
- For BungeeCord, use
ip_forward: trueinconfig.ymlinstead, and install BungeeGuard to secure it (BungeeCord’s legacy forwarding is weak). - Test: connect to the proxy and type
/server survival(with the SlashServer plugin, or via Velocity commands).
Modern forwarding with a secret is what stops anyone from spinning up a fake proxy and sending forged player data to the backends. Never reuse the same secret across different servers.