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
resmone 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
| Elemento | Jogando em servidor público | Administrando a própria instância |
|---|---|---|
| server.cfg | Sem acesso | Edição total, linha por linha |
| OneSync / slots | Definido pela equipe | Você define onesync e sv_maxclients |
| Scripts e mods | Limitado ao que existe | Instala, corrige e reescreve o que precisar |
| Permissões | Depende de hierarquia externa | ACE e principals sob seu controle |
| Backups | Invisíveis para você | Automáticos e restauráveis pelo painel |
| Diagnóstico de lag | Suposição | Console, 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
ensurevsstart:ensurereinicia o recurso se ele já estiver rodando, o que evita estados duplicados em reload. Useensurecomo 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:
oxmysqlantes do framework, framework antes dos jobs, jobs antes das interfaces. - Convars sensíveis: use
setpara valores internos esetsapenas 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.
| Valor | Comportamento | Quando usar |
|---|---|---|
set onesync off | Sincronização legada, até 32 slots | Testes locais e recursos muito antigos |
set onesync legacy | OneSync clássico, até 64 slots | Frameworks que ainda não migraram |
set onesync on | OneSync Infinity, culling dinâmico | Padrã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— exigeset discord_tokenconfigurado, ótimo para integrar cargos.identifier.fivem— conta Cfx.re do jogador.identifier.steam— requerset 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:
- Agrupe assets por tema em recursos separados (
[vehicles],[maps],[clothing]) para poder desativar por bloco. - Verifique conflitos de
ytypeymapno console durante o boot. - Prefira NVMe para servir o cache de assets: a leitura aleatória reduz o tempo de entrada dos jogadores.
- Use
sv_forceIndirectListing trueapenas 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_passwordcom 24+ caracteres aleatórios e nunca reutilize senhas. - Script hook: mantenha
sv_scriptHookAllowed 0em 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
licenseantes 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.
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.
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.