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 wilt | Heb je een proxy nodig? |
|---|---|
| Eén server voor vrienden of een community | Nee |
| Een lobby + een of meer gameservers onder één adres | Ja |
| Verschillende spelmodi (survival, creative, minigames) waartussen je wisselt zonder de verbinding te verbreken | Ja |
| Gedeelde chat, rechten of bans op alle servers | Ja (met plugins op de proxy) |
| Bedrock-spelers op het hele netwerk | Ja, 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#
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)- De speler verbindt met het adres van de proxy. De proxy controleert bij Microsoft of hij een origineel account heeft (
online-mode = true). - De proxy stuurt hem naar de eerste server uit de lijst
try(de lobby). - 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.
- 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 meldingThis 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.czin 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.
Installeer Java 25 en het programma
curl:bash apt update apt install openjdk-25-jre-headless curlapt 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).
Controleer de versie:
bash java -versionDe eerste regel van de uitvoer moet
25bevatten.Maak een gebruiker en een map voor de proxy aan:
bash useradd --system --create-home --home-dir /opt/velocity --shell /usr/sbin/nologin velocityuseradd --system– maakt een systeemgebruiker zonder wachtwoord aan (de proxy draait niet als root).--create-home --home-dir /opt/velocity– maakt de map/opt/velocityaan, waar de proxy komt te staan.--shell /usr/sbin/nologin– met deze gebruiker kan niemand inloggen.velocity– de naam van de gebruiker.
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.jarcd /opt/velocity– gaat naar de map van de proxy.curl -o velocity.jar– downloadt het bestand en slaat het op alsvelocity.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 gebruikervelocity.
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.jarrunuser -u velocity --– voert het commando na--uit als de gebruikervelocity.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 naar2G. 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:– de bovengrens voor netwerkbuffers. Zonder die grens kunnen ze groeien tot de grootte van de heap.MaxDirectMemorySize= 512M -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 (…)!. Typenden druk op Enter, dan sluit de proxy af. In de map staan nu de bestandenvelocity.tomlenforwarding.secret.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=en bijMALLOC_ ARENA_ MAX=2 ExecStarthet commando uit stap 5 zonderrunuser -u velocity -- env MALLOC_ARENA_MAX=2en met het volledige pad naar Java, dus beginnend met/usr/bin/java -Xms1G ….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/ (bijvoorbeeld met nano /opt/). Een voorbeeld met de instellingen voor een netwerk van drie servers (laat de rest van het bestand staan):
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"
]| Instelling | Wat het doet | Aanbevolen waarde | Wanneer wijzigen |
|---|---|---|---|
config-version | De versie van het bestandsformaat. | Niet wijzigen | Nooit, Velocity beheert dit zelf. |
bind | Het 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. |
motd | De beschrijving in de serverlijst. In het formaat MiniMessage (<gold>, <bold>, <#09add3>), geen §-codes. | Je eigen beschrijving | Wanneer je maar wilt. |
show-max-players | Hoeveel slots de serverlijst toont. Velocity beperkt het aantal spelers niet, het is alleen een getal. | Bijv. 100 | Afhankelijk van de grootte van het netwerk. |
online-mode | De proxy verifieert de accounts van spelers bij Microsoft. | true | Nooit op een openbare server. |
force-key-authentication | Vereist van spelers een sleutel voor het ondertekenen van de chat. | true | false als Geyser op de proxy draait (Bedrock-spelers kunnen anders niet in de chat typen). |
prevent-client-proxy-connections | Verbreekt de verbinding met een speler van wie de internetprovider niet overeenkomt met wat de verificatieserver ziet. Zwakke bescherming tegen VPN's. | false | Laat dit staan. |
player-info-forwarding-mode | Hoe 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-file | Het bestand met de geheime sleutel voor forwarding. | "forwarding.secret" | Niet wijzigen. |
announce-forge | De proxy meldt zich in de serverlijst als Forge-server. | false | true bij een netwerk van gemodde servers. |
kick-existing-players | Logt hetzelfde account een tweede keer in, dan wordt de eerste verbinding verbroken (het gedrag van Vanilla). | false | true 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 servers | Als je een server toevoegt of verplaatst. |
try | De 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 behoefte | Als 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 instelling | Wat het doet | Aanbevolen waarde | Wanneer wijzigen |
|---|---|---|---|
[advanced] › login-ratelimit | De minimale tussentijd (ms) tussen verbindingen vanaf één IP-adres. | 3000 | Niet wijzigen, dit beschermt tegen overbelasting. |
[advanced] › failover-on-unexpected-server-disconnect | Crasht een backend, dan stuurt de proxy de speler naar een andere server in plaats van de verbinding te verbreken. | true | Laat dit staan. |
[query] › enabled | Beantwoordt Query-verzoeken (GameSpy4). | false | Als 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:
- Genereer een willekeurig wachtwoord van 32 of meer tekens (letters en cijfers) in de wachtwoordgenerator.
- Zet het als enige regel in
/opt/(bijvoorbeeld metvelocity/ forwarding. secret nano). - 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:
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.
Open op het tabblad Bestanden het bestand
spigot.ymlen controleer ofsettings.bungeecordopfalsestaat:spigot.ymlYAML settings: bungeecord: falsebungeecord– schakelt forwarding in het formaat van BungeeCord (legacy) in. Voor modern forwarding moet dit uit staan.
Open
config/paper-global.ymlen stel in de sectieproxieshet volgende in:config/ paper-global.yml YAMLproxies: velocity: enabled: true online-mode: true secret: "<SECRET>"Zet op de plek van
<SECRET>de inhoud van het bestandforwarding.secretvan de proxy. Vervang hem helemaal, inclusief de punthaken, en laat de aanhalingstekens staan.Herstart de server.
Wat de instellingen in paper-global.yml betekenen:
| Instelling | Wat het doet | Aanbevolen waarde | Wanneer wijzigen |
|---|---|---|---|
proxies.velocity.enabled | De server accepteert modern forwarding van Velocity en weigert rechtstreekse verbindingen. | true | Alleen als je de proxy opheft. |
proxies. | Moet overeenkomen met online-mode in velocity.toml. Bepaalt welke UUID's spelers krijgen. | true | Nooit, zolang de proxy spelers verifieert. |
proxies.velocity.secret | Dezelfde sleutel als in forwarding.secret op de proxy. | De inhoud van forwarding.secret | Als je de sleutel vervangt. |
Op Paper 1.18.2 en ouder staan deze instellingen in het bestand paper.yml onder de namen settings., settings. en settings..
Fabric, Forge en NeoForge#
| Loader | Wat je installeert | Waar je de sleutel invult |
|---|---|---|
| Fabric | De mod FabricProxy-Lite (van Modrinth, vereist Fabric API) | config/, de regel secret = "<SECRET>" |
| Forge, NeoForge | De mod ProxyCompatibleForge | Het configuratiebestand van de mod in de map config (volgens de beschrijving van de mod op Modrinth) |
De instellingen van FabricProxy-Lite:
| Instelling | Wat het doet | Aanbevolen waarde | Wanneer wijzigen |
|---|---|---|---|
secret | De sleutel uit forwarding.secret. | De inhoud van forwarding.secret | Als je de sleutel vervangt. |
hackOnlineMode | Staat verbindingen via de proxy toe, ook als online-mode op de backend aan staat. | true (standaard) | Laat dit staan. |
hackEarlySend | Stuurt de gegevens van de speler eerder. LuckPerms heeft dit nodig, net als enkele andere mods. | true als je LuckPerms gebruikt | Anders de standaardwaarde false. |
hackMessageChain | Verhelpt dat spelers na het wisselen naar een andere server worden gekickt met een melding over een ongeldige chathandtekening. | false | true 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-ipkun je niet wijzigen), de servers zijn dus bereikbaar vanaf internet. De bescherming komt van modern forwarding: metproxies.weigert de server iedereen die niet via de proxy met een geldige sleutel binnenkomt. Gebruik daarom nooitvelocity. enabled: true legacyofnone. - Backends op dezelfde VPS als de proxy: stel in
server.propertiesvan elke backendserver-ip=127.0.0.1in en vul invelocity.tomlde adressen127.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#
| Commando | Wat het doet | Recht |
|---|---|---|
/server | Laat zien op welke server je zit en biedt de andere aan. | velocity.command.server (standaard heeft iedereen dit) |
/server survival | Wisselt naar de server survival. | Hetzelfde |
/glist | Het 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 reload | Laadt velocity.toml opnieuw (in de console van de proxy). | velocity.command.reload |
shutdown | Sluit 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
serverin (bijvoorbeeldlobby,survival), zodat je rechten per server kunt geven, enmessaging-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#
- Start de proxy en de backends. In de console van de proxy zie je
Listening on …:25565enDone (…)!. - Verbind in het spel met het adres van de proxy. Je komt op de server
lobbyterecht. - Typ
/server survival: je wisselt van server zonder dat de verbinding wordt verbroken. - 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.
- 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. 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. 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 hebbenonline-mode=false. - Gebruik altijd
player-info-forwarding-mode = "modern"en op de backendsproxies.met dezelfde sleutel uitvelocity. enabled: true forwarding.secret. forwarding.secretis 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.
Meer bronnen#
- Velocity: eerste stappen (opent in een nieuw venster)
- Velocity: player information forwarding (opent in een nieuw venster)
- Velocity: configuratie (opent in een nieuw venster)
- Velocity: servers beveiligen (opent in een nieuw venster)
- Paper: globale configuratie (opent in een nieuw venster)
- LuckPerms: installatie op een netwerk (opent in een nieuw venster)