Setting up a Velocity network, step by step

Networking & Proxies Reviewed September 6, 2026 2 min read

The smallest useful network is a proxy and two servers. Once that works, adding a third is copying a block of config. Getting the first one right is the part worth doing slowly.

What to do

  1. Create the proxy instance

    Velocity is its own server type, not a plugin. It needs very little memory — 512 MB is generous for a small network, because it holds no world data.

  2. Point the proxy's address at your players

    The proxy is what people connect to. Its address and port are the ones you publish; the backends' addresses stay private.

  3. List the backends in velocity.toml

    Under [servers], each entry is a name and an address. try lists which server new players land on, in order.

  4. Switch forwarding to modern

    In velocity.toml, set player-info-forwarding-mode = "modern". This is how the backend learns who a player really is, including their skin and UUID.

  5. Copy forwarding.secret to every backend

    The file sits next to velocity.toml. Each Paper backend needs the same value in config/paper-global.yml under proxies.velocity, with enabled: true and online-mode: true.

  6. Turn off online mode on the backends only

    In each backend's server.properties, set online-mode=false. The proxy authenticates now; the backends trust the proxy. This is safe only with the next step done.

A backend with online-mode=false and no firewall is wide open

Anyone who learns a backend's address and port can connect straight to it under any username — including yours, with your permissions. Backends must not be reachable from the internet. Restrict them to the proxy, or run them where only the proxy can see them.

What lives where

SettingProxyBackends
online-modetruefalse
Forwarding secretIn forwarding.secretCopied into paper-global.yml
Public addressYes — this is what you publishNo
Permissions pluginOptional (for proxy commands)Yes, on each
Test with the proxy first, always

Connect to the proxy, then /server to move. If a backend works when you connect directly but not through the proxy, forwarding is the problem — not the backend.

How to confirm it worked

You join the proxy, land in the lobby, run /server survival, and arrive with your correct name and skin intact.