×minecraft.pl-15%na hosting MinecraftDDoS · VPS · DedicatedKOD:MCPLAktywuj →
-15%na hosting dla minecraft.pl
DDoS · VPS · DEDICATED · skillhost.pl
MCPLAktywuj →
Discord
Serwery — Administracja

Velocity — nowoczesny proxy do Minecrafta

Velocity to proxy nowej generacji stworzony przez zespół PaperMC. Wydajniejszy od BungeeCord, bezpieczniejszy dzięki modern forwarding i aktywnie rozwijany. Jeśli budujesz sieć serwerów Minecraft, Velocity to jedyna słuszna odpowiedź.

Czym jest proxy w Minecraftcie

Proxy w Minecraftcie to serwer pośredniczący, który przyjmuje połączenia graczy i kieruje ich do serwerów backend — gry właściwej. Gracz łączy się z jednym adresem IP, a proxy decyduje, na którym serwerze faktycznie ląduje. Dzięki temu można budować sieci złożone z dziesiątek lub setek osobnych instancji gry, a gracze widzą je jako jeden spójny serwer.

Bez proxy każdy serwer backend byłby osobnym adresem. Gracze musieliby się rozłączać i łączyć ponownie, żeby przejść z lobby do gry. Z proxy przejście jest natychmiastowe — podobnie jak teleportacja. Sieć proxy to standard na dużych serwerach: Hypixel, Mineplex, CubeCraft — wszystkie działają w tym modelu.

Proxy obsługuje też wspólny czat, globalne komendy administracyjne i uwierzytelnianie — gracz loguje się raz na proxy, a jego tożsamość jest przekazywana do każdego serwera backend.

Velocity vs BungeeCord — porównanie

BungeeCord przez lata był jedynym poważnym wyborem dla sieci Minecraft. Velocity zmienia tę sytuację gruntownie. Oto kluczowe różnice:

Wydajność

Velocity zostało napisane z myślą o wydajności od podstaw. Używa innego modelu sieciowego niż BungeeCord — zamiast jednego wątku na połączenie, stosuje asynchroniczne I/O oparte na Netty. W praktyce Velocity obsługuje więcej jednoczesnych połączeń przy mniejszym zużyciu pamięci i CPU. Na sieci z kilkudziesięcioma graczami różnica jest subtelna. Na sieci z tysiącami graczy — kolosalna.

Bezpieczeństwo — modern forwarding

To najważniejsza przewaga Velocity. BungeeCord używa IP forwarding — serwer backend po prostu ufa nagłówkowi z adresem IP i UUID gracza przekazanemu przez proxy. To poważna luka: każdy, kto zna adres serwera backend i może się z nim połączyć bezpośrednio, może podać dowolny UUID i wejść jako administrator.

Velocity rozwiązuje ten problem przez modern forwarding. Każdy serwer backend posiada wspólny sekret (klucz HMAC) z proxy. Dane gracza są podpisane tym kluczem — bez znajomości sekretu nie da się sfałszować tożsamości. To fundamentalna zmiana w modelu bezpieczeństwa.

Aktywny rozwój

BungeeCord praktycznie nie jest rozwijany. Waterfall (fork BungeeCord) był utrzymywany przez Paper team, ale w 2022 roku oficjalnie zakończył wsparcie, rekomendując przejście na Velocity. Velocity jest aktywnie rozwijane, regularnie aktualizowane pod nowe wersje Minecrafta i ma rosnący ekosystem pluginów.

Kompatybilność

Velocity nie jest kompatybilne z pluginami BungeeCord. Ma własne API. To wadą przy migracji, ale zaletą w dłuższej perspektywie — API Velocity jest znacznie lepiej zaprojektowane i stabilniejsze.

Wniosek: Jeśli zaczynasz nową sieć — wybierz Velocity bez zastanowienia. Jeśli masz istniejącą sieć na BungeeCord — zaplanuj migrację. BungeeCord to technologiczny dług, który będzie rosnąć.

Instalacja Velocity

Velocity jest dystrybuowane jako pojedynczy plik JAR. Instalacja jest prosta, ale wymaga kilku kroków, żeby sieć działała poprawnie.

Wymagania

  • Java 17 lub nowsza (zalecana Java 21 LTS)
  • Dedykowany port dla proxy (domyślnie 25565)
  • Osobne porty dla każdego serwera backend (np. 25566, 25567...)
  • Co najmniej 512 MB RAM dla samego proxy (zależy od skali)

Pobieranie i uruchomienie

Plik JAR Velocity pobierzesz ze strony PaperMC (papermc.io/downloads/velocity). Zawsze pobieraj najnowszą stabilną wersję. Po pobraniu utwórz osobny katalog dla proxy i umieść tam plik.

Pierwsze uruchomienie tworzy strukturę plików konfiguracyjnych:

java -Xms512M -Xmx512M -jar velocity-*.jar

Po chwili Velocity wygeneruje velocity.toml, forwarding.secret i katalog plugins/. Zatrzymaj proxy (Ctrl+C) i przejdź do konfiguracji.

Skrypt startowy

Na serwerze produkcyjnym używaj skryptu startowego zamiast uruchamiać proxy ręcznie. Przykładowy start.sh:

#!/bin/bash
java -Xms512M -Xmx1G \
  -XX:+UseG1GC \
  -XX:G1HeapRegionSize=4M \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+ParallelRefProcEnabled \
  -XX:+AlwaysPreTouch \
  -jar velocity-*.jar

Velocity jest lekkie — 512 MB do 1 GB RAM wystarczy nawet dla setek graczy. Proxy nie przetwarza logiki gry, tylko przekazuje pakiety.

Konfiguracja velocity.toml

Główny plik konfiguracyjny Velocity to velocity.toml. Poniżej omówienie najważniejszych sekcji.

Podstawowe ustawienia

# Adres i port, na którym nasłuchuje proxy
bind = "0.0.0.0:25565"

# Nazwa wyświetlana w liście serwerów
motd = "&aMoja siec Minecraft"

# Maksymalna liczba graczy (0 = bez limitu)
show-max-players = 100

# Tryb forwarding — KLUCZOWE ustawienie
player-info-forwarding-mode = "modern"

# Czy proxy ma umożliwiać grę w trybie offline (cracked)?
online-mode = true

Sekcja servers

Tu definiujesz wszystkie serwery backend dostępne w sieci:

[servers]
lobby = "127.0.0.1:25566"
survival = "127.0.0.1:25567"
minigry = "127.0.0.1:25568"

# Serwery, do których trafia gracz po zalogowaniu (w kolejności prób)
try = ["lobby"]

Sekcja forced-hosts

Forced hosts pozwalają kierować graczy do konkretnego serwera na podstawie adresu, z którego się łączą. Przydatne jeśli masz kilka subdomen wskazujących na ten sam IP:

[forced-hosts]
"survival.mojserwer.pl" = ["survival"]
"minigry.mojserwer.pl" = ["minigry"]

Sekcja advanced

[advanced]
# Rozmiar kolejki kompresji (bajty). Pakiety powyżej tej wartości są kompresowane
compression-threshold = 256

# Poziom kompresji (0-9, -1 = domyślny)
compression-level = -1

# Timeout logowania (ms)
login-ratelimit = 3000

# Maksymalna liczba graczy z tego samego IP
connection-throttle = 4000

Dodawanie serwerów backend

Serwery backend to właściwe serwery gry — lobby, survival, minigry, etc. Każdy z nich musi być skonfigurowany tak, żeby akceptował połączenia tylko z proxy, nie bezpośrednio od graczy.

Konfiguracja serwera Paper jako backend

Każdy serwer backend musi mieć:

  • Własny port (inny niż proxy i inne backendy)
  • Tryb offline (online-mode=false w server.properties) — uwierzytelnianie obsługuje proxy
  • Nasłuchiwanie tylko na localhost — nie udostępniaj portów backendów publicznie

W server.properties każdego backendu:

online-mode=false
server-port=25566
server-ip=127.0.0.1

Ważne: Ustawienie server-ip=127.0.0.1 sprawia, że serwer backend nasłuchuje tylko na interfejsie lokalnym. Gracze nie mogą się z nim połączyć bezpośrednio — tylko proxy, działające na tym samym hoście, ma dostęp. Jeśli backendy są na różnych maszynach, użyj firewalla.

Wiele maszyn w sieci

Jeśli proxy i serwery backend działają na różnych maszynach, w velocity.toml wpisz prywatne IP serwera backend:

[servers]
lobby = "192.168.1.10:25566"
survival = "192.168.1.11:25566"

Backendy na osobnych maszynach powinny mieć reguły firewalla blokujące port 25566 dla wszystkich oprócz IP proxy. Publiczny dostęp do portów backendów to krytyczna luka bezpieczeństwa.

Forwarding — modern vs legacy

Forwarding to mechanizm przekazywania tożsamości gracza (UUID, nazwa, IP) z proxy do serwera backend. Velocity oferuje trzy tryby: none, legacy i modern.

Modern forwarding (zalecane)

Modern forwarding używa kryptograficznego podpisu HMAC opartego na sekrecie przechowywanym w pliku forwarding.secret. Serwer backend weryfikuje podpis przed zaakceptowaniem danych gracza. Bez znajomości sekretu nie da się podszyć pod innego gracza, nawet mając bezpośredni dostęp do portu backendu.

Konfiguracja modern forwarding wymaga Paper (lub forka Paper, np. Purpur) w wersji 1.13+. Vanilla i CraftBukkit nie wspierają tego trybu.

Kroki konfiguracji:

  1. W velocity.toml ustaw: player-info-forwarding-mode = "modern"
  2. Skopiuj zawartość pliku forwarding.secret — będziesz potrzebować tego klucza na każdym backendzie
  3. Na każdym serwerze Paper edytuj config/paper-global.yml:
proxies:
  velocity:
    enabled: true
    online-mode: true
    secret: "TWOJ_SEKRET_Z_FORWARDING_SECRET"

Sekcja proxies.velocity pojawi się w pliku dopiero po pierwszym uruchomieniu Paper z włączoną obsługą proxy.

Legacy forwarding (BungeeCord compatibility)

Tryb legacy emuluje zachowanie BungeeCord — dane gracza są przekazywane w nagłówku połączenia bez kryptograficznego podpisu. Używaj tego trybu tylko jeśli masz serwery backend, które nie wspierają modern forwarding (starsze wersje, pluginy wymagające BungeeCord API).

W trybie legacy musisz bezwzględnie zablokować bezpośredni dostęp do portów backendów — brak podpisu kryptograficznego oznacza, że każdy może podszyć się pod dowolnego gracza.

Tryb none

Bez forwardingu serwery backend nie wiedzą nic o prawdziwej tożsamości gracza — każdy połączony gracz jest anonimowy z perspektywy backendu. Używany tylko w bardzo specyficznych scenariuszach (np. publiczne proxy dla serwerów, które nie należą do właściciela proxy).

Pluginy Velocity

Ekosystem pluginów Velocity rośnie szybko. Instalacja jest prosta — wrzuć plik JAR do katalogu plugins/ i uruchom proxy. Oto najważniejsze pluginy:

LimboFilter

Jeden z najważniejszych pluginów bezpieczeństwa. LimboFilter weryfikuje graczy przed wpuszczeniem do sieci, używając technik anty-bot: puzzle matematyczne, analizę ruchu sieciowego, CAPTCHA. Chroni sieć przed atakami botów, które mogą przeciążyć serwer lub wykraść zasoby. Wymagany na każdej publicznej sieci.

LimboAuth

Autoryzacja graczy bezpośrednio na poziomie proxy, w lekkim środowisku Limbo (serwer bez logiki gry). Gracz po połączeniu trafia do Limbo, gdzie musi się zalogować — dopiero po autoryzacji proxy kieruje go do właściwego backendu. Eliminuje problemy z autoryzacją na każdym backendzie osobno.

MiniPlaceholders

Rozszerzone placeholdery dla Velocity — zmienne, które możesz używać w wiadomościach, MOTD i innych miejscach. Podstawa dla wielu innych pluginów korzystających z dynamicznych tekstów.

VelocityPteroPower

Integracja z Pterodactyl Panel — automatycznie uruchamia serwery backend, gdy gracz próbuje się na nie połączyć, i zatrzymuje je po opustoszeniu. Idealne dla sieci z wieloma serwerami, gdzie nie wszystkie muszą działać cały czas.

SignedVelocity

Obsługa podpisanych wiadomości czatu (wprowadzonych w Minecraft 1.19). Bez tego pluginu wiadomości czatu mogą być blokowane przez serwery backend wymagające podpisów.

Kickredirect

Kiedy serwer backend wyrzuca gracza (restarty, błędy), zamiast wyrzucać go z sieci, plugin automatycznie przenosi go do lobby lub innego serwera. Znacząco poprawia doświadczenie gracza.

Uwaga: Pluginy BungeeCord nie działają na Velocity. Przed instalacją sprawdź, czy plugin ma wersję dla Velocity (Velocity API). Większość popularnych rozwiązań ma oddzielne porty — szukaj nazwy pluginu + "velocity" na Modrinth lub Hangar.

Bezpieczeństwo sieci

Velocity dostarcza solidne fundamenty bezpieczeństwa, ale poprawna konfiguracja całej sieci wymaga dodatkowych kroków.

Modern forwarding jako podstawa

Jak wspomniano wcześniej, modern forwarding z kryptograficznym podpisem HMAC to pierwsza linia obrony. Bez niego każdy, kto uzyska dostęp do portu backendu (nawet przez przypadek, jeśli firewall jest źle skonfigurowany), może grać jako dowolny gracz, w tym administracja.

Firewall — obowiązkowy

Porty serwerów backend muszą być niedostępne z zewnątrz. Konfiguracja server-ip=127.0.0.1 w server.properties to niewystarczające zabezpieczenie samo w sobie — dodaj reguły firewalla blokujące porty backendów dla ruchu zewnętrznego:

# Zezwól tylko na lokalny dostęp do portów backendów
ufw deny 25566
ufw deny 25567
ufw allow 25565  # tylko port proxy jest publiczny

Ochrona przed DDoS i botami

Duże sieci są regularnym celem ataków DDoS i botów. Velocity samo w sobie nie ma zaawansowanej ochrony anty-DDoS — potrzebujesz:

  • LimboFilter — anty-bot na poziomie proxy (puzzle, analiza ruchu)
  • TCPShield lub podobny CDN — ukrywa prawdziwy IP serwera, filtruje DDoS
  • Fail2ban — blokuje IP po zbyt wielu nieudanych próbach połączenia
  • Ustawienie connection-throttle w velocity.toml — limit połączeń z jednego IP

Aktualizacje

Velocity regularnie łata luki bezpieczeństwa. Subskrybuj powiadomienia o wydaniach na GitHubie PaperMC i aktualizuj proxy po każdym security release. Przestarzałe wersje Velocity mogą zawierać znane exploity.

Logi i monitoring

Włącz logowanie połączeń i regularnie przeglądaj logi. Velocity loguje próby połączeń, błędy i zdarzenia proxy. Narzędzia jak Grafana + Prometheus z eksporterem Velocity pozwalają wizualizować ruch i wykrywać anomalie w czasie rzeczywistym.

Skalowanie sieci

Velocity jest zaprojektowany do skalowania — zarówno w pionie (więcej zasobów dla jednego proxy), jak i w poziomie (wiele instancji proxy za load balancerem).

Pionowe skalowanie

Dla większości sieci jedno proxy Velocity wystarczy nawet dla kilku tysięcy jednoczesnych graczy. Proxy nie przetwarza logiki gry — głównym zasobem jest przepustowość sieci i RAM. Dla 1000 graczy przydziel 2-4 GB RAM. Velocity efektywnie używa wielowątkowości, więc więcej rdzeni CPU przekłada się na lepszą wydajność.

Poziome skalowanie — wiele proxy

Przy bardzo dużej skali (dziesiątki tysięcy graczy) możesz uruchomić wiele instancji Velocity za load balancerem (np. HAProxy lub AWS ELB). Wymaga to synchronizacji sesji graczy między instancjami — do tego służy Redis.

W takim układzie gracze mogą połączyć się z dowolną instancją proxy, a Redis przechowuje globalny stan sesji. Pluginy takie jak Velocity-Redis-Bungee lub dedykowane rozwiązania obsługują tę synchronizację.

Struktura typowej sieci

Standardowa architektura sieci Minecraft wygląda następująco:

  • Warstwa proxy: 1-N instancji Velocity (publiczne IP, port 25565)
  • Lobby: 1-N serwerów Paper/Purpur (brak publicznego dostępu)
  • Serwery gry: survival, minigry, skywars, etc. (brak publicznego dostępu)
  • Baza danych: MySQL/PostgreSQL dla danych graczy, Redis dla cache i synchronizacji

Automatyczne skalowanie serwerów backend

Na dużych sieciach nie wszystkie serwery gry muszą działać cały czas. Możesz używać Pterodactyl API lub własnych skryptów, żeby uruchamiać nowe instancje gdy kolejki są pełne i wyłączać je gdy pusteją. Velocity obsługuje dynamiczne dodawanie i usuwanie serwerów backend bez restartu proxy.

Porady i dobre praktyki

Testuj konfigurację lokalnie

Przed wdrożeniem na produkcję zawsze testuj sieć lokalnie: proxy + minimum dwa serwery backend. Sprawdź przełączanie serwerów, forwarding UUID, czat globalny. Błędy konfiguracji wykryte lokalnie to oszczędność czasu i reputacji.

Monitoring i alerty

Skonfiguruj alert gdy serwer backend przestaje odpowiadać. Velocity nie wyłącza się przy awarii backendu — gracze na tym serwerze zostaną rozłączeni lub przeniesieni (zależnie od konfiguracji Kickredirect), ale proxy działa dalej. Monitoring pozwoli Ci szybko zareagować.

Aktualizacje bez downtime

Velocity wspiera przeładowanie konfiguracji bez restartu komendą /velocity reload. Większość zmian w velocity.toml można zastosować bez rozłączania graczy. Wyjątkiem są zmiany portu bindowania i trybu forwarding — te wymagają pełnego restartu proxy.

Wersje Minecrafta

Velocity obsługuje wiele wersji klienta jednocześnie dzięki pluginom takim jak ViaVersion zainstalowanym na backendach lub bezpośrednio na proxy. Gracz z Minecraft 1.16 może połączyć się z serwerem działającym na 1.21 — ViaVersion automatycznie tłumaczy protokół. To ważne dla dostępności — nie wszyscy gracze aktualizują klienta natychmiast po nowym wydaniu.

Nazewnictwo serwerów

Nazwy serwerów w velocity.toml (np. lobby, survival) to wewnętrzne identyfikatory używane przez pluginy i komendy takie jak /server. Wybierz krótkie, jednoznaczne nazwy bez spacji i polskich znaków. Gracze zobaczyć je mogą przez pluginy zarządzające siecią.

Dokumentuj swoją konfigurację

Sieć serwerów Minecraft to złożony system. Dokumentuj porty, role serwerów, zainstalowane pluginy i ważne decyzje konfiguracyjne. Plik README w katalogu proxy zaoszczędzi Ci wielu godzin debugowania po dłuższej przerwie od administrowania.

Zanim zaczniesz: Przeczytaj nasz poradnik o stawianiu serwera jeśli dopiero zaczynasz przygodę z administracją. Velocity to narzędzie dla sieci wielu serwerów — najpierw postaw i skonfiguruj jeden działający serwer, a dopiero potem myśl o proxy.

Powiązane strony