Definições recomendadas para server.cfg no FiveM¶
Há um conjunto de convars que vale a pena deixar configuradas (ou pelo menos revistas) em qualquer servidor de FiveM em produção. Controlam como o teu servidor aparece na lista pública, se o teu IP real escapa para scrapers, e quantas ligações TCP simultâneas o runtime aceita antes de começar a rejeitá-las.
Esta página passa por todas as que recomendamos e explica o que cada uma faz de facto, para que decidas quais se aplicam ao teu caso.
TL;DR¶
Coloca isto no início do teu server.cfg:
# Esconde o IP real do servidor na lista pública
sv_forceIndirectListing true
# Diz ao backend da lista que IP deve consultar (só faz falta
# se não conseguir adivinhar sozinho, por exemplo atrás de NAT ou proxy reverso)
sv_listingIpOverride "<o-teu-ip-publico-ou-do-proxy>"
# Se puseres o servidor atrás de um domínio próprio ou um proxy reverso,
# aponta o backend da lista para esse domínio em vez do IP cru
sv_listingHostOverride "https://play.example.com/"
# Anuncia o endpoint (ou endpoints) onde os clientes se devem mesmo ligar
# (o teu IP público:porta, ou o do teu proxy)
sv_endpoints "<o-teu-ip-publico>:<a-tua-porta-de-jogo>"
# Sobe o limite de ligações TCP por IP para que a camada HTTP
# não estrangule os browsers de jogadores e as descargas de assets em carga
set net_tcpConnLimit 50000
A seguir tens o que faz cada linha e quando interessa mantê-la (ou não).
sv_forceIndirectListing true¶
Da documentação oficial Cfx.re: "prevents the server list from advertising your server using its actual IP" (impede que a lista anuncie o teu servidor com o IP real).
Com isto ligado, a lista do FiveM nunca publica o teu IP real. Os jogadores chegam ao teu servidor através do backend da Cfx.re, que depois lhes entrega o endereço de ligação que tu configuraste (sv_endpoints / sv_listingHostOverride). Os scrapers que vasculham a lista pública à procura de IPs para usar em ataques DDoS só veem a entrada indireta.
Valor recomendado: true. Num servidor normal em produção praticamente não tem desvantagens.
sv_listingIpOverride¶
Da documentação 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" (este valor só é necessário se o backend não conseguir adivinhar o IP a consultar, e não é entregue a nenhuma ligação de cliente).
O backend da lista bate periodicamente em /dynamic.json no teu servidor para refrescar os dados públicos (número de jogadores, nome do servidor, etc.). Se o teu servidor estiver atrás de NAT, tiver vários IPs públicos ou só aceitar pedidos do master numa interface específica, podes aqui fixar o IP a que o backend deve recorrer. Os jogadores nunca veem este valor.
Na Zaroz Cloud, o nosso entrypoint já escreve o sv_listingIpOverride certo para o IP que te temos atribuído, em cada arranque do contentor. Normalmente não precisas de o pôr à mão. Só o deves sobrepor se estiveres a encaminhar tráfego por outro IP diferente do nosso.
sv_listingHostOverride¶
Da documentação oficial: "makes the server list backend request https://server1.example.com/ instead of the default" (faz com que o backend peça https://server1.example.com/ em vez do endereço por defeito).
É a versão "por domínio" da mesma ideia. Em vez do backend bater em https://<ip>:<porta>/, faz o pedido a um domínio que tu controlas. Útil quando:
- Tens um proxy reverso à frente do servidor (Cloudflare Spectrum, o teu próprio nginx/HAProxy, X4B, etc.).
- Queres que apareça um domínio estável na lista em vez de um IP cru.
Se não usas proxy nem domínio próprio, deixa por configurar e deixa o backend chegar diretamente ao teu servidor.
sv_endpoints¶
Da documentação oficial: "the actual endpoint your server is hosted on, or one or multiple server endpoint proxies" (o endpoint real onde o teu servidor está, ou um ou vários proxies de endpoint).
É aquilo que o backend da lista entrega ao jogador quando ele carrega no teu servidor. Se tiveres sv_forceIndirectListing ligado, é a única fonte de verdade sobre onde os jogadores se ligam mesmo, separada de onde o backend te pinga (sv_listingIpOverride).
Põe nele:
- O teu IP público e a porta do jogo (
1.2.3.4:30120), ou - O endpoint do teu proxy ou túnel, se estás a encaminhar tráfego por uma proteção DDoS.
Podes listar vários endpoints separados por espaços se quiseres ter fallbacks.
set net_tcpConnLimit 50000¶
Esta convar limita o número de ligações TCP simultâneas que o servidor de FiveM aceita por IP de origem. O valor por defeito é 16, que chega para um servidor pequeno mas rebenta cedo em carga real:
- O browser de servidores dentro do jogo abre várias ligações por jogador ao consultar
/info.json,/dynamic.jsone/players.json. - As descargas de assets (
fivem-data, streaming) reaproveitam e abrem ligações de forma agressiva. - Os proxies reversos (Cloudflare, Spectrum, os teus) metem muitos IPs de cliente atrás de um conjunto pequeno de IPs de proxy: um único "IP de origem" pode legitimamente precisar de milhares de ligações simultâneas.
Quando o limite é atingido, o servidor passa a recusar novas ligações TCP. No cliente isso parece quedas de ligação, e nos logs aparece como erros tipo Error 56 do CURL.
Subir para 50000 é o valor que a maioria dos servidores de produção e dos fornecedores de proteção DDoS recomendam. Suficientemente generoso para que um proxy com centenas de jogadores atrás não fique estrangulado, e ainda assim mantém um teto na quantidade de trabalho que o servidor está disposto a fazer para um único peer.
O que a Zaroz Cloud já trata por ti¶
Não tens de pôr tudo de raiz. Sempre que o teu contentor arranca, o nosso entrypoint:
- Remove quaisquer linhas existentes de
endpoint_add_tcp,endpoint_add_udpeset sv_listingIpOverridena tuaserver.cfg. - Volta a pô-las, agora fixadas na porta real e no IP público que temos reservados para ti.
Na prática isto quer dizer que no topo do teu server.cfg vais sempre encontrar algo assim, batendo certo com o IP e a porta da tua encomenda:
endpoint_add_tcp "0.0.0.0:<a-tua-porta>"
endpoint_add_udp "0.0.0.0:<a-tua-porta>"
set sv_listingIpOverride "<o-teu-ip-publico>"
Não precisas (e melhor não tentes) mexer nestas três linhas à mão: são reescritas em cada arranque para baterem certo com a atribuição atual. O mínimo que normalmente queres acrescentar por cima é sv_forceIndirectListing true e set net_tcpConnLimit 50000. O resto só interessa se puseres o teu próprio domínio ou proxy à frente do servidor.
Quando nos contactar¶
Se aplicaste esta configuração e ainda assim:
- Vês quedas de ligação ou erros
Error 56em carga alta. - O servidor não aparece na lista pública.
- Os jogadores não conseguem entrar pelo endereço do painel.
Envia-nos a tua server.cfg (podes tapar as license keys) e o número da tua encomenda, e damos uma olhada.