← Blog

Jak skonfigurować plik server.cfg w FiveM

Par Benjamin D. · PDG

· Mis à jour le 18 sierpnia 2026 · Lecture 9 min

Spis treści

Plik server.cfg FiveM to serce każdego serwera GTA V opartego na FXServer — decyduje o tym, jak serwer się przedstawia, jakie zasoby ładuje, kto ma uprawnienia i jak zachowuje się pod obciążeniem. Źle skonfigurowany plik oznacza crashe przy starcie, brak widoczności na liście serwerów albo spadki tickrate. Poniżej praktyczny przewodnik krok po kroku, aktualny na 2026 rok.



Czym jest server.cfg FiveM i gdzie go znaleźć

server.cfg to zwykły plik tekstowy czytany przez FXServer przy każdym starcie. Zawiera zestaw komend konsolowych (set, sets, setr, ensure, add_ace, endpoint_add_tcp...) wykonywanych linia po linii. Nie jest to JSON ani YAML — składnia jest własna, oparta na konsoli silnika CitizenFX.

Lokalizacja pliku

Na hostingu z panelem Pterodactyl — takim jak ten używany przez Serveur FiveM — plik znajdziesz w zakładce File Manager, najczęściej w katalogu głównym serwera lub w /server-data/. Na własnym VPS Linux struktura wygląda zwykle tak:

/home/fivem/
├── server/              # binarki FXServer (fx.tar.xz rozpakowane)
│   └── run.sh
└── server-data/         # repozytorium cfx-server-data
    ├── resources/
    └── server.cfg

Serwer uruchamiasz wskazując konfigurację jawnie:

cd /home/fivem/server-data
bash /home/fivem/server/run.sh +exec server.cfg

Trzy typy zmiennych i dlaczego to ważne

KomendaZakresTypowe zastosowanie
settylko serwerKlucze, hasła, ścieżki, dane wrażliwe
setsserwer + lista serwerów (widoczne publicznie)Discord, banner, opis, tagi
setrreplikowane do klientówZmienne odczytywane przez skrypty po stronie gracza

Pomylenie set z sets przy kluczu licencyjnym to klasyczny błąd początkujących — publikuje wrażliwe dane w API listy serwerów. sv_licenseKey zawsze przez set.



Jak skonfigurować server.cfg FiveM krok po kroku

1. Endpointy i podstawowa sieć

Pierwsze linie definiują, na jakich portach serwer nasłuchuje. FiveM używa portu UDP i TCP o tym samym numerze (domyślnie 30120).

endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

sv_maxclients 64
set sv_enforceGameBuild 3407
set steam_webApiKey ""

Uwaga na sv_enforceGameBuild — wymusza konkretną wersję GTA V (DLC). Jeśli twoje mapy lub pojazdy pochodzą z nowszego DLC, bez odpowiedniego builda gracze zobaczą brakujące modele lub wylecą przy wejściu. Zmieniaj tę wartość świadomie i zawsze rób kopię zapasową przed aktualizacją.

2. Zasoby (resources) — kolejność ma znaczenie

Zasoby ładujesz komendą ensure (zalecana, obsługuje restart) zamiast przestarzałego start. Kolejność jest krytyczna: frameworki i biblioteki przed skryptami, które z nich korzystają.

# --- Biblioteki i baza ---
ensure oxmysql
ensure ox_lib

# --- Framework ---
ensure es_extended
# lub: ensure qb-core

# --- Mapy i MLO ---
ensure [maps]

# --- Skrypty gameplay ---
ensure [core]
ensure [jobs]
ensure [vehicles]

# --- Anticheat / admin ---
ensure txAdminMonitor

Katalogi w nawiasach kwadratowych ([jobs]) to grupy — ensure [jobs] ładuje wszystko, co jest w środku. To znacznie czytelniejsze niż setka pojedynczych linii i ułatwia debugowanie: wyłączasz całą grupę jedną linią z komentarzem #.

3. Tożsamość serwera i widoczność na liście

sets sv_projectName "Nazwa Twojego Serwera RP"
sets sv_projectDesc "Polski serwer Roleplay | ESX | 64 sloty"
sets tags "roleplay, polski, esx, whitelist"
sets locale "pl-PL"
sets banner_detail "https://twojadomena.pl/banner.png"
sets banner_connecting "https://twojadomena.pl/connect.png"
sets Discord "discord.gg/twojserwer"

load_server_icon myLogo.png

Ikona serwera musi być plikiem PNG 96x96 px umieszczonym obok server.cfg. Inny rozmiar = ikona się nie załaduje i nie dostaniesz o tym czytelnego komunikatu w konsoli.

4. Uprawnienia: system ACE

FiveM używa systemu ACE (Access Control Entries). Zasada: przypisujesz identyfikator gracza do grupy, a grupie nadajesz uprawnienia.

# Dodanie administratora (użyj swojego identyfikatora)
add_principal identifier.fivem:1234567 group.admin
add_principal identifier.license:abcdef0123456789 group.admin

# Grupa admin dziedziczy uprawnienia moderatora
add_principal group.admin group.moderator

# Uprawnienia
add_ace group.admin command allow
add_ace group.moderator command.kick allow
add_ace group.moderator command.ban allow

# Blokada niebezpiecznych komend dla wszystkich poza konsolą
add_ace resource.oxmysql command.add_ace allow
remove_ace builtin.everyone command.quit allow

Identyfikator gracza pobierzesz z konsoli panelu wpisując status podczas gdy jest online, albo z logów połączenia. Preferuj identifier.license: — jest stabilny i niezależny od zmiany konta Discord czy Steam.

5. Klucz licencyjny i baza danych

sv_licenseKey "twoj_klucz_z_keymaster"
sv_hostname "^2[PL] ^7Serwer RP ^2| ^7Wejdź teraz"

set mysql_connection_string "mysql://uzytkownik:haslo@localhost/fivem?charset=utf8mb4"

# Konsola RCON — puste = wyłączone (zalecane)
rcon_password ""
sv_endpointprivacy true

sv_scriptHookAllowed 0

Klucz licencyjny generujesz na portalu Cfx.re, przypisując go do adresu IP serwera. Bez ważnego klucza FXServer nie wystartuje w trybie publicznym.



Optymalizacja wydajności i tickrate przez server.cfg

Konfiguracja server.cfg FiveM nie kończy się na uruchomieniu skryptów. Kilka parametrów bezpośrednio wpływa na płynność rozgrywki i obciążenie CPU — a FiveM jest bardzo wrażliwy na częstotliwość taktowania procesora, nie na liczbę rdzeni.

OneSync i limity encji

set onesync on
set onesync_population true
set onesync_enableInfinity true
set onesync_enableBeyond true

# Limity zapobiegające przeciążeniu przy dużej liczbie graczy
set onesync_forceMigration true
set sv_useDirectListing true

OneSync Infinity jest wymagany powyżej 32 slotów i pozwala na synchronizację encji w dużej skali. Kosztuje jednak więcej CPU po stronie serwera — dlatego wysokotaktowany procesor Ryzen i dyski NVMe robią realną różnicę w czasie odpowiedzi bazy danych i ładowaniu zasobów.

Diagnostyka obciążenia

W konsoli panelu (lub przez txAdmin) użyj wbudowanych narzędzi:

# Profilowanie zasobów serwerowych
resmon 1

# Statystyki sieci i tick
netgraph
status
svgraph

resmon pokazuje czas CPU zużywany przez każdy resource. Reguła praktyczna: pojedynczy skrypt idle powyżej 0.10 ms wymaga przyjrzenia się, powyżej 0.50 ms — realny problem. Najczęstsi winowajcy to źle napisane pętle while true do Wait(0) end po stronie klienta i zapytania SQL bez indeksów.

Baza danych i I/O

Większość „lagów serwera" w FiveM to w rzeczywistości opóźnienia bazy danych. Jeśli hostujesz MariaDB na tym samym VPS Linux, kilka podstawowych ustawień w /etc/mysql/mariadb.conf.d/50-server.cnf:

[mysqld]
innodb_buffer_pool_size = 2G
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
max_connections = 200
slow_query_log = 1
long_query_time = 0.5
sudo systemctl restart mariadb
sudo systemctl status mariadb

Włączony slow_query_log pozwala szybko namierzyć zapytania blokujące wątek. Na dyskach NVMe różnica względem klasycznych HDD/SATA jest odczuwalna zwłaszcza przy zapisach inwentarza i logów.

Tabela typowych błędów startu

Komunikat w konsoliPrzyczynaRozwiązanie
Could not find resource XLiterówka lub zły katalogSprawdź nazwę folderu i obecność fxmanifest.lua
Invalid license keyKlucz przypisany do innego IPZregeneruj klucz w portalu Cfx.re
Server is not listedBrak sv_licenseKey lub blokada portuSprawdź endpointy i firewall UDP 30120
oxmysql: connection refusedZły connection stringZweryfikuj host, port i uprawnienia użytkownika MySQL
Failed to verify protocolNiezgodność sv_enforceGameBuildDopasuj build do wersji zasobów


Bezpieczeństwo, kopie zapasowe i praca na panelu

Zabezpieczenie konfiguracji

Plik server.cfg zawiera klucz licencyjny i dane dostępowe do bazy. Kilka zasad, które warto egzekwować:

  • Nigdy nie wrzucaj server.cfg do publicznego repozytorium Git — dodaj go do .gitignore.
  • Wyłącz RCON (rcon_password "") albo ustaw długie, losowe hasło. Otwarty RCON ze słabym hasłem to najprostsza droga do przejęcia serwera.
  • Ustaw sv_endpointprivacy true, żeby nie ujawniać adresów IP graczy w API.
  • Ogranicz add_ace ... command allow do minimum osób. Dziedziczenie grup rozwiązuje 90% potrzeb bez rozdawania pełnych uprawnień.
  • Trzymaj sv_scriptHookAllowed 0 na serwerach RP.

Ochrona przed atakami wolumetrycznymi DDoS jest realizowana po stronie infrastruktury Fly-Serv i włączona domyślnie na wszystkich serwerach oraz VPS — nie musisz jej konfigurować w server.cfg. Twoim zadaniem pozostaje warstwa aplikacyjna: uprawnienia, anticheat i higiena haseł.

Whitelist przez ACE

Najprostsza whitelista bez dodatkowych skryptów opiera się o zasób connectqueue lub natywnie o ACE:

add_ace group.whitelist connect.allow allow
remove_ace builtin.everyone connect.allow allow

add_principal identifier.license:aabbcc112233 group.whitelist
add_principal identifier.discord:123456789012345678 group.whitelist

Przy większych społecznościach lepiej sprawdza się whitelist oparta o bazę danych i integrację z Discordem — łatwiej nią zarządzać niż ręczną edycją pliku.

Kopie zapasowe i wersjonowanie

Zanim dotkniesz działającej konfiguracji, zrób snapshot. Na panelu Pterodactyl służy do tego zakładka Backups — kopie automatyczne są dostępne w standardzie, ale ręczny backup przed dużą zmianą to nawyk, który oszczędza godziny. Dodatkowo warto trzymać wersjonowaną kopię lokalnie:

# Prosta kopia z datą przed edycją
cp server.cfg server.cfg.$(date +%F_%H%M).bak

# Porównanie zmian po awarii
diff server.cfg server.cfg.2026-01-14_2130.bak

Na własnym VPS dorzuć podstawowe utwardzenie systemu — klucze SSH zamiast haseł, firewall i fail2ban:

ssh-keygen -t ed25519 -C "admin@fivem"
sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable

sudo apt update && sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban

Praca na panelu vs własny VPS

KryteriumHosting z panelemWłasny VPS
Czas wdrożeniaInstalacja natychmiastowa, konfiguracja od razuRęczna instalacja FXServer, MariaDB, artefaktów
Edycja server.cfgFile Manager + edytor w przeglądarceSSH, nano/vim, SFTP
Restart / logiKonsola live w panelu, jeden kliksystemctl + tmux/screen
Kopie zapasoweAutomatyczne, wbudowaneWłasny cron + rsync
ElastycznośćOgraniczona do środowiska gryPełna kontrola nad systemem
Sub-użytkownicyWbudowane role dla ekipyZarządzanie kontami Linux

Jeśli chcesz połączyć oba światy — pełną kontrolę nad maszyną i wygodę panelu — rozwiązaniem jest VPS Pterodactyl, gdzie sam zarządzasz nodem, ale konfigurację serwerów prowadzisz przez znajomy interfejs. Dokumentację samego panelu znajdziesz w oficjalnych materiałach Pterodactyl.

Szablon minimalny do skopiowania

# === SIEĆ ===
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
sv_maxclients 48

# === ZASOBY ===
ensure oxmysql
ensure ox_lib
ensure es_extended
ensure [maps]
ensure [core]
ensure [jobs]

# === TOŻSAMOŚĆ ===
sets sv_projectName "Serwer PL RP"
sets sv_projectDesc "ESX | Whitelist | 48 slotów"
sets locale "pl-PL"
sets tags "roleplay, polski"
sv_hostname "^2[PL] ^7Serwer RP"
load_server_icon icon.png

# === SYNC ===
set onesync on
set onesync_enableInfinity true
set onesync_population true

# === BEZPIECZEŃSTWO ===
sv_scriptHookAllowed 0
sv_endpointprivacy true
rcon_password ""

# === UPRAWNIENIA ===
add_ace group.admin command allow
add_principal identifier.license:ZMIEN_MNIE group.admin

# === BAZA / LICENCJA ===
set mysql_connection_string "mysql://fivem:haslo@localhost/fivem?charset=utf8mb4"
sv_licenseKey "ZMIEN_MNIE"

Ten szablon startuje bez błędów po podmianie dwóch wartości. Rozbudowuj go stopniowo: dodaj kilka zasobów, zrestartuj, sprawdź resmon. Dodawanie pięćdziesięciu skryptów naraz i szukanie potem przyczyny crasha to najdroższy sposób nauki. Podobna metodyka sprawdza się zresztą przy innych tytułach — modpacki na Serveur Minecraft czy pluginy na Serveur Rust testuje się dokładnie tak samo, partiami.



Podsumowanie

Dobrze utrzymany server.cfg FiveM to plik czytelny, podzielony na sekcje, z komentarzami i kopią zapasową przed każdą zmianą. Kolejność zasobów, poprawny sv_enforceGameBuild, przemyślane ACE i monitoring przez resmon rozwiązują większość problemów, zanim zauważą je gracze. Resztę załatwia stabilna infrastruktura i regularne backupy.



FAQ

Dlaczego mój serwer FiveM nie pojawia się na publicznej liście serwerów?

Najczęściej brakuje ważnego sv_licenseKey przypisanego do aktualnego adresu IP, albo port UDP 30120 jest zablokowany. Sprawdź w konsoli, czy pojawia się komunikat o pomyślnej rejestracji, zweryfikuj endpoint_add_udp i regułę firewalla (ufw allow 30120/udp). Upewnij się też, że sv_master1 nie został ustawiony na pustą wartość.

Jaka jest różnica między start a ensure w server.cfg?

start po prostu uruchamia zasób, a ensure najpierw zatrzymuje go, jeśli już działa, i uruchamia ponownie. Dzięki temu ensure działa poprawnie przy przeładowaniu konfiguracji i unika duplikatów. W nowych konfiguracjach używaj wyłącznie ensurestart pozostaje głównie dla zgodności wstecznej.

Jak bezpiecznie nadać uprawnienia administratora bez otwierania serwera na nadużycia?

Używaj identifier.license: zamiast Steam czy Discord, bo jest trwały. Twórz hierarchię grup (group.admin dziedziczy group.moderator) i nadawaj konkretne uprawnienia typu command.kick zamiast globalnego command allow. Pełne uprawnienia zostaw sobie i jednej zaufanej osobie, a zmiany w ACE zawsze poprzedź kopią zapasową pliku.