FiveM server git: co commitować, .gitignore i wdrażanie git pull

Umieść swój serwer FiveM pod git w bezpieczny sposób: co commitować, .gitignore dla cache i txData, trzymanie kluczy z secrets.cfg, prywatne repos i wdrażanie git pull.

Serwer, który żyje tylko na jednym dysku, nie ma historii: zła edycja w piątkowy wieczór nie może być cofnięta i przenoszenie maszyn oznacza kopiowanie folderów ręcznie. Umieszczenie pod git to naprawia. Ten przewodnik pokazuje co commitować, .gitignore do użycia, jak trzymać tajemnice poza oraz jak wdrażać z git pull.

Co idzie do repozytorium

Commituj rzeczy, które piszesz lub konfigurujesz:

  • Twoje zasoby (folder resources/, łącznie z konfigiem i plikami SQL).
  • A server.cfg bez tajemnic.
  • Małe pliki pomocnicze, takie jak README z porządkiem uruchamiania.

Nie commituj wygenerowanych lub prywatnych plików:

  • cache/, które FiveM przebudowuje. Zajrzyj clear the FiveM cache.
  • Folder danych txAdmin (txData), z jego ustawieniami, kontami admina i logami.
  • Tajemnice: klucz licencji, hasło bazy danych i klucze API.
  • Logi, zrzuty awarii i node_modules.

Początkowy .gitignore

W katalogu głównym repozytorium (folder danych serwera zawierający resources/ i server.cfg):

text
cache/
txData/
*.log
*.dmp
node_modules/
secrets.cfg
.env

Jeśli wersjonujesz cały folder txAdmin na pościel, usuń txData/ z listy, ale trzymaj go prywatnym i poza każdym wspólnym repozytorium. Duże binarne zasoby (streamowane samochody, MLO) robią repozytorium dużym; zastanów się, czy powinny być w git w ogóle, czy trzymane w osobnym magazynie.

Trzymaj klucze poza server.cfg

To jest część, która idzie źle najczęściej. Te linie są tajemnicami:

cfg
sv_licenseKey cfxk_xxxxxxxxxxxx
set mysql_connection_string "mysql://user:password@localhost/fivem"
set steam_webApiKey "xxxxxxxx"
rcon_password "xxxxxxxx"

Przenieś je do osobnego pliku, secrets.cfg, który jest w .gitignore:

cfg
# secrets.cfg  (never committed)
sv_licenseKey cfxk_xxxxxxxxxxxx
set mysql_connection_string "mysql://user:password@localhost/fivem"
set steam_webApiKey "xxxxxxxx"

I załaduj go na szczycie commitowanego server.cfg:

cfg
exec secrets.cfg

endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
sv_hostname "My Server"

ensure oxmysql
ensure ox_lib

Commituj secrets.cfg.example z pustymi wartościami, aby następna osoba wiedziała co wypełnić. Zajrzyj server.cfg explained dla samych ustawień.

Ostrzeżenie: jeśli klucz kiedykolwiek był commitowany, usuwanie go w późniejszym commicie nie wystarczy. Wciąż jest w historii. Wygeneruj nowy klucz lub hasło i traktuj stare jako przeciek.

Utwórz repozytorium

bash
cd /path/to/server-data
git init
git add .
git status

Przeczytaj listę git status przed commitowaniem i sprawdzaj, że nic z listy "do not commit" nie jest staged. Następnie:

bash
git commit -m "Initial server"
git branch -M main
git remote add origin [email protected]:youruser/your-server.git
git push -u origin main

Używaj prywatnego repozytorium. Płatne zasoby są licencjonowane dla Ciebie, a umieszczenie ich w publicznym repozytorium to redystrybuacja, nawet jeśli kod jest zaszyfrowany. Zajrzyj escrow lack entitlement dla tego, jak zaszyfrowane zasoby są związane z Twoim kontem.

Wdrażanie z git pull

Na maszynie, która uruchamia serwer, klonuj raz i pull potem:

bash
git clone [email protected]:youruser/your-server.git server-data
cd server-data
# create secrets.cfg on this machine (not from git)

Aby zaktualizować po pularze z Twojego komputera Development:

bash
cd server-data
git pull

Następnie przeładuj, co się zmieniło. Dla pojedynczego zasobu z konsoli serwera:

text
refresh
restart my_resource

Jeśli server.cfg lub porządek uruchamiania się zmienił, zaplanuj pełny restart (zobacz scheduled restarts). Nie rób git pull w środku godzin szczytu bez planu, ponieważ wiele zasobów restartujących naraz może podnieść serwer.

Dla uwierzytelniania w prywatnym repozytorium, używaj klucza wdrażania SSH z dostępem tylko do odczytu, lub tokenu dostępu osobistego. Nigdy nie wpisuj swojego własnego hasła do skryptów.

Prosty zwyczaj gałęzi

Trzymaj main jako to co jest na żywo. Rób zmiany na gałęzi, testuj na lokalnym lub staging serwerze, następnie scalaj:

bash
git checkout -b new-police-job
# edit, test
git commit -am "Add police job"
git checkout main
git merge new-police-job
git push

Gdy coś się psuje po pull, git log pokazuje co się zmieniło i git revert <commit> cofa to bez utraty historii. Git nie jest kopią zapasową bazy danych, jednak: trzymaj rzeczywiste kopie zapasowe też, jak w backup your FiveM server.

Checklist

Objaw Rozwiązanie
Klucz licencji w repozytorium Przenieś do secrets.cfg, ignoruj go i obróć klucz
cache/ lub txData commitowany Dodaj do .gitignore, następnie git rm -r --cached cache txData
Serwer startuje bez klucza po klonowaniu Utwórz secrets.cfg na serwerze; go nie ma w git
Nowy zasób nie znaleziony po git pull Uruchom refresh, następnie ensure lub restart go
Repozytorium bardzo duże Trzymaj duże streamowane zasoby poza git lub w osobnym magazynie
Musisz cofnąć zmianę git revert <commit> i pull na serwerze

Szybkie odpowiedzi

Czy powinienem umieścić mój cały serwer FiveM w git?

Commituj swoje zasoby i czysty server.cfg. Zostaw cache/, folder txAdmin txData, logi i cokolwiek tajne. Punkt to repozytorium, które możesz sklonować na świeżej maszynie i uruchomić.

Jak trzymam swój klucz licencji poza git?

Przenieś sv_licenseKey, stringi bazy danych i klucze API do secrets.cfg, które są w .gitignore i załaduj go z server.cfg z exec secrets.cfg.

Czy bezpieczne jest użycie publicznego repozytorium?

Nie dla live serwera. Nawet bez tajemnic, repozytorium przechowuje płatne skrypty, których nie możesz redystrybuować. Używaj prywatnego repozytorium.

Skrypty bez tego problemu

Shop CreatorZbuduj sklep w niecałą minutę — właściciele, pracownicy, sejfy i napady w zestawie.Zobacz skrypt →Item Creator V2Twórz używalne przedmioty z animacjami, propami, efektami i nie tylko — bez pisania kodu.Zobacz skrypt →Quest CreatorWizualny edytor questów i dialogów z NPC, budowanych węzeł po węźle w grze.Zobacz skrypt →

Czytaj dalej