GuavaHost
Language & currency
Client AreaGame Panel Toggle navigation
Games All Games
Minecraft JavaMinecraft BedrockMinecraft GeyserRustRuneScape: DragonwildsPalworldValheimValheim + BepInExARK: Survival EvolvedARK: Survival AscendedProject ZomboidEnshroudedDon't Starve TogetherCounter-Strike 2TerrariatModLoaderHytaleMulti-Game ServerDiscord Bot Hosting
Navigation PricingReviewsHelp CenterSupport Company About UsFAQRefer to earnSLATerms of ServicePrivacy Policy
Language & currency
Client AreaGame Panel

Run a Minecraft network with Velocity or BungeeCord

A proxy puts several Minecraft servers behind one address so players can hop between a lobby, survival and minigames without disconnecting. Here is how Velocity and BungeeCord work, what you have to lock down, and whether you need one at all.

6 min read · Updated Oct 21, 2026 · By GuavaHost Team

Start with the honest question: do you need one?

A proxy adds a whole extra server to run, a second set of plugins, a security model to get right, and a new way for your network to break. It is worth it when:

  • You want more than one world type live at once, like survival and creative, and players should move between them with a command instead of joining another address.
  • You run minigames, where players need to land in a lobby and get sent to a match server.
  • You are splitting load, because one Minecraft server does its world ticking on effectively one thread and you have hit that wall rather than a RAM wall. Reading TPS and MSPT tells you whether that is actually your problem.

It is not worth it when you have one survival world and 20 friends. A multiverse style plugin, which runs several worlds inside one server, covers most "I want a creative world too" cases with no proxy at all.

What a proxy actually is

A proxy is a small server that speaks the Minecraft protocol but has no world of its own. Players connect to it, and it forwards their connection to one of your real servers (the backends). To the player it looks like one server: one address, one join, and /server survival moves them without a disconnect.

So a network is at minimum two servers: the proxy, and one backend. A realistic small network is three or four: proxy, lobby, survival, creative. On GuavaHost each of those is its own server with its own address and its own RAM. The proxy needs very little memory, because it holds no world; your backends are where the resources go. See /pricing for what each one costs, and how much RAM does my Minecraft server need for sizing a backend.

Velocity or BungeeCord

Velocity BungeeCord (and Waterfall)
Age Modern, actively developed Older, very widely used
Performance Noticeably lighter per player Fine, but heavier
Config format velocity.toml config.yml
Forwarding Modern forwarding, cryptographically signed Legacy forwarding, IP trust only
Plugin pool Smaller, growing Large, lots of old plugins
Backend support Paper 1.13 and newer Spigot and Paper, including older builds

For a new network, pick Velocity. The deciding factor is not speed, it is that modern forwarding makes it genuinely hard for someone to connect to a backend directly, which is the single biggest way networks get griefed. Choose BungeeCord only if a plugin you must have is Bungee only, or your backends are old builds that modern forwarding will not work with. Waterfall, the old BungeeCord fork, is no longer maintained, so do not start a new network on it.

How the pieces fit together

  1. The proxy runs on its own server. Its main port is the address you give players. If you want them to type a bare domain with no port, pair it with an SRV record as described in Connect Minecraft with a custom domain.
  2. Each backend keeps its own address. You find them under Ports & network on each server's Overview, or at the top of the server page: see Find your server IP and port.
  3. The proxy's config lists the backends by address, with a short name each. On Velocity that is the [servers] table in velocity.toml:
[servers]
lobby = "123.45.67.89:25565"
survival = "123.45.67.89:25566"
try = ["lobby"]

try is the order the proxy uses when a player first joins, so the first entry is your lobby.

  1. Each backend is told it sits behind a proxy, so it accepts the identity the proxy sends instead of checking with Mojang itself.

Online mode and forwarding, the part that matters

Normally every server verifies a joining player against Mojang's servers. On a network, the proxy does that once, then tells the backend who the player is. That handoff is called player info forwarding, and getting it wrong is how you end up with people joining as anyone they like.

The rule is simple: online mode stays on at the proxy, and goes off at the backends, and the backends only accept identities from your proxy.

On Velocity with modern forwarding:

  • In velocity.toml, keep online-mode = true and set player-info-forwarding-mode = "modern". The proxy generates a forwarding.secret file on first start.
  • Copy that secret onto each backend. On Paper it goes in config/paper-global.yml under proxies.velocity, where you set enabled: true, online-mode: true and secret to the same string.
  • In each backend's server.properties, set online-mode=false. Use the Server properties page under Minecraft tools, or edit the file on the Files tab. Editing server.properties explains the file.

Because the secret is signed into the handshake, a backend with Velocity forwarding enabled rejects anyone who connects straight to it. That is the behaviour you want.

On BungeeCord there is no secret. You set ip_forward: true in the proxy config, bungeecord: true in each backend's spigot.yml, and online-mode=false in server.properties. The backend then trusts whoever connects, which is why a Bungee network needs its backends firewalled off, and why Velocity is the better default.

Two things people get wrong here. Setting online-mode=false on a backend that is not behind a working proxy is an open door: anyone can join as any username, including yours, so never leave a backend in that state while you work the forwarding out. And keep the forwarding secret private, because it is as sensitive as any of the credentials in protecting your panel account.

Plugins on a network

Plugins split into two groups, and mixing them up is the usual source of confusion. Proxy plugins run on Velocity or BungeeCord: proxy level permissions, network wide chat, cross server messaging, a /server menu, maintenance mode. Backend plugins run on each real server exactly as before: land claims, EssentialsX, world edit.

Install them with the normal routine on each server, covered in Installing plugins. A backend plugin will not load on the proxy and vice versa, and a plugin like LuckPerms has a separate download for Velocity. For ranks that are the same everywhere, point every copy of LuckPerms at one MySQL database rather than its own local file: Create a MySQL database shows where to get one.

Players keep their inventory per backend, not across the network. Moving items between servers needs a plugin that syncs inventories through a shared database, and that is a well known source of item duplication bugs, so test it before you open up.

Keep every backend on the same Minecraft version where you can. A proxy lets several client versions connect, but each backend still speaks only its own version, so mixed versions need a translation plugin as described in ViaVersion and cross version play.

Common questions

Can I run the proxy and a server on the same GuavaHost server?

No, and you would not want to. The proxy and each backend are separate server processes that each need their own port and their own memory, so each one is its own server in your panel. The proxy is the cheap part, since it holds no world.

Is it safe to set online-mode to false on my backends?

Only when the proxy is doing the verification and the backend accepts identities from that proxy alone, which is what Velocity's modern forwarding enforces. A backend with online mode off and no working forwarding lets anyone join as any username, so never leave one sitting in that state.

What happens to my network if the proxy goes down?

Players lose the shared address and cannot join, even though the backends are still running. That is the trade you accept with a proxy, so keep the proxy on a restart schedule you control rather than restarting it blind: Schedule automatic restarts covers setting that up.

Still stuck? Jump into our Discord at discord.gg/GuavaHost and the team will help you out.

  • velocity
  • bungeecord
  • proxy
  • minecraft
  • java

Host a Minecraft Java server From $3.99/mo, with instant setup and DDoS protection.

Still need help? Our team is online 24/7 to answer questions.

Contact support

Related guides

More from Minecraft: Java.