Skip to content
EndercloudKnowledge Base
GuidePlugins, Mods & Modpacks

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.

Updated 4 min read
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

  1. In the Game Panel, open the server that will be the proxy and go to the Versions tab.

  2. Click Velocity (under Recommended), click the latest version, tick Accept EULA in the pop-up and click Install.

  3. Start it once so it creates velocity.toml and forwarding.secret, then stop it.

Step 2: Configure velocity.toml

Open Files on the proxy and edit velocity.toml:

  1. Make sure online-mode = true. The proxy checks every player's Minecraft account.

  2. Set player-info-forwarding-mode = "modern".

  3. Check that bind uses your proxy server's port (shown in the panel header), for example bind = "0.0.0.0:45568".

  4. In the [servers] section, list your backends as name = "IP:port". Use each backend's Server IP from its Dashboard and its port.

  5. Set try to the server players should join first.

  6. 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:

  1. In Properties, set online-mode to false and save. (The proxy does the account check instead.)

  2. In Files, open spigot.yml and make sure settings.bungeecord is false.

  3. Open config/paper-global.yml. Under proxies: → 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.secret private. 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.

Get a Minecraft serverInstant setup · 24/7 support · DDoS protection

Was this article helpful?

Related articles

Join Our Discord

Connect with our community of gamers and developers

Get instant support, share experiences, and stay updated with the latest news

Join Discord