Ajustes recomendados para server.cfg en FiveM¶
Hay un puñado de convars que merece la pena dejar bien puestas (o al menos revisar) en cualquier servidor de FiveM en producción. Controlan cómo aparece tu servidor en la lista pública, si tu IP real se filtra a los rastreadores, y cuántas conexiones TCP simultáneas acepta el motor antes de empezar a rechazarlas.
En esta página repasamos las que recomendamos y explicamos qué hace cada una, para que decidas cuáles te interesan en tu caso.
Resumen rápido¶
Pega esto cerca del principio de tu server.cfg:
# Oculta la IP real del servidor en la lista pública
sv_forceIndirectListing true
# Indica al backend de la lista qué IP debe consultar (solo hace falta
# si no la puede deducir solo, por ejemplo detrás de NAT o un proxy inverso)
sv_listingIpOverride "<tu-ip-publica-o-la-de-tu-proxy>"
# Si pones tu servidor detrás de un dominio propio o un proxy inverso,
# apunta el backend de la lista a ese dominio en vez de a la IP real
sv_listingHostOverride "https://play.example.com/"
# Anuncia el endpoint (o endpoints) al que los clientes deben conectar
# (tu IP pública:puerto, o el de tu proxy)
sv_endpoints "<tu-ip-publica>:<tu-puerto-del-juego>"
# Sube el límite de conexiones TCP por IP para que la capa HTTP
# no estrangule los listados de jugadores ni las descargas con carga real
set net_tcpConnLimit 50000
Más abajo tienes qué hace cada línea y cuándo te interesa (o no) dejarla puesta.
sv_forceIndirectListing true¶
De la documentación oficial de Cfx.re: "prevents the server list from advertising your server using its actual IP" (impide que la lista de servidores anuncie tu servidor usando su IP real).
Con esto activado, la lista de FiveM nunca publica tu IP real. Los jugadores llegan a tu servidor a través del backend de Cfx.re, que les entrega después la dirección de conexión que tú hayas configurado (sv_endpoints / sv_listingHostOverride). Los rastreadores que escarban la lista pública para sacar IPs y atacarlas por DDoS solo ven la entrada indirecta.
Valor recomendado: true. En un servidor normal en producción no tiene prácticamente ninguna contrapartida.
sv_listingIpOverride¶
De la documentación oficial: "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" (solo hace falta si el backend de la lista no puede deducir solo qué IP consultar, y no se le pasa a ninguna conexión de cliente).
El backend de la lista te hace peticiones cada cierto tiempo a /dynamic.json para refrescar los datos públicos (jugadores conectados, nombre del servidor, etc.). Si tu servidor está detrás de NAT, tiene varias IPs públicas, o solo acepta las peticiones del master por una interfaz concreta, aquí puedes fijar a qué IP debe ir el backend. Los jugadores nunca ven este valor.
En Zaroz Cloud, nuestro entrypoint ya escribe el sv_listingIpOverride correcto, apuntando a la IP que te tenemos asignada, cada vez que arranca el contenedor, así que normalmente no hace falta que lo pongas tú. Solo deberías sobreescribirlo si estás enrutando el tráfico por otra IP distinta a la que te damos.
sv_listingHostOverride¶
De la documentación oficial: "makes the server list backend request https://server1.example.com/ instead of the default" (hace que el backend de la lista pida https://server1.example.com/ en lugar de la dirección por defecto).
Es la versión "por dominio" de la misma idea. En vez de que el backend pegue a https://<ip>:<puerto>/, hace la petición a un dominio que tú controlas. Te interesa cuando:
- Has puesto un proxy inverso delante de tu servidor (Cloudflare Spectrum, tu propio nginx/HAProxy, X4B, etc.).
- Quieres que en la lista aparezca un dominio estable en vez de una IP cruda.
Si no tienes proxy ni dominio propio, déjalo sin poner y deja que el backend de la lista llegue directo a tu servidor.
sv_endpoints¶
De la documentación oficial: "the actual endpoint your server is hosted on, or one or multiple server endpoint proxies" (el endpoint real donde está tu servidor, o uno o varios proxies de endpoint).
Es lo que el backend de la lista le entrega al jugador cuando hace clic en tu servidor. Si tienes sv_forceIndirectListing activado, este es el único sitio donde se decide a dónde se conecta realmente el jugador, separado de a dónde te pinguea el backend (sv_listingIpOverride).
Ponlo a:
- Tu IP pública y el puerto del juego (
1.2.3.4:30120), o - El endpoint de tu proxy o túnel, si estás enrutando el tráfico por uno para protegerte contra DDoS.
Puedes listar varios endpoints separados por espacios si quieres tener fallbacks.
set net_tcpConnLimit 50000¶
Esta convar limita el número de conexiones TCP simultáneas que el servidor de FiveM acepta por IP de origen. El valor por defecto es 16, que va sobrado para un servidor pequeño pero salta enseguida con carga real:
- El navegador de servidores que llevan los clientes abre varias conexiones por jugador mientras consulta
/info.json,/dynamic.jsony/players.json. - Las descargas de assets (
fivem-datay streaming) reaprovechan y abren conexiones de forma muy agresiva. - Los proxies inversos (Cloudflare, Spectrum, los tuyos propios) meten muchas IPs de cliente detrás de un puñado pequeño de IPs de proxy, así que una sola "IP de origen" puede necesitar legítimamente miles de conexiones simultáneas.
Cuando se llega al límite, el servidor empieza a rechazar conexiones TCP nuevas, lo que en los clientes se nota como caídas de conexión y en los logs aparece como errores tipo Error 56 de CURL.
Subirlo a 50000 es el valor que recomiendan la mayoría de servidores de producción y proveedores de protección DDoS. Es lo bastante generoso para que un proxy con cientos de jugadores detrás no se vea estrangulado, y a la vez sigue poniendo un techo a la cantidad de trabajo que el servidor está dispuesto a hacerle a un único peer.
Qué hace Zaroz Cloud por ti automáticamente¶
No tienes que dejarlo todo a mano. Cada vez que arranca tu contenedor, nuestro entrypoint:
- Borra cualquier línea existente de
endpoint_add_tcp,endpoint_add_udpyset sv_listingIpOverrideen tuserver.cfg. - Las vuelve a poner, esta vez atadas al puerto real y a la IP pública que tenemos reservados para ti.
En la práctica, esto quiere decir que en lo más alto de tu server.cfg siempre vas a encontrarte algo como esto, ajustado a la IP y el puerto de tu pedido:
endpoint_add_tcp "0.0.0.0:<tu-puerto>"
endpoint_add_udp "0.0.0.0:<tu-puerto>"
set sv_listingIpOverride "<tu-ip-publica>"
No hace falta (y mejor que no lo intentes) tocar esas tres líneas a mano: se reescriben en cada arranque para que cuadren con la asignación actual. Así que el mínimo que normalmente quieres añadir tú por encima es sv_forceIndirectListing true y set net_tcpConnLimit 50000. El resto solo te hace falta si pones tu propio dominio o proxy delante del servidor.
Cuándo escribirnos¶
Si has aplicado esta configuración y aún así te encuentras con:
- Cortes de conexión o errores tipo
Error 56con carga alta. - Que el servidor no aparece en la lista pública.
- Jugadores que no pueden entrar usando la dirección del panel.
Mándanos tu server.cfg (puedes tachar las license keys) y el ID de tu pedido, y le echamos un vistazo.