Réglages recommandés pour server.cfg sur FiveM¶
Quelques convars valent la peine d'être réglées (ou au moins vérifiées) sur tout serveur FiveM en production. Elles contrôlent comment ton serveur apparaît dans la liste publique, si ton IP brute fuite aux scrapers, et combien de connexions TCP simultanées la runtime accepte avant de commencer à les refuser.
Cette page passe en revue celles qu'on recommande et explique ce que chacune fait vraiment, pour que tu choisisses celles qui s'appliquent à ton setup.
TL;DR¶
Pose ça en haut de ton server.cfg :
# Cache l'IP brute du serveur dans le listing public
sv_forceIndirectListing true
# Indique au backend de la liste quelle IP interroger (utile seulement
# s'il ne peut pas la deviner lui-même, par exemple derrière du NAT ou un reverse proxy)
sv_listingIpOverride "<ton-ip-publique-ou-celle-de-ton-proxy>"
# Si tu mets ton serveur derrière un domaine perso ou un reverse proxy,
# pointe le backend du listing dessus au lieu de l'IP brute
sv_listingHostOverride "https://play.example.com/"
# Annonce le ou les endpoints auxquels les joueurs doivent se connecter
# (ton IP publique:port, ou celui de ton proxy)
sv_endpoints "<ton-ip-publique>:<ton-port-de-jeu>"
# Augmente la limite de connexions TCP par IP pour que la couche HTTP
# n'étrangle pas les browsers de joueurs et les téléchargements d'assets sous charge
set net_tcpConnLimit 50000
Plus bas, ce que fait chaque ligne et dans quels cas tu la gardes (ou pas).
sv_forceIndirectListing true¶
D'après la doc officielle Cfx.re : "prevents the server list from advertising your server using its actual IP" (empêche la liste de publier ton serveur avec sa vraie IP).
Avec ce flag activé, la liste FiveM ne publie jamais ton IP brute. Les joueurs passent par le backend Cfx.re, qui leur donne ensuite l'adresse de connexion que tu as configurée (sv_endpoints / sv_listingHostOverride). Les scrapers qui ratissent la liste publique pour récupérer des IPs et lancer du DDoS ne voient que l'entrée indirecte.
Valeur recommandée : true. Pour un serveur de production classique, il n'y a quasiment aucun inconvénient.
sv_listingIpOverride¶
D'après la doc officielle : "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" (cette valeur n'est utile que si le backend ne peut pas deviner seul l'IP à interroger, et elle n'est jamais transmise aux connexions clients).
Le backend du listing tape régulièrement /dynamic.json sur ton serveur pour rafraîchir les données publiques (nombre de joueurs, nom du serveur, etc.). Si ton serveur est derrière du NAT, a plusieurs IPs publiques, ou n'accepte les requêtes du master que sur une interface précise, tu peux ici figer l'IP à interroger. Les joueurs ne voient jamais cette valeur.
Sur Zaroz Cloud, notre entrypoint écrit déjà le bon sv_listingIpOverride pour l'IP qu'on t'a attribuée, à chaque démarrage du conteneur. Tu n'as donc normalement pas à le poser toi-même. Ne le surcharge que si tu fais passer le trafic par une autre IP que la nôtre.
sv_listingHostOverride¶
D'après la doc officielle : "makes the server list backend request https://server1.example.com/ instead of the default" (fait taper le backend du listing sur https://server1.example.com/ au lieu de l'adresse par défaut).
C'est la version « par domaine » de la même idée. Au lieu que le backend tape https://<ip>:<port>/, il interroge un domaine que tu maîtrises. Utile quand :
- Tu as un reverse proxy devant ton serveur (Cloudflare Spectrum, ton propre nginx/HAProxy, X4B, etc.).
- Tu veux qu'apparaisse un domaine stable dans la liste, pas une IP brute.
Si tu n'as ni proxy ni domaine perso, laisse-le vide et laisse le backend taper direct sur ton serveur.
sv_endpoints¶
D'après la doc officielle : "the actual endpoint your server is hosted on, or one or multiple server endpoint proxies" (l'endpoint réel sur lequel ton serveur tourne, ou un ou plusieurs proxies d'endpoint).
C'est ce que le backend remet aux joueurs quand ils cliquent sur ton serveur. Si sv_forceIndirectListing est activé, c'est la seule source de vérité pour où les joueurs se connectent réellement, à part de l'endroit où le backend te pingue (sv_listingIpOverride).
Mets-y :
- Ton IP publique et ton port de jeu (
1.2.3.4:30120), ou - L'endpoint de ton proxy ou tunnel, si tu fais passer le trafic par un anti-DDoS.
Tu peux lister plusieurs endpoints séparés par des espaces pour avoir des fallbacks.
set net_tcpConnLimit 50000¶
Cette convar plafonne le nombre de connexions TCP simultanées que le serveur FiveM accepte par IP source. La valeur par défaut est 16, ce qui passe pour un petit serveur mais saute vite en charge réelle :
- Le browser de serveurs intégré ouvre plusieurs connexions par joueur en interrogeant
/info.json,/dynamic.jsonet/players.json. - Les téléchargements d'assets (
fivem-data, streaming) réutilisent et ouvrent des connexions de façon agressive. - Les reverse proxies (Cloudflare, Spectrum, le tien) regroupent plein d'IPs clients derrière un petit pool d'IPs proxy : une seule « IP source » peut donc légitimement avoir besoin de milliers de connexions simultanées.
Une fois la limite atteinte, le serveur refuse les nouvelles connexions TCP. Côté client, ça donne des coupures, et côté logs, des erreurs type Error 56 de CURL.
Monter à 50000 est la valeur que recommandent la plupart des serveurs en prod et des fournisseurs de protection DDoS. Suffisamment large pour qu'un proxy avec des centaines de joueurs derrière ne se fasse pas étrangler, et ça reste un plafond raisonnable sur le boulot que le serveur veut bien faire pour un seul peer.
Ce que Zaroz Cloud fait automatiquement pour toi¶
Tu n'as pas à tout faire à la main. À chaque démarrage du conteneur, notre entrypoint :
- Supprime toutes les lignes existantes
endpoint_add_tcp,endpoint_add_udpetset sv_listingIpOverridede taserver.cfg. - Les remet, accrochées au vrai port et à l'IP publique qu'on a réservés pour toi.
En pratique, ça veut dire qu'en tête de ta server.cfg tu trouveras toujours quelque chose comme ça, calé sur l'IP et le port de ta commande :
endpoint_add_tcp "0.0.0.0:<ton-port>"
endpoint_add_udp "0.0.0.0:<ton-port>"
set sv_listingIpOverride "<ton-ip-publique>"
Tu n'as pas besoin (et tu ne devrais pas essayer) de modifier ces trois lignes à la main : elles sont réécrites à chaque boot pour coller à l'attribution courante. Le minimum que tu veux poser par-dessus, c'est sv_forceIndirectListing true et set net_tcpConnLimit 50000. Le reste n'est utile que si tu mets ton propre domaine ou proxy devant le serveur.
Quand nous écrire¶
Si tu as appliqué cette config et que tu vois encore :
- Des coupures ou des
Error 56sous forte charge. - Le serveur qui n'apparaît pas dans la liste publique.
- Des joueurs qui n'arrivent pas à se connecter avec l'adresse du tableau de bord.
Envoie-nous ta server.cfg (tu peux masquer les license keys) et ton numéro de commande, on y jette un œil.