FiveM Server Git: Was zu commiten ist, .gitignore und Git Pull Deploys

Stelle deinen FiveM-Server auf sichere Weise unter Git: Was zu commiten ist, ein .gitignore für Cache und txData, Schlüssel mit secrets.cfg herausholen, Private-Repos und Git-Pull-Deploys.

Ein Server, das nur auf einer Festplatte lebt, hat keine Geschichte: Eine schlechte Bearbeitung am Freitag Abend kann nicht rückgängig gemacht werden, und das Verschieben von Maschinen bedeutet das Kopieren von Ordnern von Hand. Wenn man es unter Git stellt, behebt beides. Diese Anleitung zeigt, was zu commiten ist, die .gitignore zu verwenden, wie man Geheimnisse heraushält, und wie man mit git pull bereitgestellt wird.

Was ins Repository geht

Commite die Dinge, die du schreibst oder konfigurierst:

  • Deine Resources (der resources/ Ordner, einschließlich Config und SQL-Dateien).
  • Ein server.cfg ohne Geheimnisse.
  • Kleine Helfer-Dateien, wie eine README mit der Start-up-Reihenfolge.

Commite nicht generierte oder private Dateien:

  • cache/, das FiveM neuaufbaut. Siehe Leere den FiveM Cache.
  • Der txAdmin Daten-Ordner (txData), mit seinen Einstellungen, Admin-Konten und Logs.
  • Geheimnisse: der Lizenzschlüssel, das Datenbank-Passwort und API-Schlüssel.
  • Logs, Crash-Dumps und node_modules.

Ein anfängliches .gitignore

An der Wurzel des Repository (der Server-Daten-Ordner, der resources/ und server.cfg enthält):

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

Wenn du den ganzen txAdmin-Ordner absichtlich versionierst, entferne txData/ aus der Liste, aber behalte ihn privat und weg aus jedem geteilten Repository. Große binäre Assets (gestreamte Autos, MLOs) machen ein Repository groß; erwäge, ob sie überhaupt in Git sein sollten oder in einem separaten Speicher behalten.

Halte Schlüssel aus server.cfg

Dies ist der Teil, der am häufigsten schiefgeht. Diese Zeilen sind Geheimnisse:

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

Verschiebe sie in eine separate Datei, secrets.cfg, die in .gitignore ist:

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

Und lade es am Anfang des committed 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

Commite ein secrets.cfg.example mit leeren Werten, damit die nächste Person weiß, was zu füllen. Siehe server.cfg erklärt für die Einstellungen selbst.

Achtung: Wenn ein Schlüssel jemals committed wurde, ist das Löschen in einem späteren Commit nicht genug. Es ist immer noch in der Geschichte. Generiere einen neuen Schlüssel oder Passwort und behandle den alten als durchgesickert.

Erstelle das Repository

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

Lies die git status Liste, bevor du commitest und überprüfe, dass nichts aus der "nicht commiten" Liste gestellt ist. Dann:

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

Nutze ein privates Repository. Bezahlte Resources sind dir lizenziert, und das Setzen in ein öffentliches Repository ist Weitergabe, auch wenn der Code verschlüsselt ist. Siehe escrow Mangel Berechtigung für wie verschlüsselte Assets an deinen Account gebunden sind.

Stelle mit Git Pull bereit

Auf der Maschine, die den Server ausführt, clone einmal und pull danach:

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

Um nach einem Push von deinem Entwicklungs-PC zu aktualisieren:

bash
cd server-data
git pull

Dann lade das Geänderte neu. Für eine einzelne Resource, von der Server-Konsole:

text
refresh
restart my_resource

Wenn server.cfg oder eine Start-up-Reihenfolge geändert, plane einen vollständigen Neustart (siehe geplante Neustarts). Mache nicht git pull in der Mitte von Spitzenstunden ohne Plan, da viele Ressourcen, die auf einmal neu starten, den Server spitzen können.

Für Authentifizierung auf einem privaten Repository, nutze einen SSH Deploy-Schlüssel mit nur Read-Zugriff oder einen persönlichen Zugriffs-Token. Gib niemals dein eigenes Passwort in Skripte ein.

Eine einfache Branch-Gewohnheit

Behalte main als das, was Live ist. Mache Änderungen auf einem Branch, teste auf einem lokalen oder Staging-Server, dann merge:

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

Wenn etwas nach einem Pull bricht, zeigt git log, was sich geändert hat, und git revert <commit> macht es rückgängig, ohne Geschichte zu verlieren. Git ist keine Sicherung der Datenbank: Behalte echte Sicherungen auch, wie in sicher deinen FiveM Server.

Checkliste

Symptom Behebung
Lizenzschlüssel im Repository Verschiebe zu secrets.cfg, ignoriere ihn und rotiere den Schlüssel
cache/ oder txData committed Füge zu .gitignore hinzu, dann git rm -r --cached cache txData
Server startet ohne Schlüssel nach Clonen Erstelle secrets.cfg auf dem Server; es ist nicht in Git
Neue Resource nicht gefunden nach git pull Führe refresh aus, dann ensure oder restart es
Repository sehr groß Halte große gestreamte Assets aus Git oder in ihrem eigenen Speicher
Brauch eine Änderung rückgängig git revert <commit> und pull auf dem Server

Kurze Antworten

Sollte ich meinen ganzen FiveM-Server in Git setzen?

Commite deine Resources und ein sauberes server.cfg. Lasse cache/, den txAdmin txData Ordner, Logs und alles Geheime weg. Der Punkt ist ein Repository, das du auf einer frischen Maschine klonen und ausführen kannst.

Wie halte ich meinen Lizenzschlüssel aus Git?

Verschiebe sv_licenseKey, Datenbank-Strings und API-Schlüssel in ein secrets.cfg, das in .gitignore ist, und lade es aus server.cfg mit exec secrets.cfg.

Ist es sicher, ein öffentliches Repository zu verwenden?

Nicht für einen Live-Server. Auch ohne Geheimnisse, das Repository hält bezahlte Skripte, die du nicht weitergeben darfst. Nutze ein privates Repository.

Scripts ohne dieses Problem

Shop CreatorBau einen Shop in unter einer Minute — Besitzer, Angestellte, Tresore und Überfälle inklusive.Script ansehen →Item Creator V2Erstelle nutzbare Items mit Animationen, Props, Effekten und mehr — ganz ohne Code.Script ansehen →Quest CreatorEin visueller Editor für Quests und NPC-Dialoge, Node für Node im Spiel gebaut.Script ansehen →

Weiterlesen