Sichern Sie sich heute 20%. Verwenden Sie beim Bezahlvorgang den Code WELCOME. WILLKOMMEN

So führen Sie einen FiveM-Server mit Docker aus

Stellen Sie mit Docker Compose einen zuverlässigen FiveM-Server bereit: Installieren und konfigurieren Sie server.cfg, öffnen Sie Ports, speichern Sie Daten und verwalten Sie Updates.

Kurz zusammengefasst

  • Installieren Sie Docker Engine + Docker Compose v2 auf Ubuntu. (Docker-Dokumentation)
  • Erstellen Sie einen Projektordner, fügen Sie .env (Satz Lizenzschlüssel, SERVERNAME, Ports) und eine minimale compose.yaml.
  • Beginnen Sie mit Docker komponieren -d; Protokolle ansehen mit Docker Compose-Protokolle -f.
  • Bearbeiten data/server.cfg (Hostname, Endpunkte, Ressourcen); starten Sie den Container neu.
  • Öffnen Sie die Firewall für 30120/TCP+UDP Und 40120/TCP (txAdmin). Der Standardport von txAdmin ist 40120. (Cfx.re-Dokumente)
  • Führen Sie den Container immer mit stdin/tty aktiviert, um Abstürze zu vermeiden. (GitHub)

Voraussetzungen

  • Betriebssystem: Linux Ubuntu 22.04+ (Hinweise für macOS/Windows unten).
  • Hardware: 2+ vCPU, 4–8 GB RAM (mehr für schwere Ressourcen), SSD empfohlen.
  • Docker: Installieren Docker-Engine Und Compose v2 aus offiziellen Dokumenten. (Docker-Dokumentation)
  • FiveM-Lizenzschlüssel: Im Cfx.re-Portal (Keymaster) generieren. Geheim halten. (support.cfx.re)
  • Firewall/NAT: Möglichkeit zum Öffnen/Weiterleiten der Ports 30120 (TCP+UDP) und optional 40120 (TCP). (Cfx.re-Dokumente)
  • (Optional) Eine Domäne/Subdomäne für txAdmin.

Architekturübersicht

Ein Container läuft FXServer mithilfe der Sprietsegel/fivem Bild. Daten sind Bind-Mounted fortbestehen server.cfg, Ressourcen und Protokolle. Ports 30120/TCP+UDP sind den Spielern ausgesetzt; 40120/TCP macht txAdmin verfügbar, wenn aktiviert. Ein Gesundheitscheck kann sondieren http://127.0.0.1:30120/info.json. (GitHub)

+-------------------- Docker-Host (Ubuntu) --------------------+ | /home/fivem/data --> /config (im Container) | | /home/fivem/txData --> /txData (txAdmin-Daten) | | | | Offengelegt: 30120/tcp+udp [FXServer] | 40120/tcp [txAdmin] | | Healthcheck: GET 127.0.0.1:30120/info.json | +-------------------------------------------------------------+

Schnellstart (Kopieren und Einfügen)

1) Erstellen Sie einen Projektordner

# Optional: dedizierter Systembenutzer und Verzeichnisse sudo useradd -r -m -d /home/fivem -s /usr/sbin/nologin fivem || true sudo mkdir -p /home/fivem/{data,txData} sudo chown -R "$USER":"$USER" /home/fivem cd /home/fivem

2) Erstellen .env

cat > .env <<'EOF' # === ERFORDERLICH === LICENSE_KEY=ERSETZT_DURCH_IHR_CFX_KEY # Komfort (wird von der Portzuordnung unten verwendet) FXSERVER_PORT=30120 TXADMIN_PORT=40120 # Wird nicht direkt vom Image gelesen; verwenden Sie es beim Bearbeiten von server.cfg SERVER_NAME="My Docker FiveM" # Optional: Wenn weggelassen, legt die Standardkonfigurationsgenerierung ein zufälliges RCON-Passwort fest RCON_PASSWORD= EOF

3) Minimal compose.yaml (ein Tag anheften)

Kleinstes funktionierendes Setup unter Verwendung des Upstream-Images. Verwendet tty+stdin um einen Absturz zu verhindern. (GitHub)

# compose.yaml Dienste: fivem: Bild: spritsail/fivem: stabiler Containername: fivem Umgebung: - LICENSE_KEY=${LICENSE_KEY} # Optionale Umschalter (siehe Tabelle unten): # - NO_DEFAULT_CONFIG=1 # erforderlich, wenn Sie txAdmin verwenden möchten # - NO_LICENSE_KEY=1 # wenn Sie den Schlüssel stattdessen in server.cfg einfügen # - NO_ONESYNC=1 # OneSync in der Standardkonfiguration deaktivieren # - RCON_PASSWORD=${RCON_PASSWORD} Volumes: - ./data:/config # server.cfg, Ressourcen, Protokolle Ports: - "${FXSERVER_PORT}:30120/tcp" - "${FXSERVER_PORT}:30120/udp" tty: true # verhindert Absturz beim Start (entspricht -t) stdin_open: true # verhindert Absturz beim Start (entspricht -i) Neustart: sofern nicht gestoppt

Starten Sie es:

Docker Compose Up -d Docker Compose Logs -f

4) Erweiterte Variante (txAdmin, Healthcheck, Limits)

# compose.extended.yaml-Dienste: fivem: Image: spritsail/fivem:stable container_name: fivem Umgebung: - LICENSE_KEY=${LICENSE_KEY} - NO_DEFAULT_CONFIG=1 # txAdmin aktivieren (kein Standard +exec) # - NO_LICENSE_KEY=1 # wenn Schlüssel in server.cfg gespeichert wird # - RCON_PASSWORD=${RCON_PASSWORD} Volumes: - ./data:/config - ./txData:/txData # txAdmin-Datenports beibehalten: - "${FXSERVER_PORT}:30120/tcp" - "${FXSERVER_PORT}:30120/udp" - "${TXADMIN_PORT}:40120/tcp" # txAdmin-Web-UI (Standard 40120) tty: true stdin_open: true healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:30120/info.json >/dev/null 2>&1"] Intervall: 30 s Timeout: 5 s Wiederholungen: 5 Startperiode: 30 s # Grundlegende Ressourcenknöpfe für eigenständiges Compose (nicht Swarm-Bereitstellung) CPUs: 2 Mem_limit: "6g" Ulimits: nofile: soft: 1048576 hard: 1048576 Neustart: sofern nicht gestoppt

Wenn wget ist im Bild nicht verfügbar, entfernen Sie den Healthcheck oder ersetzen Sie ihn durch eine TCP-Sonde. txAdmin bleibt bestehen unter /txData, Hafen 40120 ist die Standardeinstellung. (GitHub)


Konfiguration und Persistenz

  • Beim ersten Ausführen werden die Standardwerte in den Bind-Mount geschrieben ./Daten (Containerpfad /Konfiguration). Bearbeiten ./data/server.cfg und starten Sie den Container neu. (GitHub)

Typisch server.cfg Bits:

# data/server.cfg # Netzwerkendpunkte (lassen Sie 0.0.0.0, um auf allen Schnittstellen zu lauschen) endpoint_add_tcp "0.0.0.0:30120" endpoint_add_udp "0.0.0.0:30120" # Servername gesetzt sv_hostname "My Docker FiveM" # Lizenzschlüssel (nur verwenden, wenn LICENSE_KEY env NICHT verwendet wird) # sv_licenseKey "REPLACE_WITH_YOUR_CFX_KEY" # Beispiel: Stellen Sie eine Basisressource sicher # Stellen Sie den Chat sicher

Verzeichnislayout (Gastgeber):

/home/fivem ├─ data/ -> /config (server.cfg, resources/, logs/) └─ txData/ -> /txData (txAdmin-Profile & DB)

Backups

  • Bind-Mount-Backup:
tar -C /home/fivem -czf fivem-backup_$(Datum +%F).tgz Daten txData
  • Wenn Sie wechseln zu benannte Datenträger, sichern Sie wie folgt:
docker run --rm -v fivem_data:/data -v "$PWD":/backup busybox \ sh -c 'tar -czf /backup/fivem_data_$(date +%F).tgz -C / data'

Umgebungsvariablen (von Sprietsegel/fivem)

NameZweckBeispiel
LizenzschlüsselErforderlich FiveM-Server-Lizenzschlüssel zum Starten von FXServerLICENSE_KEY=xxxxx
RCON_PASSWORDRCON-Passwort, das beim Erstellen von Standardkonfigurationen verwendet wird; zufällige 16-Zeichen, wenn nicht festgelegtRCON_PASSWORD=starkesPasswort
NO_DEFAULT_CONFIGStandard deaktivieren +exec damit txAdmin den Server verwalten kann1
KEIN_LIZENZSCHLÜSSELSchlüssel nicht aus der Umgebung lesen; behalten Sie ihn in server.cfg1
NO_ONESYNCDeaktivieren Sie OneSync in Standardkonfigurationen1

Diese Umgebungsvariablen und Pfade /Konfiguration, /txData, sowie die Notwendigkeit für -ti werden durch das Upstream-Bild definiert. (GitHub)

Geheimnis Handhabung: Bevorzugen NO_LICENSE_KEY=1 und setzen sv_licenseKey In server.cfg mit den richtigen Dateiberechtigungen, wenn Sie den Schlüssel nicht in der Containerumgebung haben möchten. (GitHub)


Netzwerk und Sicherheit

Erforderliche Ports

ZweckHafenProto
Spielerverbindungen / API30120TCP+UDP
txAdmin-Web-UI (optional)40120TCP
Legacy-Master (selten benötigt)30110UDP

Der Standardwert von FiveM ist 30120; der Standardwert von txAdmin ist 40120. (GitHub)

UFW-Beispiele (Ubuntu)

sudo ufwallow 30120/tcp sudo ufwallow 30120/udp sudo ufwallow 40120/tcp # nur, wenn Sie txAdmin sudo ufw reload aktivieren

nftables (Beispiel-Regelsatzauszug)

sudo nft add table inet filter sudo nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }' sudo nft add rule inet filter input ct state established,related accept sudo nft add rule inet filter input iif lo accept sudo nft add rule inet filter input tcp dport {30120,40120} accept sudo nft add rule inet filter input udp dport 30120 accept

Geringste Privilegien und Geheimnisse

  • Führen Sie Docker auf einem gehärteten Host aus. Vermeiden Sie die Zuordnung zusätzlicher Funktionen. Führen Sie Docker nicht als Wurzel Benutzer auf dem Host.
  • Halten RCON nur bei Bedarf aktiviert; schützen Sie txAdmin mit starken Anmeldeinformationen und beschränken Sie den Zugriff an der Firewall.
  • Wenn Sie SELinux-basierte Distributionen (nicht Ubuntu) verwenden, fügen Sie hinzu :Z/:z um Mounts zu binden und Kontextprobleme zu beheben.

Updates und Rollbacks

Auf das neueste angeheftete Tag aktualisieren

Docker Compose Pull Docker Compose Up -d

Pin von Digest (unveränderlich)

# Ziehen und ermitteln Sie den Digest des aktuellen Tags. Docker Pull Spritsail/fivem:stable Docker Inspection --format='{{index .RepoDigests 0}}' Spritsail/fivem:stable # Verwenden Sie den gedruckten Wert in der Komposition, z. B.: # Bild: Spritsail/fivem@sha256:abcdef...

Rollback

  • Ändern Sie die Bildreferenz zurück zum vorherigen Tag/Digest und Docker komponieren -d.
  • Behalten Sie aktuelle Bildübersichten mit Docker-Image ls --digests.

Das Bild liefert stabil Und letzte Tags; bevorzugen stabil für weniger Überraschungen. (GitHub)


Überwachung und Wartung

  • Status: Docker PS, Docker Compose PS
  • Protokolle: Docker Compose-Protokolle -f
  • Statistiken: Docker-Statistiken fivem
  • Gesundheitscheck: Umfragen info.json; entfernen/anpassen, wenn Werkzeuge fehlen. (Cfx.re-Dokumente)
  • Scheibe: Docker-System df, bereinigen Sie alte Bilder, falls erforderlich.
  • Backups: Führen Sie den Tar-Befehl in „Konfiguration und Persistenz“ mit einem Cron aus.

Fehlerbehebung

  • Ungültiger Lizenzschlüssel: Überprüfen Sie im Cfx.re-Portal und stellen Sie sicher, dass nur ein Server den Schlüssel verwendet. (support.cfx.re)
  • Bereits verwendete Ports: sudo ss -lntup | grep 30120; den widersprüchlichen Dienst beenden oder ändern FXSERVER_PORT.
  • Kann txAdmin nicht erreichen: Offen 40120/TCP oder Port ändern; bestätigen NO_DEFAULT_CONFIG=1. (Cfx.re-Dokumente)
  • Container wird beim Start beendet: Sicherstellen tty: wahr Und stdin_open: wahr sind eingestellt. (GitHub)
  • Zeit-/DNS-Probleme: Stellen Sie sicher, dass die Host-Zeitsynchronisierung (systemd-timesyncd/chrony) und das DNS funktionieren (/etc/resolv.conf).
  • SELinux-Ablehnungen (nicht Ubuntu): Verwenden :Z/:z beim Binden von Mounts oder beim Anpassen von Kontexten.
  • info.json/players.json blockiert: Einige Convars oder Proxies können diese Endpunkte beeinflussen; bestätigen Sie, dass der Server antwortet auf GET /info.json. (Cfx.re-Dokumente)

Leistungstipps

  • CPU/Speicher: CPUs fixieren und Speicherlimits festlegen (siehe erweitertes Compose).
  • Lagerung: Verwenden Sie SSD/NVMe; halten Sie Ressourcenpakete optimiert; vermeiden Sie große, unkomprimierte Assets.
  • Vernetzung: Halten Sie die Latenz niedrig; stellen Sie sicher, dass die CPU des Hosts nicht gedrosselt wird; priorisieren Sie UDP 30120.
  • Host-Kernel: Angemessene Standardeinstellungen funktionieren; erweiterte Sysctls (net.core.*mem_max) kann angepasst werden, wenn Sie Ihre Arbeitslast kennen.
  • Protokolle: Verwenden Sie die Protokollrotation (wie im erweiterten Beispiel).

Hinweise zu macOS/Windows

  • macOS (Docker Desktop): Bind-gemountete Datei-E/A ist langsamer als natives Linux; denken Sie an Docker Desktop Synchronisierte Dateifreigaben für eine bessere Leistung und stellen Sie sicher, dass der Ordner in den Einstellungen freigegeben ist. (Docker-Dokumentation)
  • Windows (WSL2): Veröffentlichte Ports sind erreichbar über lokaler Host unter Windows; die Bereitstellung im LAN kann je nach Modus zusätzliche Konfiguration erfordern. Für öffentliche Server ist Linux-Hosting vorzuziehen. (Docker-Dokumentation)

Saubere Deinstallation

# Container stoppen und entfernen (Daten behalten) docker compose down # Container + anonyme Netzwerke + Images entfernen (bind-gemountete Daten behalten) docker compose down --rmi local --remove-orphans # Wenn Sie benannte Volumes verwendet haben (nicht in diesem Handbuch), listen Sie sie auf und entfernen Sie sie explizit: # docker volume ls # docker volume rm

Löschen alle Daten, entfernen Sie die Bind-Mount-Verzeichnisse:

sudo rm -rf /home/fivem/data /home/fivem/txData

Häufig gestellte Fragen

Kann ich mehrere Server auf einem Host hosten?
Ja. Verwenden Sie separate Projektverzeichnisse, verschiedene FXSERVER_PORT/TXADMIN_PORTund verschiedene Bind-Mounts. txAdmin unterstützt Daten pro Profil in /txData. (Cfx.re-Dokumente)

Wie ändere ich den in der Liste angezeigten Servernamen/die IP?
Bearbeiten sv_hostname In data/server.cfg. Die IP/der Port stammen aus Ihren veröffentlichten Ports und der NAT-Konfiguration.

Kann ich bei einem Absturz automatisch neu starten?
Ja. Neustart: sofern nicht gestoppt in Compose; berücksichtigen Sie auch Systemd-Timer für Watchdogs.

Wo befinden sich die Backups?
Wo Sie sie erstellen, z. B. fivem-backup_JJJJ-MM-TT.tgz in Ihrem Arbeitsverzeichnis. Siehe die Sicherungsbefehle oben.

Wie aktiviere ich txAdmin?
Satz NO_DEFAULT_CONFIG=1, Bind-Mount /txDataund öffnen 40120/TCP. (GitHub)

Muss ich 30110 öffnen?
Selten. Es wurde für die Legacy-Auflistung verwendet; moderne Setups benötigen normalerweise nur 30120 und txAdmins 40120, falls verwendet. (Cfx.re Gemeinschaft)

Wie verschiebe ich den Server auf eine andere Maschine?
Kopie Daten/ Und txData/ zum neuen Host, erstellen Sie dieselbe Compose-Datei neu und starten Sie.


Links & Credits

  • Upstream-Bild: Sprietsegel/fivem (Umgebungsvariablen, Pfade, Verwendung, txAdmin-Notizen, -ti Erfordernis). (GitHub)
  • Docker:
  • Cfx.re / FiveM:

Lukas
Lukas

Ich bin Luke, ein Gamer und schreibe gerne über FiveM, GTA und Rollenspiele. Ich betreibe eine Rollenspiel-Community und habe etwa 10 Jahre Erfahrung in der Verwaltung von Servern.

Artikel570