Ir para o conteúdo

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.json e /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_udp e set sv_listingIpOverride na tua server.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 56 em 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.