Zum Inhalt

Empfohlene server.cfg-Einstellungen für FiveM

Es gibt eine Handvoll Convars, die es wert sind, auf jedem produktiven FiveM-Server gesetzt (oder zumindest überprüft) zu werden. Sie steuern, wie dein Server in der öffentlichen Serverliste auftaucht, ob deine echte IP an Scraper durchsickert, und wie viele gleichzeitige TCP-Verbindungen die Runtime akzeptiert, bevor sie anfängt, sie abzulehnen.

Diese Seite geht alle empfohlenen Convars durch und erklärt, was sie tatsächlich tun, damit du entscheiden kannst, welche auf dein Setup passen.

TL;DR

Pack das oben in deine server.cfg:

# Versteckt die echte Server-IP aus der öffentlichen Liste
sv_forceIndirectListing true

# Sagt dem Listing-Backend, welche IP es abfragen soll (nur nötig,
# wenn es sie nicht selbst herausfinden kann, z. B. hinter NAT oder Reverse Proxy)
sv_listingIpOverride "<deine-öffentliche-ip-oder-proxy-ip>"

# Wenn du deinen Server hinter eine eigene Domain oder Reverse Proxy stellst,
# zeigt das Listing-Backend dorthin statt auf die rohe IP
sv_listingHostOverride "https://play.example.com/"

# Welche Endpunkte den Clients tatsächlich zum Verbinden gegeben werden
# (deine öffentliche IP:Port, oder dein Proxy)
sv_endpoints "<deine-öffentliche-ip>:<dein-game-port>"

# Hebt das TCP-Verbindungslimit pro IP an, damit der HTTP-Layer unter Last
# nicht plötzlich Player-Browser und Asset-Downloads abwürgt
set net_tcpConnLimit 50000

Im Folgenden ist erklärt, was jede Zeile tut und wann du sie behalten (oder weglassen) solltest.

sv_forceIndirectListing true

Aus den offiziellen Cfx.re-Proxy-Docs: "prevents the server list from advertising your server using its actual IP" (verhindert, dass die Serverliste deinen Server mit seiner echten IP bewirbt).

Wenn das aktiv ist, veröffentlicht die FiveM-Serverliste nie deine echte IP. Spieler erreichen deinen Server über das Cfx.re-Listing-Backend, das ihnen dann die Verbindungsadresse weitergibt, die du konfiguriert hast (sv_endpoints / sv_listingHostOverride). Scraper, die die öffentliche Liste nach IPs durchsuchen, um sie für DDoS-Angriffe zu sammeln, sehen nur den indirekten Eintrag.

Empfohlener Wert: true. Für einen normalen produktiven Server gibt es eigentlich keine Nachteile.

sv_listingIpOverride

Aus den offiziellen Docs: "this value is only needed if the server list backend can't guess the IP to query itself, and is not provided to any front-end connection" (dieser Wert ist nur nötig, wenn das Listing-Backend die abzufragende IP nicht selbst erraten kann, und wird an keine Client-Verbindung weitergegeben).

Das Listing-Backend ruft regelmäßig /dynamic.json auf deinem Server ab, um die öffentlichen Daten zu aktualisieren (Spielerzahl, Servername usw.). Wenn dein Server hinter NAT steht, mehrere öffentliche IPs hat oder Anfragen vom Master nur auf einem bestimmten Interface annimmt, kannst du hier die IP fest vorgeben, die das Backend abfragt. Spieler sehen diesen Wert nie.

Bei Zaroz Cloud schreibt unser Entrypoint bei jedem Containerstart bereits den passenden sv_listingIpOverride für die IP, die wir dir zugewiesen haben. Du musst ihn normalerweise nicht selbst setzen. Überschreib ihn nur, wenn du den Traffic gezielt über eine andere IP routest.

sv_listingHostOverride

Aus den offiziellen Docs: "makes the server list backend request https://server1.example.com/ instead of the default" (lässt das Listing-Backend https://server1.example.com/ abfragen statt der Standardadresse).

Das ist die Hostname-Variante derselben Idee. Statt dass das Listing-Backend https://<ip>:<port>/ aufruft, geht die Anfrage an eine Domain, die du kontrollierst. Nützlich, wenn:

  • Du einen Reverse Proxy vor deinen Server gestellt hast (Cloudflare Spectrum, dein eigenes nginx/HAProxy, X4B usw.).
  • Du in der Liste lieber eine stabile Domain als eine nackte IP haben willst.

Wenn du keinen eigenen Proxy oder keine eigene Domain betreibst, lass das ungesetzt und lass das Listing-Backend direkt zu dir durchkommen.

sv_endpoints

Aus den offiziellen Docs: "the actual endpoint your server is hosted on, or one or multiple server endpoint proxies" (der echte Endpunkt, auf dem dein Server läuft, oder ein oder mehrere Endpoint-Proxies).

Das ist der Wert, den das Listing-Backend den Spielern weitergibt, wenn sie auf deinen Server klicken. Wenn sv_forceIndirectListing aktiv ist, ist das die einzige Wahrheit darüber, wo Spieler tatsächlich landen (getrennt davon, wohin das Backend dich pingt; das steuert sv_listingIpOverride).

Setze ihn auf:

  • Deine öffentliche IP und den Game-Port (1.2.3.4:30120), oder
  • Deinen Proxy- oder Tunnel-Endpunkt, wenn du Traffic über einen DDoS-Schutz routest.

Du kannst mehrere Endpunkte mit Leerzeichen getrennt angeben, wenn du Fallbacks willst.

set net_tcpConnLimit 50000

Diese Convar begrenzt die Anzahl gleichzeitiger TCP-Verbindungen, die der FiveM-Server pro Quell-IP akzeptiert. Der Standardwert ist 16, was für einen kleinen Server reicht, aber unter echter Last schnell stört:

  • Der ingame-Server-Browser öffnet pro Spieler mehrere Verbindungen, während er /info.json, /dynamic.json und /players.json abfragt.
  • Asset-Downloads (fivem-data, Streaming) wiederverwenden und öffnen ständig neue Verbindungen.
  • Reverse Proxies (Cloudflare, Spectrum, eigene) bündeln viele Client-IPs in einen kleinen Pool von Proxy-IPs, also kann eine einzige "Quell-IP" legitim Tausende gleichzeitiger Verbindungen brauchen.

Wenn das Limit erreicht ist, fängt der Server an, neue TCP-Verbindungen abzulehnen. Beim Client sieht das wie Verbindungsabbrüche aus, in den Logs erscheint es als Error 56-CURL-Fehler.

Auf 50000 hochzusetzen, ist der Wert, den die meisten produktiven Server und DDoS-Schutz-Anbieter empfehlen. Großzügig genug, dass ein Proxy mit hunderten Spielern dahinter nicht abgewürgt wird, und gleichzeitig immer noch eine Obergrenze für die Arbeit, die der Server für einen einzelnen Peer erledigt.

Was Zaroz Cloud automatisch für dich erledigt

Du musst nicht alles selbst von Hand machen. Bei jedem Containerstart erledigt unser Entrypoint:

  • Entfernt alle vorhandenen Zeilen endpoint_add_tcp, endpoint_add_udp und set sv_listingIpOverride aus deiner server.cfg.
  • Schreibt neue Zeilen, die an den echten Port und die öffentliche IP gebunden sind, die wir dir zugewiesen haben.

In der Praxis heißt das, dass ganz oben in deiner server.cfg immer etwas in der Art steht, passend zu IP und Port deiner Bestellung:

endpoint_add_tcp "0.0.0.0:<dein-port>"
endpoint_add_udp "0.0.0.0:<dein-port>"
set sv_listingIpOverride "<deine-öffentliche-ip>"

Diese drei Zeilen musst (und solltest) du nicht selbst anfassen: sie werden bei jedem Boot neu geschrieben, um zur aktuellen Zuweisung zu passen. Das Minimum, das du normalerweise oben drauf setzen willst, ist sv_forceIndirectListing true und set net_tcpConnLimit 50000. Der Rest ist nur dann relevant, wenn du eine eigene Domain oder einen eigenen Proxy vor den Server stellst.

Wann du dich melden solltest

Wenn du diese Konfiguration gesetzt hast und trotzdem siehst:

  • Verbindungsabbrüche oder Error 56 unter Last.
  • Der Server taucht nicht in der öffentlichen Liste auf.
  • Spieler kommen mit der Adresse aus dem Dashboard nicht rein.

Schick uns deine server.cfg (Lizenzschlüssel kannst du schwärzen) und deine Bestellnummer, dann schauen wir drauf.