Velocity and BungeeCord: connect several servers into one network
Run a proxy (Velocity recommended) on its own server, add your backend servers to velocity.toml, and turn on modern forwarding so backends can safely use online-mode=false.
- Difficulty:
- Advanced
- Time:
- 30 minutes
On this page
A proxy joins several Minecraft servers into one network: players connect to one address and move between a lobby, survival, minigames and so on with /server. On Endercloud, each part is a separate server: one small server for the proxy and one server for each game world. We recommend Velocity; BungeeCord is covered at the end.
What you need
A proxy server. The proxy needs little RAM, so the Grass plan (2 GB) is ideal for it.
Two or more backend servers running Paper or Purpur (or Fabric with the FabricProxy-Lite mod), each sized for its players.
New backend servers start with the whitelist on. Add your players on each backend (
whitelist add Name) or turn it off there, otherwise players are kicked when the proxy sends them over.Modern forwarding needs Minecraft 1.13 or newer on the backends.
Step 1: Install Velocity on the proxy server
In the Game Panel, open the server that will be the proxy and go to the Versions tab.
Click Velocity (under Recommended), click the latest version, tick Accept EULA in the pop-up and click Install.
Start it once so it creates
velocity.tomlandforwarding.secret, then stop it.
Step 2: Configure velocity.toml
Open Files on the proxy and edit velocity.toml:
Make sure
online-mode = true. The proxy checks every player's Minecraft account.Set
player-info-forwarding-mode = "modern".Check that
binduses your proxy server's port (shown in the panel header), for examplebind = "0.0.0.0:45568".In the
[servers]section, list your backends asname = "IP:port". Use each backend's Server IP from its Dashboard and its port.Set
tryto the server players should join first.The
[forced-hosts]section has example entries that point to server names. Edit or remove any entry that names a server you deleted, or Velocity will show an error.
[servers]
lobby = "203.0.113.10:45570"
survival = "203.0.113.10:45575"
try = ["lobby"]Replace the example addresses with your own.
Step 3: Configure each backend server
Do this on every backend server, with the server stopped:
In Properties, set
online-modetofalseand save. (The proxy does the account check instead.)In Files, open
spigot.ymland make suresettings.bungeecordisfalse.Open
config/paper-global.yml. Underproxies:→velocity:set:
proxies:
velocity:
enabled: true
online-mode: true
secret: 'paste the text from forwarding.secret here'Copy the secret from the proxy's forwarding.secret file. The online-mode value here must match online-mode in velocity.toml. (On Paper 1.18.2 and older, these options are in paper.yml under settings.velocity-support.)
Start the backends, then the proxy. Players join using the proxy's address and can switch with /server survival.
Security: protect your backends
A backend with online-mode=false trusts whoever connects to it. If someone can join it directly, they can log in as any player, including you or your admins. Only turn off online-mode on a backend that sits behind a proxy with forwarding set up.
With Velocity modern forwarding enabled in
paper-global.yml, Paper refuses players who try to join the backend directly, because they can't present the secret. This is why modern forwarding matters on a shared host where you cannot add your own firewall.Keep
forwarding.secretprivate. Anyone with it can pretend to be your proxy. If it leaks, delete the file, restart the proxy to create a new one, and update every backend.Don't share backend addresses with players, and don't put them on a subdomain.
Using BungeeCord instead
Install BungeeCord from the Versions tab (Waterfall is deprecated). In BungeeCord's config.yml, set ip_forward: true, add your backends under servers with their address, and set your lobby in priorities. On each backend, set online-mode=false and settings.bungeecord: true in spigot.yml. BungeeCord forwarding has no secret, so backends can be joined directly by attackers. If you must use it, add a protection plugin such as BungeeGuard. Velocity is the safer choice.
Plugins on a network
Proxy plugins (Velocity or BungeeCord builds) go on the proxy; Paper plugins go on the backends.
For crossplay, put Geyser and Floodgate on the proxy: see Geyser and Floodgate.
LuckPerms on several servers needs one shared MySQL database: see LuckPerms setup.
Frequently asked questions
"Unable to connect you to lobby" or players are kicked when switching
Check that the backend is online, that the IP and port in [servers] are correct, that proxies.velocity.enabled is true, and that the secret matches forwarding.secret exactly.
Can I run the proxy and a game on one server?
No. Each Endercloud server runs one software at a time, so the proxy and each backend need their own server.
Players have wrong skins or new UUIDs
Forwarding isn't working. Recheck Step 2 and Step 3, then restart the backends and the proxy.
Still stuck? Open a ticket with your velocity.toml (remove the secret) and console logs.
Was this article helpful?
Related articles
Pick the right plan for your player count, plugins and modpacks — with a plan comparison table and chart.
Open the Game Panel with Auto Login to Panel, press Start and accept the EULA, whitelist yourself (the whitelist is on by default), then join with the address shown in the panel.
Turn off online-mode in the Properties tab, save and restart. Anyone can then join with any name, so add a login plugin to protect accounts.
Put a direct download link in resource-pack (plus its SHA-1) in Properties to send a resource pack. Put datapack zips in world/datapacks and reload or restart.
