Naar de inhoud
Actuele kortingscode:10% kortingGebruiken bij je bestelling

Een servernetwerk met Velocity: lobby, survival en minigames onder één adres

Zo koppel je meerdere Minecraft-servers met de proxy Velocity: installatie, velocity.toml regel voor regel, modern forwarding, Paper en Fabric instellen, backends beveiligen en fouten oplossen.

  • expert
  • ~40 min
  • Bijgewerkt op 2-10-2026

Velocity is een proxy waarmee spelers op één adres verbinden en daarna met het commando /server tussen servers wisselen, bijvoorbeeld van de lobby naar survival of naar de minigames. We laten zien hoe je Velocity installeert en instelt, hoe je het via het veilige modern forwarding met je servers koppelt en hoe je de servers achter de proxy zo beveiligt dat niemand er rechtstreeks op kan komen.

Wat je nodig hebt

  • Minstens twee Minecraft-servers: Paper of Purpur (versie 1.13 en nieuwer), of Fabric, Forge of NeoForge met een mod voor forwarding
  • Een plek voor de proxy: een VPS met Ubuntu 24.04 of Debian 13 (verbinden via SSH), een apart product Minecraft Proxy is bij ons in voorbereiding
  • Toegang tot de tabbladen Bestanden en Serverinstellingen van elke server
  • Ongeveer 40 minuten

Wanneer je een proxy nodig hebt#

Je wiltHeb je een proxy nodig?
Eén server voor vrienden of een communityNee
Een lobby + een of meer gameservers onder één adresJa
Verschillende spelmodi (survival, creative, minigames) waartussen je wisselt zonder de verbinding te verbrekenJa
Gedeelde chat, rechten of bans op alle serversJa (met plugins op de proxy)
Bedrock-spelers op het hele netwerkJa, Geyser draait dan alleen op de proxy

De proxy berekent het spel niet zelf, hij stuurt alleen verbindingen door. Hij vraagt weinig rekenkracht: voor tientallen spelers is 1–⁠2 GB geheugen genoeg.

Hoe het netwerk werkt#

text
Speler ──► mc.example.cz:25565  (Velocity, verifieert het account van de speler)
              │
              ├──► lobby     (Paper, online-mode=false, accepteert alleen de proxy)
              ├──► survival  (Paper, online-mode=false, accepteert alleen de proxy)
              └──► minihry   (Paper, online-mode=false, accepteert alleen de proxy)
  1. De speler verbindt met het adres van de proxy. De proxy controleert bij Microsoft of hij een origineel account heeft (online-mode = true).
  2. De proxy stuurt hem naar de eerste server uit de lijst try (de lobby).
  3. Bij het verbinden geeft de proxy de naam, het UUID, de skin en het echte IP-adres van de speler door aan de server (player info forwarding). De gegevens ondertekent hij met een geheime sleutel die alleen de proxy en jouw servers kennen.
  4. De servers achter de proxy (backends) verifiëren zelf niets (online-mode=false) en vertrouwen alleen een proxy met een geldige sleutel. Wie rechtstreeks verbindt, krijgt de melding This server requires you to connect with Velocity.

Proxy, servers en domein#

  • Proxy: Velocity 4.x vereist Java 25. Draai de proxy op een VPS (VPS Performance, VPS Budget). Op de proxy horen alleen plugins voor Velocity. Plugins voor Paper werken er niet op.
  • Backends: gewone Minecraft-servers. Ze kunnen bij ons draaien als aparte diensten (elk met een eigen adres en poort), of op dezelfde VPS als de proxy.
  • Domein (optioneel): spelers typen mc.example.cz in plaats van een IP-adres (Serveradres en domein).

Het product Minecraft Proxy

Een losse proxy als dienst is in voorbereiding. Die krijgt op het tabblad Opstarten de flag-preset Proxy, bedoeld voor Velocity. Gebruik tot die tijd een VPS, de stappen staan hieronder.

Velocity installeren op een VPS#

Dit geldt voor zowel Ubuntu 24.04 als Debian 13. Voer de commando's uit als root.

  1. Installeer Java 25 en het programma curl:

    bash
    apt update
    apt install openjdk-25-jre-headless curl
    • apt update – haalt de actuele pakketlijst op.
    • apt install openjdk-25-jre-headless – installeert de runtime van Java 25 zonder grafische bibliotheken (die heb je op een server niet nodig).
    • curl – een programma om bestanden van internet te downloaden (heb je het al, dan gebeurt er niets).
  2. Controleer de versie:

    bash
    java -version

    De eerste regel van de uitvoer moet 25 bevatten.

  3. Maak een gebruiker en een map voor de proxy aan:

    bash
    useradd --system --create-home --home-dir /opt/velocity --shell /usr/sbin/nologin velocity
    • useradd --system – maakt een systeemgebruiker zonder wachtwoord aan (de proxy draait niet als root).
    • --create-home --home-dir /opt/velocity – maakt de map /opt/velocity aan, waar de proxy komt te staan.
    • --shell /usr/sbin/nologin – met deze gebruiker kan niemand inloggen.
    • velocity – de naam van de gebruiker.
  4. Kopieer op de pagina papermc.io/downloads/velocity (opent in een nieuw venster) de link naar de nieuwste stabiele versie en download die:

    bash
    cd /opt/velocity
    curl -o velocity.jar "<DOWNLOAD_URL>"
    chown velocity:velocity velocity.jar
    • cd /opt/velocity – gaat naar de map van de proxy.
    • curl -o velocity.jar – downloadt het bestand en slaat het op als velocity.jar.
    • <DOWNLOAD_URL> – de link die je van de pagina hebt gekopieerd. Vervang hem helemaal, inclusief de punthaken, en laat de aanhalingstekens staan.
    • chown velocity:velocity – het bestand wordt eigendom van de gebruiker velocity.
  5. Start de proxy voor de eerste keer, zodat hij zijn configuratie aanmaakt:

    bash
    runuser -u velocity -- env MALLOC_ARENA_MAX=2 java -Xms1G -Xmx1G -XX:MaxDirectMemorySize=512M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -jar velocity.jar
    • runuser -u velocity -- – voert het commando na -- uit als de gebruiker velocity.
    • env MALLOC_ARENA_MAX=2 – beperkt de geheugenarena's van de allocator, zodat de proxy niet onnodig extra geheugen inneemt.
    • -Xms1G -Xmx1G – de proxy krijgt 1 GB heap (in één keer, hij hoeft hem tijdens het draaien niet te vergroten). Verhoog dit voor een groter netwerk naar 2G. De proxy heeft ook buiten de heap veel geheugen nodig voor het netwerk. Geef hem daarom niet meer dan de helft van het geheugen dat je voor hem beschikbaar hebt.
    • -XX:MaxDirectMemorySize=512M – de bovengrens voor netwerkbuffers. Zonder die grens kunnen ze groeien tot de grootte van de heap.
    • -XX:+UseG1GC … -XX:+AlwaysPreTouch – flags die de documentatie van Velocity aanbeveelt (de garbage collector G1, afgestemd op een proxy).
    • -jar velocity.jar – start de proxy.

    Een commando voor een andere geheugengrootte maakt de Startscript-generator voor je.

    Na het starten zie je de regel Done (…)!. Typ end en druk op Enter, dan sluit de proxy af. In de map staan nu de bestanden velocity.toml en forwarding.secret.

  6. Wil je dat de proxy permanent draait en na een herstart van de VPS vanzelf start, maak er dan een systemd-service voor aan volgens de handleiding Een applicatie 24/7 op een VPS. Zet in het unit-bestand User=velocity, WorkingDirectory=/opt/velocity, Environment=MALLOC_ARENA_MAX=2 en bij ExecStart het commando uit stap 5 zonder runuser -u velocity -- env MALLOC_ARENA_MAX=2 en met het volledige pad naar Java, dus beginnend met /usr/bin/java -Xms1G ….

  7. Sta de poort van de proxy toe in de firewall van de VPS: TCP 25565 (en de UDP-poort van Geyser, als je die gaat gebruiken). Zie Firewall in je klantaccount en UFW.

velocity.toml#

Open het bestand /opt/velocity/velocity.toml (bijvoorbeeld met nano /opt/velocity/velocity.toml). Een voorbeeld met de instellingen voor een netwerk van drie servers (laat de rest van het bestand staan):

/opt/velocity/velocity.tomlTOML
bind = "0.0.0.0:25565"
motd = "<gold><bold>StormCraft</bold></gold> <gray>| lobby, survival, minihry"
show-max-players = 100
online-mode = true
force-key-authentication = true
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"

[servers]
lobby = "203.0.113.10:30066"
survival = "203.0.113.11:30067"
minihry = "203.0.113.12:30068"

try = [
    "lobby"
]

[forced-hosts]
"survival.example.cz" = [
    "survival"
]
InstellingWat het doetAanbevolen waardeWanneer wijzigen
config-versionDe versie van het bestandsformaat.Niet wijzigenNooit, Velocity beheert dit zelf.
bindHet IP-adres en de poort waarop de proxy luistert."0.0.0.0:25565"Een andere poort, als je 25565 niet wilt of niet kunt gebruiken.
motdDe beschrijving in de serverlijst. In het formaat MiniMessage (<gold>, <bold>, <#09add3>), geen §-codes.Je eigen beschrijvingWanneer je maar wilt.
show-max-playersHoeveel slots de serverlijst toont. Velocity beperkt het aantal spelers niet, het is alleen een getal.Bijv. 100Afhankelijk van de grootte van het netwerk.
online-modeDe proxy verifieert de accounts van spelers bij Microsoft.trueNooit op een openbare server.
force-key-authenticationVereist van spelers een sleutel voor het ondertekenen van de chat.truefalse als Geyser op de proxy draait (Bedrock-spelers kunnen anders niet in de chat typen).
prevent-client-proxy-connectionsVerbreekt de verbinding met een speler van wie de internetprovider niet overeenkomt met wat de verificatieserver ziet. Zwakke bescherming tegen VPN's.falseLaat dit staan.
player-info-forwarding-modeHoe de proxy de gegevens van spelers doorgeeft: none (niets, spelers krijgen een offline UUID), legacy (het formaat van BungeeCord, onbeveiligd), bungeeguard (legacy met een sleutel), modern (het ondertekende formaat van Velocity, versie 1.13+)."modern"legacy/bungeeguard alleen voor servers op 1.12 en ouder.
forwarding-secret-fileHet bestand met de geheime sleutel voor forwarding."forwarding.secret"Niet wijzigen.
announce-forgeDe proxy meldt zich in de serverlijst als Forge-server.falsetrue bij een netwerk van gemodde servers.
kick-existing-playersLogt hetzelfde account een tweede keer in, dan wordt de eerste verbinding verbroken (het gedrag van Vanilla).falsetrue als spelers dat verwachten.
[servers]De lijst met backends in de vorm naam = "IP:poort". De naam zien spelers in /server.De adressen van je serversAls je een server toevoegt of verplaatst.
tryDe volgorde van de servers waar de proxy een speler naartoe probeert te sturen na het verbinden of nadat hij van een server is gekickt.["lobby"]Voeg een reserveserver toe waar spelers terechtkomen als de lobby niet draait.
[forced-hosts]Stuurt een speler op basis van het adres dat hij heeft ingevoerd direct naar een bepaalde server (wie survival.example.cz invoert, komt meteen op de server survival).Naar behoefteAls je voor elke server een eigen subdomein wilt. Het domein moet naar de proxy wijzen.

Uit de secties [advanced] en [query] zijn drie instellingen de moeite waard:

Sectie en instellingWat het doetAanbevolen waardeWanneer wijzigen
[advanced] › login-ratelimitDe minimale tussentijd (ms) tussen verbindingen vanaf één IP-adres.3000Niet wijzigen, dit beschermt tegen overbelasting.
[advanced] › failover-on-unexpected-server-disconnectCrasht een backend, dan stuurt de proxy de speler naar een andere server in plaats van de verbinding te verbreken.trueLaat dit staan.
[query] › enabledBeantwoordt Query-verzoeken (GameSpy4).falseAls een website met statistieken het nodig heeft.

Velocity 3 en 4

In versie 4 staat in plaats van de regel ping-passthrough = "DISABLED" een aparte sectie [ping-passthrough] met de schakelaars version, players, description, favicon en modinfo. Die bepalen wat de proxy in de serverlijst overneemt van de backend. Standaard staat alles uit en geldt de motd uit velocity.toml.

De geheime sleutel voor forwarding#

Bij de eerste start maakt Velocity het bestand forwarding.secret aan met een willekeurige sleutel van 12 tekens. We raden aan die te vervangen door een langere:

  1. Genereer een willekeurig wachtwoord van 32 of meer tekens (letters en cijfers) in de wachtwoordgenerator.
  2. Zet het als enige regel in /opt/velocity/forwarding.secret (bijvoorbeeld met nano).
  3. Dezelfde sleutel vul je daarna in op alle backends.

De sleutel is als het wachtwoord van een beheerder

Wie forwarding.secret en het adres van een backend kent, kan daarop verbinden onder de naam van elke speler, ook die van jou. Stuur de sleutel naar niemand, zet hem niet in openbare repository's en vervang hem bij een vermoeden van een lek op de proxy en op alle backends.

Backends instellen (Paper en Purpur)#

Bij elke server achter de proxy:

  1. Zet op het tabblad Serverinstellingen in de groep Spelers de optie Accountverificatie uit (online-mode=false) en klik op Opslaan.

    Je klantaccount toont een waarschuwing dat iedereen kan verbinden. Achter een proxy met modern forwarding klopt dat: de proxy doet de verificatie en de server accepteert alleen spelers met een geldige sleutel.

  2. Open op het tabblad Bestanden het bestand spigot.yml en controleer of settings.bungeecord op false staat:

    spigot.ymlYAML
    settings:
      bungeecord: false
    • bungeecord – schakelt forwarding in het formaat van BungeeCord (legacy) in. Voor modern forwarding moet dit uit staan.
  3. Open config/paper-global.yml en stel in de sectie proxies het volgende in:

    config/paper-global.ymlYAML
    proxies:
      velocity:
        enabled: true
        online-mode: true
        secret: "<SECRET>"

    Zet op de plek van <SECRET> de inhoud van het bestand forwarding.secret van de proxy. Vervang hem helemaal, inclusief de punthaken, en laat de aanhalingstekens staan.

  4. Herstart de server.

Wat de instellingen in paper-global.yml betekenen:

InstellingWat het doetAanbevolen waardeWanneer wijzigen
proxies.velocity.enabledDe server accepteert modern forwarding van Velocity en weigert rechtstreekse verbindingen.trueAlleen als je de proxy opheft.
proxies.velocity.online-modeMoet overeenkomen met online-mode in velocity.toml. Bepaalt welke UUID's spelers krijgen.trueNooit, zolang de proxy spelers verifieert.
proxies.velocity.secretDezelfde sleutel als in forwarding.secret op de proxy.De inhoud van forwarding.secretAls je de sleutel vervangt.

Op Paper 1.18.2 en ouder staan deze instellingen in het bestand paper.yml onder de namen settings.velocity-support.enabled, settings.velocity-support.online-mode en settings.velocity-support.secret.

Fabric, Forge en NeoForge#

LoaderWat je installeertWaar je de sleutel invult
FabricDe mod FabricProxy-Lite (van Modrinth, vereist Fabric API)config/FabricProxy-Lite.toml, de regel secret = "<SECRET>"
Forge, NeoForgeDe mod ProxyCompatibleForgeHet configuratiebestand van de mod in de map config (volgens de beschrijving van de mod op Modrinth)

De instellingen van FabricProxy-Lite:

InstellingWat het doetAanbevolen waardeWanneer wijzigen
secretDe sleutel uit forwarding.secret.De inhoud van forwarding.secretAls je de sleutel vervangt.
hackOnlineModeStaat verbindingen via de proxy toe, ook als online-mode op de backend aan staat.true (standaard)Laat dit staan.
hackEarlySendStuurt de gegevens van de speler eerder. LuckPerms heeft dit nodig, net als enkele andere mods.true als je LuckPerms gebruiktAnders de standaardwaarde false.
hackMessageChainVerhelpt dat spelers na het wisselen naar een andere server worden gekickt met een melding over een ongeldige chathandtekening.falsetrue als spelers na /server worden gekickt vanwege de chathandtekening.

Backends beveiligen#

Een backend met online-mode=false zonder werkende forwarding zou iedereen binnenlaten onder elke gewenste naam. Wat je doet, hangt af van waar de servers draaien:

  • Backends bij ons (aparte diensten): het adres en de poort stellen wij automatisch in (server-ip kun je niet wijzigen), de servers zijn dus bereikbaar vanaf internet. De bescherming komt van modern forwarding: met proxies.velocity.enabled: true weigert de server iedereen die niet via de proxy met een geldige sleutel binnenkomt. Gebruik daarom nooit legacy of none.
  • Backends op dezelfde VPS als de proxy: stel in server.properties van elke backend server-ip=127.0.0.1 in en vul in velocity.toml de adressen 127.0.0.1:<PORT> in. De servers zijn dan van buitenaf helemaal niet bereikbaar. Sta in de firewall van de VPS alleen de poort van de proxy toe.
  • Backends op een andere VPS: sta in de firewall van de backend de poort van de server alleen toe vanaf het IP-adres van de proxy (Firewall in je klantaccount).

Wisselen tussen servers en plugins op de proxy#

CommandoWat het doetRecht
/serverLaat zien op welke server je zit en biedt de andere aan.velocity.command.server (standaard heeft iedereen dit)
/server survivalWisselt naar de server survival.Hetzelfde
/glistHet aantal spelers op de proxy, met all een overzicht per server.velocity.command.glist (standaard niemand)
/send <NICK> <SERVER>Verplaatst een speler naar een andere server.velocity.command.send
velocity reloadLaadt velocity.toml opnieuw (in de console van de proxy).velocity.command.reload
shutdownSluit de proxy af (alleen in de console).–

Plugins op de proxy (in de map /opt/velocity/plugins, de versie voor Velocity):

  • LuckPerms – rechten voor de commando's van de proxy. Voor rechten op de servers moet LuckPerms ook op elke backend staan en moeten alle instanties dezelfde MySQL/MariaDB-database gebruiken (MySQL voor plugins). Stel op elke backend in de configuratie van LuckPerms een andere server in (bijvoorbeeld lobby, survival), zodat je rechten per server kunt geven, en messaging-service: sql, zodat wijzigingen meteen op alle servers gelden. Meer in de handleiding LuckPerms.
  • Geyser en Floodgate – Bedrock-spelers, installeer ze alleen op de proxy (handleiding).
  • spark – profilering van de proxy, het commando sparkv.

Controle#

  1. Start de proxy en de backends. In de console van de proxy zie je Listening on …:25565 en Done (…)!.
  2. Verbind in het spel met het adres van de proxy. Je komt op de server lobby terecht.
  3. Typ /server survival: je wisselt van server zonder dat de verbinding wordt verbroken.
  4. Controleer in de console van de backend de regel met jouw verbinding: daar moet je echte IP-adres in staan, niet het adres van de proxy. Dan werkt forwarding. De console in je klantaccount verbergt IP-adressen in de standaard ingeschakelde streamermodus. Klik voor deze controle bovenaan op Gegevens tonen.
  5. Probeer rechtstreeks met het adres van een backend te verbinden. Je moet This server requires you to connect with Velocity. krijgen.

Als iets niet werkt#

Your server did not send a forwarding request to the proxy. Make sure the server is configured for Velocity forwarding.#

Op de backend staat modern forwarding niet aan. Controleer proxies.velocity.enabled: true in config/paper-global.yml (bij Fabric FabricProxy-Lite) en of je de server na de wijziging hebt herstart.

Unable to verify player details#

De sleutel op de backend komt niet overeen met forwarding.secret op de proxy. Kopieer hem opnieuw (zonder extra spaties of lege regels) en herstart de backend.

This server requires you to connect with Velocity.#

Je verbindt rechtstreeks met de backend. Dat klopt, de server is beschermd. Zie je de melding ook als je via de proxy verbindt, dan staat player-info-forwarding-mode op de proxy op iets anders dan modern.

Unable to connect you to lobby. Please try again later.#

De proxy kon de backend niet bereiken: de server draait niet, het adres of de poort in [servers] komt niet overeen met het adres op het tabblad Netwerk van die server, of een firewall blokkeert de verbinding.

There are no available servers to connect you to. Try again later or contact an admin.#

Geen enkele server uit de lijst try is bereikbaar. Start de lobby of voeg een reserveserver toe aan try.

Spelers hebben na de overstap naar de proxy een lege inventaris en andere rechten#

De spelers hebben een ander UUID gekregen. De oorzaak is player-info-forwarding-mode = "none" (offline UUID's) of een verschil tussen online-mode op de proxy en proxies.velocity.online-mode op de backend. Stel modern forwarding in en zet beide waarden op true. De gegevens onder de oude UUID's blijven in de bestanden van de wereld en de plugins staan. Maak een back-up voordat je een groot netwerk naar een proxy overzet.

De proxy laat Bedrock-spelers niet binnen of ze kunnen niet typen#

Zie Crossplay met Bedrock: Geyser moet op de proxy staan en in velocity.toml moet force-key-authentication uit staan.

Samenvatting

  • Spelers verbinden alleen met de proxy, de proxy verifieert de accounts (online-mode = true) en de backends hebben online-mode=false.
  • Gebruik altijd player-info-forwarding-mode = "modern" en op de backends proxies.velocity.enabled: true met dezelfde sleutel uit forwarding.secret.
  • forwarding.secret is geheim, vervang hem door een lange willekeurige sleutel.
  • Velocity 4 vereist Java 25, plugins op de proxy moeten voor Velocity gemaakt zijn.
  • Controleer of een rechtstreekse verbinding met een backend eindigt met de melding This server requires you to connect with Velocity.

Was deze handleiding nuttig?

Geldt voor

  • Velocity 4.x
  • Paper 1.13 en nieuwer
  • Fabric (FabricProxy-Lite)
  • Forge, NeoForge (ProxyCompatibleForge)
  • Ubuntu 24.04
  • Debian 13

Diensten

Fout in de handleiding melden

Zoeken in de handleidingen