← Blog

Servidor FiveM próprio: o que muda no controle técnico

Par Benjamin D. · PDG

· Mis à jour le 9 Gwengolo 2026 · Lecture 10 min

Sumário

Administrar um servidor FiveM próprio muda completamente a relação com o jogo: em vez de aceitar as regras, os recursos e o tickrate definidos por outra pessoa, você controla cada linha do server.cfg, decide quais scripts carregam e em qual ordem, ajusta o OneSync e distribui permissões com precisão cirúrgica. Este guia técnico detalha o que esse controle significa na prática, arquivo por arquivo.



Servidor FiveM próprio: o que realmente muda no controle de recursos

Em um servidor público de roleplay, você é um cliente conectado a um ambiente fechado. O conjunto de resources carregados, o gamebuild, os limites de entidades, a whitelist, a economia interna e até o intervalo de reinício automático foram decididos por uma equipe que você não integra. Quando algo travar, você abre um ticket e espera.

Do outro lado, administrar a própria instância significa ter acesso direto à pasta resources/, ao console live e ao ciclo de vida do processo FXServer. Isso desbloqueia três níveis de controle que não existem para um jogador comum:

  • Controle de carga: você escolhe quais recursos sobem no boot, mede o consumo de cada um com resmon e remove o que degrada o tickrate.
  • Controle de estado: banco de dados MySQL sob sua responsabilidade, com backups verificáveis e migrações aplicadas quando você quiser.
  • Controle de acesso: sistema ACE do Cfx.re, com grupos, principals e comandos liberados individualmente por cargo.

Comparando responsabilidades

ElementoJogando em servidor públicoAdministrando a própria instância
server.cfgSem acessoEdição total, linha por linha
OneSync / slotsDefinido pela equipeVocê define onesync e sv_maxclients
Scripts e modsLimitado ao que existeInstala, corrige e reescreve o que precisar
PermissõesDepende de hierarquia externaACE e principals sob seu controle
BackupsInvisíveis para vocêAutomáticos e restauráveis pelo painel
Diagnóstico de lagSuposiçãoConsole, resmon, logs e métricas reais

Se você quer partir direto para a parte prática com um ambiente Ryzen de alta frequência, NVMe e anti-DDoS já ativo, a hospedagem FiveM da Fly-Serv entrega o FXServer instalado com painel Pterodactyl pronto para receber seus recursos. O restante deste artigo trata da configuração técnica, que é o que separa uma instância estável de uma que derruba a cada 40 jogadores.



server.cfg: a espinha dorsal de toda a configuração

O server.cfg é lido do início ao fim durante o boot do FXServer. Ordem importa: um ensure colocado antes da dependência dele vai gerar erro no console. Uma base sólida se parece com isto:

# --- Endpoints ---
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

# --- Recursos base do Cfx.re ---
ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager
ensure basic-gamemode
ensure hardcap

# --- Banco de dados ---
set mysql_connection_string "mysql://fivem:[email protected]/esx?charset=utf8mb4"
ensure oxmysql

# --- Framework e dependências ---
ensure ox_lib
ensure es_extended

# --- Identidade ---
sv_hostname "^2[BR]^7 Roleplay Sério ^3| Whitelist"
sv_projectName "Projeto RP"
sv_projectDesc "Roleplay brasileiro com economia fechada"
sets tags "roleplay, br, whitelist, economy"
sets locale "pt-BR"

# --- Sincronização ---
set onesync on
set onesync_population true
sv_maxclients 64
sv_enforceGameBuild 3095

# --- Licença Cfx.re ---
sv_licenseKey "SUA_CHAVE_AQUI"

Detalhes que quebram servidores na prática

  • ensure vs start: ensure reinicia o recurso se ele já estiver rodando, o que evita estados duplicados em reload. Use ensure como padrão.
  • sv_enforceGameBuild: obriga todos os clientes a carregar um build específico do GTA V. Sem isso, veículos e mapas DLC recentes simplesmente não aparecem para parte dos jogadores.
  • Ordem de dependências: oxmysql antes do framework, framework antes dos jobs, jobs antes das interfaces.
  • Convars sensíveis: use set para valores internos e sets apenas para o que pode ser exposto publicamente na listagem.

Categorizando o arquivo por blocos

Um server.cfg de 400 linhas fica ingerenciável. A prática de campo é dividir em arquivos por domínio e importar:

exec configs/permissions.cfg
exec configs/resources_core.cfg
exec configs/resources_jobs.cfg
exec configs/resources_maps.cfg

Assim você desativa um bloco inteiro de mapas ou empregos comentando uma única linha durante um diagnóstico, sem tocar no resto. Isso é impossível quando você apenas joga em uma instância de terceiros.



OneSync, slots e o limite real de entidades

O OneSync é a camada de sincronização server-side do Cfx.re. Ele move o cálculo de estado dos clientes para o processo do servidor, o que permite passar dos 32 slots do modelo antigo e, mais importante, dá ao administrador autoridade sobre entidades criadas.

ValorComportamentoQuando usar
set onesync offSincronização legada, até 32 slotsTestes locais e recursos muito antigos
set onesync legacyOneSync clássico, até 64 slotsFrameworks que ainda não migraram
set onesync onOneSync Infinity, culling dinâmicoPadrão atual para 48 a 128+ slots

Population e desempenho

Com onesync_population true, o servidor assume o controle de tráfego e pedestres ambientais. Isso libera CPU nos clientes e reduz dessincronização de veículos NPC, mas transfere carga para o processo do servidor. Em máquinas com frequência de clock alta e armazenamento NVMe, essa troca compensa; em hardware compartilhado com muitos vizinhos ruidosos, o tickrate cai antes dos 40 jogadores.

Medindo antes de culpar a rede

A ferramenta mais direta é o próprio console do cliente (tecla F8) combinado com o console do servidor:

# No cliente (F8)
resmon 1
netgraph 1

# No console do servidor
status
svgfx
resmon

Regra de campo: qualquer recurso que consuma acima de 0,10 ms por tick de forma constante merece investigação. Loops while true do ... Wait(0) end em client scripts são a causa número um de queda de FPS coletiva. Em um servidor FiveM próprio, você abre o arquivo, aumenta o Wait e reinicia apenas aquele recurso:

restart nome_do_recurso
refresh
ensure nome_do_recurso

Quem apenas joga em um servidor público não tem essa alavanca: o lag é um fato imposto. A documentação de convars e comandos está detalhada na documentação oficial do FiveM.



Mods, scripts e permissões: o sistema ACE na prática

O modelo de permissões do Cfx.re é baseado em aces (capacidades) e principals (identidades e grupos). Ele é granular e não depende de nenhum framework externo, o que o torna a base de segurança da sua administração.

Definindo grupos e herança

# Hierarquia
add_principal group.moderator group.user
add_principal group.admin group.moderator
add_principal group.owner group.admin

# Capacidades
add_ace group.moderator command.kick allow
add_ace group.moderator command.clear allow
add_ace group.admin command.ban allow
add_ace group.admin command.restart allow
add_ace group.owner command allow

# Bloqueios explícitos
add_ace group.moderator command.stop deny
add_ace builtin.everyone command.quit deny

# Vinculando pessoas reais
add_principal identifier.fivem:1234567 group.owner
add_principal identifier.discord:198765432109876543 group.admin
add_principal identifier.license:a1b2c3d4e5f6 group.moderator

Note o deny explícito: mesmo herdando de um grupo superior, um moderador não conseguirá derrubar recursos. Isso evita o clássico incidente de alguém digitar stop es_extended em horário de pico.

Identificadores disponíveis

  • identifier.license — vinculado à cópia do GTA V, o mais estável para banimentos.
  • identifier.discord — exige set discord_token configurado, ótimo para integrar cargos.
  • identifier.fivem — conta Cfx.re do jogador.
  • identifier.steam — requer set steam_webApiKey.

Instalando e auditando recursos

Todo recurso precisa de um fxmanifest.lua coerente. Antes de subir qualquer script de origem desconhecida, leia o manifest: ele revela dependências, arquivos carregados e eventuais chamadas externas.

fx_version 'cerulean'
game 'gta5'
author 'Comunidade BR'
version '1.2.0'

dependency 'oxmysql'
shared_script '@ox_lib/init.lua'

client_scripts {
    'client/main.lua',
    'client/nui.lua'
}

server_scripts {
    '@oxmysql/lib/MySQL.lua',
    'server/main.lua'
}

files {
    'html/index.html',
    'html/app.js'
}

ui_page 'html/index.html'

Sinais de alerta em um manifest: escrow_ignore aplicado a arquivos ofuscados, requisições HTTP para domínios não relacionados dentro de server_scripts ou dependências que você nunca instalou. Recursos com backdoor costumam se esconder em server/, longe dos olhos.

Streaming de assets sem inflar o download

Veículos, roupas e mapas customizados entram por pastas stream/. Cada MB adicionado é baixado por todo mundo que conecta. Boas práticas:

  1. Agrupe assets por tema em recursos separados ([vehicles], [maps], [clothing]) para poder desativar por bloco.
  2. Verifique conflitos de ytyp e ymap no console durante o boot.
  3. Prefira NVMe para servir o cache de assets: a leitura aleatória reduz o tempo de entrada dos jogadores.
  4. Use sv_forceIndirectListing true apenas se entender o impacto na listagem pública.


Administração diária: segurança, backups e rotina

O controle total vem com responsabilidade operacional. A infraestrutura de proteção volumétrica contra DDoS já é tratada no nível da rede em toda a Todos os nossos servidores de jogos, mas a superfície de ataque lógica é sua.

Checklist de endurecimento

  • RCON: se você não usa, remova a linha. Se usa, defina rcon_password com 24+ caracteres aleatórios e nunca reutilize senhas.
  • Script hook: mantenha sv_scriptHookAllowed 0 em ambiente de roleplay.
  • Banco de dados: usuário MySQL dedicado ao FiveM, com privilégios apenas na base do framework, escutando em 127.0.0.1.
  • Whitelist: ative por Discord ou por license antes de divulgar o endereço.
  • Backups: snapshots automáticos da pasta de recursos e dumps periódicos do banco. Teste a restauração — backup não verificado não é backup.
  • Logs: mantenha rotação de logs e um canal de auditoria para comandos administrativos.

Quando você mesmo cuida da máquina Linux por trás do FXServer, o mínimo é chave SSH, firewall e proteção contra força bruta:

ssh-keygen -t ed25519 -C "admin-fivem"
sudo apt update && sudo apt install -y fail2ban ufw

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw allow 40120/tcp   # txAdmin
sudo ufw enable

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

Atualizando artefatos do FXServer

Os artefatos evoluem rápido e trazem correções de sincronização e segurança. O procedimento é simples, mas exige parar o processo antes:

cd /home/container
mkdir -p backup && cp -r alpine backup/alpine_$(date +%F)
wget https://runtime.fivem.net/artifacts/fivem/build_proxy/master/fx.tar.xz
tar xf fx.tar.xz
rm fx.tar.xz

Depois de subir, confira no console se todos os recursos carregaram sem [ERROR]. Um artefato novo pode quebrar recursos antigos que usam natives depreciadas — por isso o backup da versão anterior fica ao lado.

Reinícios programados

Instâncias de roleplay acumulam entidades órfãs e memória ao longo de horas. Um reinício automático a cada 6 ou 8 horas, com aviso em jogo, resolve a maior parte das degradações progressivas de tickrate. Configure a tarefa agendada no painel e adicione um recurso que anuncie a contagem regressiva no chat.

Quem administra ambientes Cfx.re com frequência acaba operando também Servidor RedM, já que a lógica de recursos, ACE e artefatos é praticamente idêntica. Mais material técnico sobre configuração e diagnóstico fica reunido no Blog da Fly-Serv.



Conclusão

A diferença entre jogar e administrar está no acesso: console, server.cfg, OneSync, ACE e logs deixam de ser caixas-pretas e passam a ser ferramentas de diagnóstico. Com uma base bem organizada, dependências na ordem correta e monitoramento de resmon, você identifica gargalos em minutos em vez de conviver com eles. O controle técnico é, no fim, o que sustenta uma comunidade estável.



FAQ

Qual valor de OneSync devo usar para 64 jogadores em roleplay?

Use set onesync on (Infinity), que aplica culling dinâmico de entidades e suporta bem 64 slots ou mais. Combine com sv_maxclients 64 e, se quiser tráfego ambiental sincronizado pelo servidor, adicione set onesync_population true. Só recorra a legacy se algum recurso essencial do seu framework ainda não for compatível.

Como descubro qual recurso está causando queda de FPS?

Entre no jogo, abra o console com F8 e digite resmon 1. Ordene pela coluna de tempo de CPU e observe o que passa de 0,10 ms constantes. Depois use restart nome_do_recurso no console do servidor e veja se o valor normaliza. Loops com Wait(0) e blips redesenhados a cada frame são os culpados mais comuns.

Um moderador com group.admin pode desligar recursos sem permissão?

Depende da sua configuração ACE. Herança concede capacidades, então adicione bloqueios explícitos: add_ace group.moderator command.stop deny e add_ace group.moderator command.restart deny. O deny tem prioridade sobre o allow herdado, garantindo que apenas o grupo de nível mais alto controle o ciclo de vida dos recursos.