← Blog

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

ObszarGra na cudzej instancjiInstancja pod twoją administracją
Zasoby (resources)Otrzymujesz gotową paczkę, brak wglądu w kodPełny dostęp do katalogu resources, edycja i debug
KonfiguracjaBrak dostępuserver.cfg, convary, OneSync, sloty
ModeracjaZgłaszasz naruszenia, czekasz na reakcjęBany, kicki, whitelist, logi, uprawnienia ACE
WydajnośćZależna od cudzej infrastrukturyKontrolujesz obciążenie skryptów i restart
DanePostać może zniknąć wraz z projektemKopie zapasowe bazy i zasobów po twojej stronie
AktualizacjeNarzuconeWybierasz 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 obserwuj resmon.
  • 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 na false, 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:

KomendaDziałanie
refreshPrzeł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
statusWypisuje listę połączonych graczy z identyfikatorami
clientkick <id> "powod"Rozłącza gracza z komunikatem
quitZamyka 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:

  1. Testuj każdy nowy zasób pojedynczo. Wgrywanie pięciu skryptów naraz uniemożliwia ustalenie, który wywołał błąd.
  2. Sprawdzaj zależności w fxmanifest.lua — brak wpisu dependency 'oxmysql' to klasyczna przyczyna wyjątku przy starcie.
  3. Trzymaj strukturę katalogów w nawiasach kwadratowych ([jobs], [police]) i ładuj całe grupy jedną linią.
  4. Nigdy nie uruchamiaj zaszyfrowanych zasobów z niepewnego źródła — escrow to jedno, obfuskacja z backdoorem to drugie.
  5. 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ń.

Dlaczego zasób nie startuje po dodaniu linii ensure?

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.

Jak bezpiecznie nadać uprawnienia moderatorom bez ryzyka nadużyć?

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.