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
| Komenda | Zakres | Typowe zastosowanie |
|---|---|---|
set | tylko serwer | Klucze, hasła, ścieżki, dane wrażliwe |
sets | serwer + lista serwerów (widoczne publicznie) | Discord, banner, opis, tagi |
setr | replikowane do klientów | Zmienne 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 konsoli | Przyczyna | Rozwiązanie |
|---|---|---|
| Could not find resource X | Literówka lub zły katalog | Sprawdź nazwę folderu i obecność fxmanifest.lua |
| Invalid license key | Klucz przypisany do innego IP | Zregeneruj klucz w portalu Cfx.re |
| Server is not listed | Brak sv_licenseKey lub blokada portu | Sprawdź endpointy i firewall UDP 30120 |
| oxmysql: connection refused | Zły connection string | Zweryfikuj host, port i uprawnienia użytkownika MySQL |
| Failed to verify protocol | Niezgodność sv_enforceGameBuild | Dopasuj 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.cfgdo 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 allowdo minimum osób. Dziedziczenie grup rozwiązuje 90% potrzeb bez rozdawania pełnych uprawnień. - Trzymaj
sv_scriptHookAllowed 0na 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
| Kryterium | Hosting z panelem | Własny VPS |
|---|---|---|
| Czas wdrożenia | Instalacja natychmiastowa, konfiguracja od razu | Ręczna instalacja FXServer, MariaDB, artefaktów |
| Edycja server.cfg | File Manager + edytor w przeglądarce | SSH, nano/vim, SFTP |
| Restart / logi | Konsola live w panelu, jeden klik | systemctl + tmux/screen |
| Kopie zapasowe | Automatyczne, wbudowane | Własny cron + rsync |
| Elastyczność | Ograniczona do środowiska gry | Pełna kontrola nad systemem |
| Sub-użytkownicy | Wbudowane role dla ekipy | Zarzą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ść.
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 ensure — start pozostaje głównie dla zgodności wstecznej.
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.