SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor

Jak zainstalować serwer FiveM na VPS krok po kroku

Instrukcja instalacji FXServer na systemie Ubuntu. Dowiedz się jak przypisać artefakty, skonfigurować klucz Cfx.re, otworzyć port 30120 oraz zabezpieczyć panel txAdmin przed dostępem.

Wymagania serwera FiveM na VPS

Serwer FiveM na VPS wymaga jednego nieuprzywilejowanego użytkownika Linux, jednej kompilacji artefaktów z Cfx.re, jednego klucza licencyjnego oraz jednego portu otwartego zarówno dla protokołu TCP, jak i UDP. Instalacja zajmuje około dziesięciu minut. Pozostała część tego przewodnika omawia elementy decydujące o grywalności serwera: szybkość pojedynczego rdzenia CPU, pamięć RAM wymagana przez zasoby oraz panel zarządzania, który nigdy nie powinien być dostępny pod publicznym adresem.

Trzy wymagania wstępne są stałe. Pliki binarne serwera, zwane artefaktami, pochodzą z oficjalnej listy kompilacji Cfx.re. Klucz licencyjny uzyskuje się w portalu Cfx.re pod adresem portal.cfx.re, który w starszych poradnikach bywa nazywany keymaster; klucz jest przypisany do adresu IP maszyny, na której jest używany. Każdy gracz łączący się z serwerem musi posiadać własną, legalną kopię GTA V (Grand Theft Auto V) na platformie Steam, Rockstar Games Launcher lub Epic Games, a także darmowe konto Cfx.re. Klient weryfikuje własność gry podczas uruchamiania, dlatego serwer oparty na jakimkolwiek innym rozwiązaniu nie będzie działał; niniejszy dokument nie obejmuje żadnych metod obejścia tego zabezpieczenia.

Hosting serwera to zadanie odmienne od uruchamiania gry na tej samej maszynie, co wiąże się z kwestią czy można uruchomić samą grę na VPS, będącą osobnym zagadnieniem z inną odpowiedzią.

Dlaczego wydajność pojedynczego rdzenia decyduje o płynności serwera FiveM

FXServer, plik binarny serwera FiveM, przetwarza logikę gry w jednym głównym wątku. Każdy skrypt zasobów, każdy moduł obsługi zdarzeń i każda aktualizacja stanu przechodzą przez tę samą pętlę. Dodatkowe rdzenie wspomagają jądro systemu, bazę danych oraz stos sieciowy. Nie dzielą one jednak pętli gry. Dlatego serwer z 4 vCPU na wolnym rdzeniu będzie zacinał się pod obciążeniem, podczas gdy serwer z 2 vCPU na szybkim rdzeniu zachowa płynność.

Odwraca to typowy nawyk przy wyborze VPS, gdzie liczba rdzeni jest głównym parametrem marketingowym. Przed opłaceniem usługi należy sprawdzić wydajność pojedynczego rdzenia. Zacznij od modelu CPU:

lscpu | grep -E 'Model name|MHz'

Następnie sprawdź opublikowany wynik wydajności jednowątkowej dla tego modelu. Rankingi PassMark single thread oraz Geekbench single-core są publicznie dostępne i oba mierzą pracę wykonywaną przez jeden rdzeń, co jest kluczową wartością w tym przypadku. Następnie zmierz parametry maszyny, którą faktycznie otrzymałeś:

sudo apt update && sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

Odczytaj linię events per second. Uruchom to samo polecenie u dwóch różnych dostawców, aby rzetelnie ich porównać, ponieważ obciążenie jest identyczne i ograniczone do jednego rdzenia. Powtarzalny benchmark VPS pokazuje, jak utrzymać porównywalność tych wyników między różnymi maszynami.

Następnie sprawdź, czy rdzeń jest rzeczywiście do Twojej dyspozycji:

vmstat 1 5

Ostatnia kolumna, st, to steal time: udział czasu, w którym wirtualny procesor był gotowy do pracy, ale hypervisor kazał mu czekać. Stała wartość powyżej 1 lub 2 oznacza, że współdzielisz fizyczny rdzeń z obciążonymi sąsiadami, co w pętli gry natychmiast objawia się jako rubber banding. Steal time od hałaśliwego sąsiada wyjaśnia, jak interpretować tę kolumnę i jak reagować na takie sytuacje.

Pamięć RAM skaluje się wraz z uruchomionymi zasobami, a nie tylko z liczbą slotów. Podstawowe dane serwera od Cfx.re zajmują kilkaset megabajtów. Framework roleplay z czterdziestoma lub pięćdziesięcioma zasobami oraz bazą danych MariaDB na tej samej maszynie to zupełnie inne wymagania: 4 GB to rozsądne minimum, a 8 GB zapewnia komfort przy 32 do 64 slotach. Są to typowe wartości publikowane przez społeczność, więc traktuj je jako punkt wyjścia i monitoruj free -m pod rzeczywistym obciążeniem graczy.

Utworzenie użytkownika i instalacja zależności

Uruchamiaj serwer jako zwykły użytkownik, nigdy jako root. Istnieją dwa powody takiej praktyki. Używanie konta root jest złym nawykiem w przypadku każdej usługi wystawionej na działanie Internetu. Ponadto artefakt Linux działa wewnątrz spakowanego systemu plików root Alpine Linux, więc pliki rozpakowane przez użytkownika root nie mogą zostać wykonane przez nikogo innego, co jest najczęstszą przyczyną, dla której świeża instalacja nie uruchamia się.

sudo adduser --disabled-password --gecos "" fivem
sudo apt update
sudo apt install -y git xz-utils curl tcpdump
sudo -iu fivem

Wszystkie poniższe operacje są wykonywane jako użytkownik fivem. Pakiet xz-utils jest wymagany, ponieważ pobierany plik jest archiwum .tar.xz, a git służy do sklonowania bazowych danych serwera.

Pobieranie przypiętej kompilacji artefaktu

Kompilacja dla systemu Linux znajduje się w kanale build_proot_linux na serwerze artefaktów Cfx.re. Lista wskazuje jedną kompilację jako zalecaną, a etykieta ta zmienia się co kilka tygodni. Zamiast tego należy przypiąć numerowany folder. Dzięki temu ponowna budowa serwera w przyszłym miesiącu zapewni ten sam plik binarny, który był testowany obecnie, a aktualizacja stanie się świadomą decyzją.

mkdir -p ~/FXServer/server
cd ~/FXServer/server
curl -fLO https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/25770-8ddccd4e4dfd6a760ce18651656463f961cc4761/fx.tar.xz
tar xf fx.tar.xz
ls

Kompilacja 25770 posiadała etykietę zalecaną w momencie przeglądania listy w sierpniu 2026 roku. Należy otworzyć ten sam katalog w przeglądarce, aby sprawdzić aktualną wersję, a następnie wkleić nazwę folderu, składającą się z numeru kompilacji oraz skrótu commitu, do adresu URL.

ls powinno teraz wyświetlać run.sh oraz katalog alpine. Ten katalog to klucz do rozwiązania: artefakt dla systemu Linux zawiera własny, niewielki system plików root oparty na Alpine i uruchamia serwer wewnątrz niego przy użyciu proot, narzędzia działającego w przestrzeni użytkownika, które emuluje chroot bez uprawnień root. Dzięki temu jeden plik do pobrania działa na systemach Ubuntu, Debian i Rocky bez konieczności instalowania pakietów specyficznych dla danej dystrybucji.

Teraz należy sklonować podstawowe dane serwera, które zawierają domyślne zasoby uruchamiane przez server.cfg:

git clone https://github.com/citizenfx/cfx-server-data.git ~/FXServer/server-data

Uzyskanie klucza licencyjnego i utworzenie server.cfg

Zaloguj się na stronie portal.cfx.re przy użyciu konta Cfx.re i utwórz klucz serwera. Portal wymaga podania adresu IP maszyny, która będzie z niego korzystać; klucz jest przypisany do tego adresu. Przeniesienie serwera na nowy VPS wymaga edycji klucza w portalu, a nie tworzenia drugiego. Zmiana wchodzi w życie natychmiast, ale FXServer weryfikuje ją ponownie dopiero po restarcie.

Utwórz plik ~/FXServer/server-data/server.cfg:

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

ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager
ensure basic-gamemode
ensure hardcap

sv_hostname "My FiveM server"
sv_maxclients 48
set onesync on
sv_scriptHookAllowed false

sv_licenseKey ChangeMe

add_ace group.admin command allow
add_principal identifier.fivem:1 group.admin

sv_maxclients przyjmuje wartość od 1 do 2048. Wartość 32 lub wyższa wymaga ustawienia onesync na on lub legacy, a wartość powyżej 64 wymaga on. OneSync to tryb synchronizacji stanu serwera, który pozwala na przekroczenie podstawowego limitu slotów gry. Ustawienie 128 slotów przy wyłączonym OneSync nie zwiększa liczby miejsc, lecz powoduje błąd konfiguracji, przez który serwer odrzuci ustawienia.

sv_licenseKey przyjmuje klucz bez cudzysłowów i bez spacji na końcu. FXServer dzieli tę linię w miejscach występowania białych znaków, więc jeden zbędny znak uniemożliwia walidację i serwer nie uruchomi się.

rcon_password celowo nie znajduje się w tym pliku. RCON (zdalna konsola) jest włączany tylko wtedy, gdy zmienna jest ustawiona; nasłuchuje ona na tym samym porcie UDP co gra. Hasło RCON na publicznym porcie to kanał zdalnego wykonywania poleceń na serwerze. Nie ustawiaj go, chyba że jest to niezbędne, a jeśli musisz, użyj długiego i losowego ciągu znaków.

sv_scriptHookAllowed pozostaje false. Oficjalna dokumentacja odradza to ustawienie, ponieważ zezwolenie na łączenie się klientom z Script Hook V naraża serwer na nadużycia po stronie klienta.

add_principal identifier.fivem:1 nadaje uprawnienia administratora dla identyfikatora konta Cfx.re o numerze 1. Zastąp 1 własnym identyfikatorem numerycznym; w przeciwnym razie nadasz uprawnienia administratora komuś innemu, pozostając bez nich.

Uruchom serwer ręcznie:

cd ~/FXServer/server-data
bash ~/FXServer/server/run.sh +exec server.cfg

Z poziomu drugiej sesji SSH sprawdź stan serwera:

curl -s http://127.0.0.1:30120/info.json | head -c 200

Odpowiedź w formacie JSON zawierająca zmienne serwera i zasoby oznacza, że FXServer został poprawnie powiązany i odpowiada. Connection refused oznacza, że serwer nie powiązał portu; w takim przypadku należy sprawdzić wyjście konsoli zamiast zgadywać przyczynę.

Serwer bez klucza wyświetla ten komunikat i zatrzymuje się:

This server does not have a license key specified. Please set the sv_licenseKey console variable to a key from https://keymaster.fivem.net/.

Komunikat nadal wskazuje stary adres keymaster. Adres ten prowadzi do tego samego portalu Cfx.re. Jeśli klucz jest ustawiony, a serwer nadal odmawia uruchomienia, najczęstszą przyczyną jest niezgodność adresu IP zarejestrowanego dla klucza z adresem bieżącej maszyny.

Które porty muszą być otwarte dla serwera FiveM?

Port 30120, zarówno dla TCP (transmission control protocol), jak i UDP (user datagram protocol). FiveM używa jednego numeru portu dla obu protokołów i wymaga otwarcia każdego z nich. Otwarcie tylko TCP powoduje mylące objawy: http://your.ip:30120/info.json odpowiada w przeglądarce, więc serwer wygląda na sprawny, podczas gdy klient gry zawiesza się na Failed to get info from server i nigdy nie nawiązuje połączenia, ponieważ zapytania klienta oraz ruch samej gry odbywają się przez UDP.

sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbose

Podczas włączania dowolnego firewalla należy utrzymywać otwartą drugą sesję SSH. Podstawy ufw dla VPS wyjaśniają politykę domyślnego odrzucania (default deny), dzięki której powyższe reguły są wystarczające.

Większość dostawców uruchamia również sieciowy firewall poza systemem gościa, zarządzany z poziomu panelu, a nie z powłoki. Reguła ufw nie daje pewności co do stanu tej warstwy. Jeśli TCP odpowiada z zewnątrz, a gracze nadal nie mogą się połączyć, należy monitorować ruch sieciowy podczas próby połączenia:

sudo tcpdump -ni any udp port 30120

Docierające pakiety oznaczają, że zewnętrzny firewall działa poprawnie, a błąd leży wewnątrz serwera. Brak ruchu oznacza, że coś przed maszyną odrzuca pakiety, dlatego w następnej kolejności należy sprawdzić panel dostawcy.

Zarządzanie serwerem za pomocą txAdmin bez jego wystawiania

txAdmin jest dostarczany wewnątrz artefaktu, który został już pobrany. Uruchomienie run.sh bez argumentu +exec powoduje uruchomienie panelu WWW na porcie TCP 40120, a następnie wyświetlenie w konsoli adresu URL panelu oraz krótkotrwałego kodu PIN. Kod ten służy do jednorazowego powiązania konta Cfx.re, po czym logowanie odbywa się za pomocą utworzonego konta administratora.

txAdmin nie posiada domyślnego hasła, więc ryzyko nie wynika z niezmiany danych uwierzytelniających. Ryzykiem jest sama natura panelu: jest to zdalna konsola. Umożliwia ona restart serwera, edycję server.cfg, wdrażanie danych serwera oraz wykonywanie poleceń z uprawnieniami użytkownika serwera. Pozostawienie portu 40120 dostępnego z Internetu wystawia stronę logowania do tych funkcji na publiczny adres, a skanery znajdują otwarte porty paneli w ciągu kilku godzin. Nie należy otwierać portu 40120 w zaporze sieciowej. Dostęp do niego należy uzyskać poprzez tunel SSH z własnej maszyny:

ssh -N -L 40120:127.0.0.1:40120 fivem@YOUR_SERVER_IP

Następnie otwórz http://127.0.0.1:40120 w przeglądarce. Ruch panelu odbywa się wewnątrz połączenia SSH, a port pozostaje zamknięty dla wszystkich innych osób.

Przed próbą rozwiązania tego problemu w inny sposób warto poznać jedną pułapkę. txAdmin odczytuje TXHOST_INTERFACE (domyślnie 0.0.0.0), aby zdecydować, z którym interfejsem się powiązać, a dokumentacja wyraźnie wskazuje, że ta sama wartość jest wymuszana dla FXServer. Ustawienie jej na 127.0.0.1 w celu ukrycia panelu spowoduje również powiązanie serwera gry z interfejsem loopback, przez co żaden gracz nie będzie mógł połączyć się z serwerem. Port panelu należy zamknąć za pomocą zapory sieciowej, a nie za pomocą tej zmiennej. Aby przenieść panel na inny port, należy ustawić TXHOST_TXA_PORT, która akceptuje dowolną wartość z wyjątkiem 30120. Starsza zmienna +set txAdminPort pojawia się w wielu poradnikach; dokumentacja txAdmin oznacza ją jako przestarzałą i informuje, że przestanie ona działać w przyszłej wersji.

Utrzymanie serwera w działaniu po wylogowaniu

bash run.sh kończy działanie wraz z sesją SSH. Narzędzie tmux sprawdza się podczas testów: uruchom tmux new -s fivem, wystartuj serwer, naciśnij Ctrl-b, a następnie d, aby odłączyć sesję, i użyj tmux attach -t fivem, aby do niej wrócić. Sesja tmux nie przetrwa restartu systemu, dlatego wszystkie istotne procesy powinny być obsługiwane przez jednostkę systemd.

Utwórz /etc/systemd/system/fivem.service:

[Unit]
Description=FiveM FXServer
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=fivem
Environment=HOME=/home/fivem
WorkingDirectory=/home/fivem/FXServer/server-data
ExecStart=/bin/bash /home/fivem/FXServer/server/run.sh +exec server.cfg
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now fivem
systemctl status fivem
journalctl -u fivem -f

enable --now wykonuje dwa zadania: uruchamia usługę natychmiast oraz przywraca ją po restarcie systemu. Serwer uruchomiony ręcznie przestanie działać po najbliższej aktualizacji kernela. journalctl -u fivem -f jest teraz Twoją konsolą, ponieważ usługa systemd nie posiada terminala, w którym można wpisywać polecenia. Jeśli zarządzasz serwerem za pomocą txAdmin, usuń +exec server.cfg z ExecStart i skieruj WorkingDirectory na /home/fivem/FXServer/server, ponieważ txAdmin samodzielnie uruchamia serwer gry i przechowuje jego folder z danymi obok run.sh.

Co podlega kopii zapasowej i gdzie się znajduje

Artefaktów nie warto archiwizować, ponieważ przypiętą wersję kompilacji można pobrać ponownie w ciągu minuty. Cztery elementy należą wyłącznie do użytkownika.

  • ~/FXServer/server-data/resources: każdy zasób zainstalowany, zakupiony lub napisany samodzielnie.
  • server.cfg, niezależnie od lokalizacji: pełna konfiguracja serwera, w tym główni administratorzy.
  • ~/FXServer/server/txData: konfiguracja txAdmin, lista administratorów oraz logi. W przypadku artefaktów dla systemu Linux folder ten tworzony jest obok run.sh.
  • Baza danych MariaDB lub MySQL, jeśli używany framework z niej korzysta. Postacie, pieniądze, pojazdy i ekwipunki znajdują się wyłącznie tam, więc kopia zapasowa zasobów bez zrzutu bazy danych przywraca pusty świat.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

Zrzut danych znajdujący się na tym samym dysku co serwer nie jest kopią zapasową, ponieważ to właśnie dysk ulega awarii. Należy przesyłać dane poza serwer zgodnie z harmonogramem, do czego służy restic backups from a VPS.

Tryby awarii i komunikaty, które zobaczysz

Permission denied on the loader. Serwer kończy działanie natychmiast, wyświetlając wiersz podobny do poniższego:

run.sh: line 8: /home/fivem/FXServer/server/alpine/opt/cfx-server/ld-musl-x86_64.so.1: Permission denied

Dzieje się tak, ponieważ archiwum zostało rozpakowane za pomocą sudo, więc cała zawartość alpine/ należy do użytkownika root, a użytkownik fivem nie może uruchomić znajdującego się wewnątrz loadera. Napraw uprawnienia za pomocą sudo chown -R fivem:fivem /home/fivem/FXServer lub usuń folder i rozpakuj go ponownie jako fivem.

tar odmawia otwarcia pobranego pliku. tar (child): xz: Cannot exec: No such file or directory oznacza brak pakietu xz-utils, przez co tar nie może dekompresować archiwum .tar.xz. Zainstaluj go i rozpakuj ponownie. Pobieranie, które kończy się zbyt szybko, zazwyczaj oznacza zapisanie strony błędu HTML jako fx.tar.xz, a tar zgłasza to jako uszkodzone archiwum.

Serwer działa, ale nikt nie może dołączyć. Sprawdź najpierw porty w następującej kolejności: regułę ufw dla TCP i UDP na 30120, następnie zaporę sieciową dostawcy, a na końcu adres IP zarejestrowany dla klucza licencyjnego. Polecenie curl wykonane względem info.json z zewnątrz serwera pozwala jednym ruchem odróżnić problem sieciowy od problemu z serwerem.

Czas ticku rośnie wraz z przybywaniem graczy. Panel wydajności txAdmin pokazuje czas ticku serwera. Gdy rośnie on wraz z liczbą graczy, podczas gdy ogólne użycie procesora wydaje się niskie, oznacza to, że jeden zasób wysyca główny wątek. Pamiętaj o arytmetyce: na maszynie z 4 vCPU, jeden w pełni obciążony rdzeń jest widoczny jako około 25 procent całkowitego użycia CPU w top, co wygląda na stan bezczynności, a nim nie jest. Zatrzymuj zasoby pojedynczo i obserwuj czas ticku, aby zidentyfikować ten, który generuje obciążenie.

Skalowanie w porównaniu z innymi serwerami gier

Grywalny serwer FiveM wymaga szybkiego pojedynczego rdzenia oraz pamięci RAM wystarczającej dla uruchomionych zasobów. Liczba slotów wynika z tych dwóch parametrów, a zwiększenie liczby vCPU nie zniweluje niskiej wydajności pojedynczego rdzenia. Wybór VPS pod serwery gier omawia ten kompromis w kontekście zróżnicowanej floty serwerów, a uruchamianie serwera Minecraft na VPS opiera się na tych samych założeniach: główna pętla taktowania (tick loop) jest pojedyncza, więc wydajność na rdzeń wyznacza górny limit wydajności również w tym przypadku.

FAQ

Ile procesora i pamięci RAM wymaga serwer FiveM?

Jeden szybki rdzeń jest ważniejszy niż kilka wolniejszych, ponieważ FXServer wykonuje logikę gry na pojedynczym głównym wątku. Porównaj opublikowany wynik wydajności jednowątkowej modelu procesora, a następnie zweryfikuj obciążenie na serwerze za pomocą sysbench cpu --threads=1 run i sprawdź, czy vmstat wskazuje czas "steal time" bliski zeru. Jeśli chodzi o pamięć, bazowe dane serwera Cfx.re zajmują kilkaset megabajtów, podczas gdy framework roleplay z czterdziestoma lub pięćdziesięcioma zasobami oraz lokalną bazą danych działa stabilnie przy 8 GB RAM, natomiast poniżej 4 GB odczuwalny jest brak zasobów. Są to typowe wartości dla społeczności, dlatego monitoruj free -m w godzinach szczytu, zamiast polegać wyłącznie na szacunkach.

Czy gracze muszą posiadać GTA V, aby dołączyć do mojego serwera FiveM?

Tak. Każdy łączący się gracz musi posiadać legalną, licencjonowaną kopię GTA V na platformie Steam, Rockstar Games Launcher lub Epic Games, a także darmowe konto Cfx.re. Klient FiveM sprawdza własność gry przed nawiązaniem połączenia. Nie istnieje wspierany sposób obejścia tego wymogu, a prowadzenie serwera, który próbuje to obejść, jest niezgodne z zasadami Cfx.re.

Jakie porty musi mieć otwarte serwer FiveM?

Port 30120 zarówno dla protokołu TCP, jak i UDP. Punkty końcowe HTTP, takie jak info.json oraz pobieranie zasobów, wykorzystują TCP, natomiast ruch gry klienta korzysta z UDP. Otwarcie tylko portu TCP prowadzi do mylącej sytuacji, w której serwer odpowiada na zapytania przeglądarki, ale gracze widzą Failed to get info from server. txAdmin wymaga portu TCP 40120 i ten port powinien pozostać zamknięty dla ruchu z Internetu.

Czy bezpieczne jest pozostawienie txAdmin dostępnego na porcie 40120?

Nie. txAdmin to zdalna konsola, która pozwala restartować serwer, edytować konfigurację i wykonywać polecenia, więc wystawiony panel to wystawiony panel kontrolny dla całego serwera gry. Domyślnie nie ma ustawionego hasła, ale publiczna strona logowania naraża na ataki typu brute-force, których nie można monitorować. Pozostaw port 40120 zamknięty w zaporze sieciowej i uzyskuj dostęp do panelu przez tunel SSH za pomocą ssh -N -L 40120:127.0.0.1:40120 user@server, a następnie przejdź pod adres http://127.0.0.1:40120. Nie wiąż txAdmin z adresem 127.0.0.1 przy użyciu TXHOST_INTERFACE, ponieważ to ustawienie wymusza również działanie serwera gry na interfejsie loopback, co uniemożliwi graczom połączenie.

Czy należy przypisać konkretną wersję artefaktów, czy zawsze pobierać najnowszą zalecaną?

Należy przypisać numerowany folder kompilacji. Etykieta "recommended" regularnie wskazuje na nową wersję, więc skrypt pobierający zalecaną kompilację może dostarczyć inny plik binarny przy każdym ponownym wdrożeniu. W rezultacie serwer, który działał wczoraj, może przestać działać po redeployu z przyczyn niezwiązanych z wprowadzonymi zmianami. Zapisuj numer kompilacji i hash commita, które zostały przetestowane, aktualizuj serwer celowo i zachowuj poprzedni folder na dysku, aby móc przywrócić poprzednią wersję poprzez edycję jednej ścieżki w jednostce systemd.

#fivem#game-server#txadmin#single-thread#vps