Własny serwer FiveM kontra dołączanie: co daje pełna kontrola
Par Benjamin D. · PDG
· Mis à jour le 7 września 2026 · Lecture 8 min
Spis treści
Serwer FiveM pod własną administracją i granie na cudzej instancji to dwa zupełnie różne doświadczenia techniczne. W pierwszym przypadku decydujesz o każdym zasobie, limicie slotów i regule moderacji. W drugim jesteś gościem, który akceptuje cudze ustawienia. Poniżej rozkładam na części to, co realnie zmienia się po stronie zasobów, konfiguracji i codziennej administracji.
Serwer FiveM po stronie gracza i po stronie administratora
Kiedy dołączasz do cudzej społeczności, twoja rola kończy się na kliencie gry. Pobierasz paczkę zasobów wysyłaną przez zdalną maszynę, ładujesz ją do pamięci i grasz według reguł, które ktoś inny zapisał w server.cfg. Nie masz wpływu na liczbę slotów, na to, jaki framework działa pod spodem, ani na to, czy administracja zdecyduje się jutro wyczyścić bazę danych i skasować twoją postać.
Administrowanie własną instancją odwraca tę relację. Masz dostęp do konsoli, systemu plików, bazy MySQL i uprawnień ACE. Każda zmiana w rozgrywce — od ekonomii, przez skrypty policji, po limit pojazdów w garażu — to edycja pliku albo rekordu w bazie, a nie prośba na Discordzie do kogoś, kto może odpowiedzieć za tydzień.
Zestawienie realnych różnic
| Obszar | Gra na cudzej instancji | Instancja pod twoją administracją |
|---|---|---|
| Zasoby (resources) | Otrzymujesz gotową paczkę, brak wglądu w kod | Pełny dostęp do katalogu resources, edycja i debug |
| Konfiguracja | Brak dostępu | server.cfg, convary, OneSync, sloty |
| Moderacja | Zgłaszasz naruszenia, czekasz na reakcję | Bany, kicki, whitelist, logi, uprawnienia ACE |
| Wydajność | Zależna od cudzej infrastruktury | Kontrolujesz obciążenie skryptów i restart |
| Dane | Postać może zniknąć wraz z projektem | Kopie zapasowe bazy i zasobów po twojej stronie |
| Aktualizacje | Narzucone | Wybierasz wersję artifacts i moment wdrożenia |
Parametry techniczne dobiera się pod liczbę graczy i wybrany framework — instancja pod 32 sloty z lekkim ESX ma inne wymagania niż projekt RP na 128 slotów z rozbudowaną ekonomią. Szczegóły infrastrukturalne opisuje strona hosting FiveM.
Kontrola nad zasobami: co dzieje się pod maską
FXServer to proces, który ładuje zasoby zdefiniowane w konfiguracji i utrzymuje stan świata dla wszystkich połączonych klientów. Każdy zasób ma swój fxmanifest.lua, deklaruje zależności i skrypty client/server/shared. Kiedy administrujesz instancją, widzisz dokładnie, ile czasu procesora zjada każdy z nich.
Monitorowanie obciążenia skryptów
Podstawowe narzędzie to wbudowany monitor zasobów. W grze otwierasz konsolę klawiszem F8 i wpisujesz:
resmon 1
Dostajesz listę zasobów z czasem wykonania w milisekundach. Interpretacja jest prosta i bezlitosna:
- 0.00–0.05 ms w bezczynności — zasób napisany poprawnie, korzysta z eventów zamiast pętli.
- 0.10–0.50 ms — akceptowalne dla skryptów aktywnych stale (HUD, minimapa).
- powyżej 1.00 ms stale — zasób ma pętlę
Citizen.Wait(0)bez warunków wyjścia i wymaga poprawki.
Po stronie serwerowej sprawdzasz obciążenie w konsoli:
status
resmon
Ta diagnostyka jest niemożliwa, kiedy grasz u kogoś. Jeśli świat zaczyna się rwać przy 60 graczach, jako gracz możesz tylko napisać zgłoszenie. Jako administrator wyłączasz podejrzany zasób jedną komendą i weryfikujesz hipotezę w trzydzieści sekund:
stop nazwa_zasobu
refresh
ensure nazwa_zasobu
Dlaczego liczy się taktowanie procesora
Główna pętla FXServer jest w dużej mierze jednowątkowa. Oznacza to, że liczba rdzeni pomaga mniej niż ich taktowanie i wydajność pojedynczego wątku. Instancja na procesorze Ryzen o wysokiej częstotliwości utrzyma stabilny tick rate przy większej liczbie skryptów niż maszyna z wieloma wolnymi rdzeniami. Do tego dochodzi dysk NVMe — baza MySQL obsługiwana przez oxmysql przy każdym zapisie inwentarza, pojazdu i transakcji generuje ruch losowy, na którym klasyczny nośnik po prostu siada. Serwery gier w Wszystkie nasze serwery gier działają w tej samej logice: szybki pojedynczy wątek plus niskie opóźnienia dyskowe.
server.cfg: plik, który definiuje rozgrywkę
To tutaj mieszka tożsamość projektu. Kolejność linii ma znaczenie — zasoby ładują się od góry do dołu, a framework musi wystartować przed skryptami, które z niego korzystają. Typowy szkielet wygląda tak:
# --- Sieć ---
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
sv_maxclients 64
sv_endpointprivacy true
# --- Tozsamosc instancji ---
sv_hostname "Nazwa projektu | PL | RP"
sets sv_projectName "Nazwa projektu"
sets sv_projectDesc "Powazny roleplay, whitelist"
sets locale "pl-PL"
sets tags "roleplay, polski, esx"
# --- Klucze ---
sv_licenseKey "TWOJ_KLUCZ_Z_KEYMASTER"
set steam_webApiKey "TWOJ_KLUCZ_STEAM"
# --- OneSync ---
set onesync on
set onesync_population true
# --- Zasoby bazowe ---
ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager
ensure hardcap
# --- Framework i baza ---
set mysql_connection_string "mysql://user:haslo@localhost/fivem?charset=utf8mb4"
ensure oxmysql
ensure es_extended
# --- Zasoby wlasne ---
ensure [standalone]
ensure [police]
ensure [jobs]
Kluczowe convary i ich konsekwencje
sv_maxclients— limit graczy. Ustawianie 128 slotów na instancji, która przy 40 osobach ma tick 40 ms, kończy się rage quitami. Zwiększaj stopniowo i obserwujresmon.onesync— bez włączonego OneSync nie przekroczysz 32 graczy i tracisz serwerową kontrolę nad encjami. To warunek każdego poważnego projektu RP.sv_endpointprivacy— ukrywa adresy IP graczy w liście publicznej. Włącz zawsze.sv_licenseKey— klucz z portalu Cfx.re, przypisany do adresu IP. Nigdy nie publikuj go na GitHubie ani na Discordzie.sv_scriptHookAllowed— pozostaw nafalse, chyba że chcesz zapraszać cheaterów.
Uprawnienia ACE zamiast list w skryptach
System ACE to natywny mechanizm uprawnień. Zamiast wpisywać identyfikatory administratorów w dziesięciu różnych zasobach, definiujesz grupy raz:
add_ace group.admin command allow
add_ace group.admin command.quit deny
add_ace group.moderator command.kick allow
add_ace group.moderator command.ban allow
add_principal identifier.fivem:1234567 group.admin
add_principal identifier.license:abc123def456 group.moderator
add_principal group.admin group.moderator
Zwróć uwagę na command.quit deny — nawet administrator nie powinien móc ubić procesu z gry. Restart wykonuje się z panelu, świadomie, po ostrzeżeniu graczy. Pełną listę convarów i mechanizmów opisuje oficjalna dokumentacja FiveM.
Praca z konsolą przez panel
W panelu Pterodactyl konsola na żywo pokazuje strumień zdarzeń serwera: połączenia, wyjątki Lua, błędy zapytań SQL. Najczęściej używane komendy:
| Komenda | Działanie |
|---|---|
refresh | Przeładowuje listę zasobów po dodaniu nowego katalogu |
ensure <zasob> | Uruchamia lub restartuje pojedynczy zasób bez restartu instancji |
stop <zasob> | Zatrzymuje zasób, przydatne przy diagnozie lagów |
status | Wypisuje listę połączonych graczy z identyfikatorami |
clientkick <id> "powod" | Rozłącza gracza z komunikatem |
quit | Zamyka proces — używaj tylko świadomie |
Moderacja i modowanie: codzienna praca administratora
Największa różnica między graczem a administratorem nie leży w konfiguracji, tylko w rutynie. Instancja żyje wtedy, gdy ktoś ją pilnuje.
Warstwa moderacyjna
Standardowy zestaw, na którym opiera się większość społeczności:
- Whitelist — najskuteczniejsze narzędzie porządkowe w projektach RP. Weryfikacja przez Discord lub formularz eliminuje 90% problemów, zanim się pojawią.
- Logi zdarzeń — wysyłka na webhook Discorda: zabicia gracza, transakcje, spawn pojazdów, usunięcia przedmiotów. Bez logów każdy spór to słowo przeciw słowu.
- Anticheat — filtrowanie eventów po stronie serwera. Zasada jest jedna: nigdy nie ufaj danym przysłanym przez klienta. Każdy event obsługujący pieniądze albo przedmioty musi walidować wartość na serwerze.
- Podkonta w panelu — moderator dostaje dostęp do konsoli i restartu, ale nie do plików konfiguracyjnych ani kopii zapasowych. Zakres uprawnień ustawiasz per osoba.
Instalacja i utrzymanie modów
Zasób dodajesz przez wgranie katalogu do resources, dopisanie linii ensure w konfiguracji i wykonanie refresh. Kilka reguł, które oszczędzają nerwów:
- Testuj każdy nowy zasób pojedynczo. Wgrywanie pięciu skryptów naraz uniemożliwia ustalenie, który wywołał błąd.
- Sprawdzaj zależności w
fxmanifest.lua— brak wpisudependency 'oxmysql'to klasyczna przyczyna wyjątku przy starcie. - Trzymaj strukturę katalogów w nawiasach kwadratowych (
[jobs],[police]) i ładuj całe grupy jedną linią. - Nigdy nie uruchamiaj zaszyfrowanych zasobów z niepewnego źródła — escrow to jedno, obfuskacja z backdoorem to drugie.
- Aktualizuj artifacts świadomie. Nowa wersja potrafi zmienić zachowanie natywów; zawsze rób kopię przed podmianą.
Kopie zapasowe i higiena bezpieczeństwa
Projekt RP to dwie rzeczy: katalog resources i baza danych. Utrata bazy oznacza reset postępu wszystkich graczy, czyli w praktyce koniec społeczności. Automatyczne kopie zapasowe uruchamiaj codziennie, a przed każdą większą zmianą wykonuj ręczny zrzut:
mysqldump -u fivem -p --single-transaction fivem_db > backup_$(date +%F).sql
Do tego kilka nawyków, które kosztują pięć minut, a ratują projekt:
- Silne, unikalne hasła do panelu i bazy, uwierzytelnianie dwuskładnikowe tam, gdzie jest dostępne.
- Klucz licencyjny i dane MySQL trzymane poza repozytorium publicznym.
- Regularna weryfikacja, czy kopia zapasowa daje się faktycznie odtworzyć — backup, którego nikt nie testował, to tylko plik.
- Ochrona przed atakami wolumetrycznymi realizowana po stronie infrastruktury, żebyś nie musiał gasić pożarów w środku eventu.
Ta sama logika administracyjna obowiązuje w innych projektach społecznościowych — jeśli prowadzisz też społeczność w klimacie Dzikiego Zachodu, znajdziesz analogiczne mechanizmy w Serwer RedM. Więcej materiałów technicznych publikujemy na Blog Fly-Serv.
Podsumowanie
Różnica sprowadza się do sprawczości. Grając u kogoś, dostosowujesz się do cudzych reguł i cudzej wydajności. Administrując instancją, masz konsolę, server.cfg, uprawnienia ACE, logi i kopie zapasowe. To więcej pracy, ale też jedyna droga do rozgrywki dokładnie takiej, jaką sobie wymyśliłeś — z ekonomią, moderacją i zasobami dopasowanymi do twojej społeczności.
FAQ
Ile slotów wytrzyma instancja FiveM z rozbudowanym frameworkiem RP?Nie ma jednej liczby — decyduje suma czasu wykonania zasobów, nie sama liczba graczy. Zacznij od sv_maxclients 48, włącz OneSync i obserwuj resmon przy pełnym obłożeniu. Jeśli żaden zasób nie przekracza 1 ms, a tick jest stabilny, podnoś limit o 16 slotów i mierz ponownie. Ciężkie skrypty inwentarza i ekonomii obniżają pułap znacznie szybciej niż liczba połączeń.
W 90% przypadków to jedna z trzech przyczyn: brak refresh po wgraniu katalogu, literówka w nazwie folderu (musi zgadzać się co do znaku), albo niespełniona zależność zadeklarowana w fxmanifest.lua. Sprawdź konsolę na żywo — FXServer wypisuje dokładny powód odrzucenia. Upewnij się też, że framework ładuje się w konfiguracji wcześniej niż zasób, który z niego korzysta.
Użyj systemu ACE zamiast wpisywania identyfikatorów w skryptach. Utwórz grupę group.moderator z wąskim zakresem komend (kick, ban, freeze), a polecenia niebezpieczne jak quit czy restart jawnie zablokuj przez deny. W panelu przydziel podkonta z dostępem wyłącznie do konsoli, bez prawa edycji plików i kopii zapasowych. Wszystkie akcje moderacyjne loguj na webhook Discorda.