Servidor FiveM Cai Sozinho: Como Manter Online com Auto-Restart

Servidor FiveM cai sozinho? Configure auto-restart, watchdog e monitoramento de RAM/CPU pra manter online 24/7 sem intervenção manual.

Servidor FiveM caindo no meio do horário de pico é um dos problemas mais frustrantes pra quem mantém uma comunidade. O player desconecta, perde progresso, reclama no Discord, e você descobre o crash horas depois quando alguém avisa. Sem auto-restart, cada queda vira intervenção manual de madrugada.

Este guia é pra quem já tem servidor FiveM rodando em VPS Linux (Ubuntu ou Debian) e quer configurar uma camada de auto-recuperação que mantém o serviço online 24/7 — mesmo que o FXServer crashe, ele volta sozinho em segundos. Vamos cobrir diagnóstico da causa real, configuração de watchdog com systemd, monitoramento de RAM/CPU e auto-restart programado pra mitigar memory leak.

Tempo estimado: 30-45 minutos pra implementação completa, incluindo testes.

Pré-requisitos

Antes de começar, confirme que você tem acesso ao servidor e ferramentas básicas instaladas.

Pré-requisitos

Você precisa de Ubuntu 22.04 LTS ou Debian 12 com acesso root via SSH, FXServer já instalado e funcionando (caindo, mas funcionando), e txAdmin configurado. Também recomendado: 4 GB RAM mínimo, 2 vCPUs, e SSD.

Porta padrão FiveM 30120/udp + tcp
Porta txAdmin 40120/tcp
Usuário service fivem (não root)
Diretório padrão /home/fivem/server

Se você ainda roda o FXServer dentro de tmux ou screen, este guia substitui esse setup por systemd — que é a forma correta de manter qualquer serviço de longa duração em Linux.

Diagnóstico: por que está caindo

Antes de configurar auto-restart, você precisa saber o que está matando o processo. Aplicar auto-restart em cima de um problema não diagnosticado é cuidar do sintoma e ignorar a doença.

01

Verifique se foi OOM kill (falta de memória):

sudo dmesg -T | grep -i "killed process"
sudo journalctl -k --since "24 hours ago" | grep -i oom

Se aparecer linha tipo Killed process 12345 (FXServer) total-vm:8GB, o kernel matou por falta de RAM. Isso indica memory leak num resource ou subdimensionamento da VPS.

02

Verifique se foi crash interno do FXServer:

tail -n 500 /home/fivem/server/server.log | grep -iE "error|exception|crash"

Procure stack trace ou linhas com [script:resource_name] ERROR. Resources Lua com loop infinito ou exception não tratada derrubam o servidor todo.

03

Cheque saturação de rede (possível DDoS):

sudo apt install -y vnstat
vnstat -l -i eth0

Se o tráfego de entrada (rx) está em centenas de Mbps com poucos players conectados, é flood. Anote o pico pra comparar depois.

Crashes sem padrão são memory leak

Se o servidor cai sempre próximo do mesmo uptime (ex.: a cada 8-10h), quase certamente é memory leak gradual. Monitore htop durante uma sessão completa pra ver a RAM do processo FXServer crescer linearmente até estourar.

Configurando systemd como watchdog

Systemd é o init system padrão do Linux e tem suporte nativo pra reiniciar serviços que crasham. Vamos criar um service unit dedicado pro FXServer.

01

Crie um usuário dedicado pro servidor (se ainda roda como root, isso é obrigatório por segurança):

sudo useradd -m -s /bin/bash fivem
sudo chown -R fivem:fivem /home/fivem/server

Rodar serviços expostos à internet como root é vetor de comprometimento total caso uma RCE seja descoberta no FXServer.

02

Crie o arquivo de service unit:

sudo nano /etc/systemd/system/fivem.service

Cole o conteúdo abaixo, ajustando os paths conforme sua instalação:

[Unit]
Description=FiveM FXServer
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=fivem
Group=fivem
WorkingDirectory=/home/fivem/server
ExecStart=/home/fivem/server/run.sh +exec server.cfg
Restart=always
RestartSec=10
StartLimitBurst=5
StartLimitIntervalSec=300
StandardOutput=append:/home/fivem/server/server.log
StandardError=append:/home/fivem/server/server.error.log
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

As diretivas críticas: Restart=always reinicia em qualquer saída (crash ou exit normal), RestartSec=10 espera 10 segundos entre tentativas (dá tempo do socket UDP liberar), e StartLimitBurst=5 evita loop infinito se o servidor estiver quebrado de verdade.

03

Ative e inicie o service:

sudo systemctl daemon-reload
sudo systemctl enable fivem.service
sudo systemctl start fivem.service
sudo systemctl status fivem.service

A saída deve mostrar active (running) em verde. Se aparecer failed, rode sudo journalctl -u fivem.service -n 50 pra ver o erro.

Pare o txAdmin/tmux antigo primeiro

Se você tinha o FXServer rodando em tmux ou via txAdmin standalone, mate esses processos antes de iniciar o systemd. Dois processos tentando bindar a mesma porta UDP causam crash em loop e podem corromper o save state dos resources.

Auto-restart programado pra mitigar memory leak

Mesmo com a causa raiz corrigida, é boa prática programar reinício diário pra liberar memória e evitar degradação. Faça isso no horário de menor atividade.

01

Crie um timer systemd pra reinício diário às 6h da manhã:

sudo nano /etc/systemd/system/fivem-restart.timer
[Unit]
Description=Restart FiveM daily at 6am

[Timer]
OnCalendar=*-*-* 06:00:00
Persistent=true

[Install]
WantedBy=timers.target

E o service que o timer dispara:

sudo nano /etc/systemd/system/fivem-restart.service
[Unit]
Description=Restart FiveM service

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart fivem.service
02

Ative o timer:

sudo systemctl daemon-reload
sudo systemctl enable fivem-restart.timer
sudo systemctl start fivem-restart.timer
sudo systemctl list-timers fivem-restart.timer

A saída deve mostrar o próximo agendamento. Você pode ajustar o horário pra outro momento — sempre escolha quando o servidor tem menos players online.

Avise os players antes do restart

Configure um resource que faz broadcast in-game 5 e 1 minuto antes do horário de restart. Reinício surpresa frustra players e gera reclamação. Resources como vMenu ou txAdmin scheduled restarts fazem isso nativamente.

Monitoramento contínuo de RAM e CPU

Auto-restart só é eficaz se você sabe quando ele está acontecendo demais. Monitoramento básico te avisa de degradação antes de virar problema.

01

Instale o htop e o vnstat pra observação em tempo real:

sudo apt install -y htop vnstat
sudo systemctl enable --now vnstat

htop mostra processo a processo. Filtre por F4 e digite FXServer pra ver só o que importa.

02

Crie um script de alerta simples que checa a RAM do FXServer a cada 5 minutos:

sudo nano /usr/local/bin/fivem-mem-check.sh
#!/bin/bash
THRESHOLD=85
MEM_PERCENT=$(ps -o %mem= -C FXServer | head -n1 | tr -d ' ')
MEM_INT=${MEM_PERCENT%.*}

if [ "$MEM_INT" -gt "$THRESHOLD" ]; then
  echo "$(date): FXServer usando ${MEM_PERCENT}% RAM" >> /var/log/fivem-mem.log
  # Opcional: enviar pra webhook Discord
  # curl -H "Content-Type: application/json" -d "{\"content\":\"FiveM RAM alta: ${MEM_PERCENT}%\"}" $DISCORD_WEBHOOK
fi

Torne executável e agende no cron:

sudo chmod +x /usr/local/bin/fivem-mem-check.sh
echo "*/5 * * * * root /usr/local/bin/fivem-mem-check.sh" | sudo tee /etc/cron.d/fivem-mem

Verificação

Confirme que toda a stack está funcionando antes de considerar o setup completo.

01

Force um crash simulado pra ver se o auto-restart funciona:

sudo pkill -9 FXServer
sleep 15
sudo systemctl status fivem.service

Após 10-15 segundos, o status deve mostrar active (running) novamente, com uptime curto. Se aparecer failed ou inactive, revise o service unit.

02

Veja os últimos restarts no log do systemd:

sudo journalctl -u fivem.service --since "1 hour ago" | grep -E "Started|Stopped"

Cada par Started/Stopped representa um ciclo de restart. Frequência alta indica que a causa raiz não foi resolvida.

Resolução de problemas

Servidor reinicia em loop infinito

Se o systemd fica reiniciando o serviço a cada poucos segundos sem nunca estabilizar, geralmente é problema de configuração no server.cfg ou resource quebrado. Pare o auto-restart temporariamente com sudo systemctl stop fivem.service, rode o run.sh manualmente como usuário fivem e leia o output direto no terminal. O erro aparece na hora.

Porta já em uso após restart

UDP socket pode ficar em estado TIME_WAIT por alguns segundos. Aumente o RestartSec no service unit de 10 pra 20-30 segundos. Se o problema persistir, force liberação com sudo fuser -k 30120/udp antes de reiniciar.

txAdmin não vê o servidor reiniciado pelo systemd

Quando você migra de txAdmin standalone pra systemd, o txAdmin perde o controle do processo. Solução: rode o txAdmin como parte do mesmo service unit (passando +set txAdminPort 40120 no ExecStart) ou aceite que o txAdmin vira só dashboard de visualização — restart real vem do systemd.

Próximos passos

Com auto-restart funcionando, vale evoluir o setup:

  • Configure backup automático do banco de dados (MySQL ou MariaDB) com mysqldump em cron diário
  • Implemente monitoramento externo com Uptime Kuma ou similar pra alertar quando o servidor estiver offline de fato
  • Otimize os resources problemáticos — use resmon in-game pra identificar quais consomem mais CPU/RAM
  • Considere separar banco de dados em servidor próprio se você passar de 64 slots
  • Configure firewall (ufw ou nftables) limitando portas expostas e protegendo contra scan automatizado

Se o seu servidor FiveM está crashando por sobrecarga de hardware e não por bug de resource, vale comparar o que sua VPS atual entrega vs uma hospedagem otimizada pra jogos — vCPU dedicada e proteção DDoS evitam boa parte das categorias de crash que cobrimos aqui.

Perguntas frequentes

Por que meu FXServer crasha sem mensagem de erro?

Na maioria dos casos é OOM (out-of-memory) — o kernel Linux mata o processo silenciosamente quando a RAM acaba. Verifique com `dmesg | grep -i 'killed process'` ou `journalctl -k | grep -i oom`. Outras causas comuns: script Lua com loop infinito travando a thread principal e timeout de heartbeat com o CnL (Cfx.re).

Qual a diferença entre tx_admin restart e systemd restart?

O txAdmin reinicia só o processo FXServer dentro do mesmo runtime — rápido, mas se o problema for memory leak persistente, o vazamento continua. Systemd mata todo o processo e seus filhos, libera a memória completamente e inicia do zero. Pra crash recurrentes, systemd é mais robusto.

Quantos players um servidor FiveM aguenta antes de cair?

Depende mais dos scripts do que do hardware. Um servidor com 32 slots e poucos resources roda em 4 GB RAM tranquilamente. Com 64+ slots e scripts pesados (ESX/QBCore + custom), conte 8-16 GB. O bottleneck quase sempre é uma thread CPU saturada por script mal escrito, não falta de RAM total.

Auto-restart resolve memory leak permanente?

Trata o sintoma, não a causa. Reinício programado a cada 6-12h mascara o leak e mantém o servidor online, mas cada reinício derruba todos os players. O ideal é identificar o resource culpado via `resmon` in-game e corrigir ou substituir. Auto-restart é solução temporária enquanto você investiga.

txAdmin já tem monitor — preciso de systemd também?

Sim. O txAdmin monitora o FXServer, mas se o próprio txAdmin travar ou o node Node.js morrer, ninguém reinicia ele. Systemd fica uma camada acima, vigiando o txAdmin. É defesa em profundidade: txAdmin cuida do jogo, systemd cuida do txAdmin.

Como saber se o crash é por DDoS ou problema interno?

Veja o log do FXServer no momento da queda. Crash interno deixa stack trace ou mensagem de exceção. DDoS aparece como tx/rx network saturado (`vnstat -l`) sem erro no log do FXServer — o processo simplesmente para de responder porque a banda está consumida. Hospedagem com proteção DDoS resolve a segunda categoria.

Tópicos:
Próximos passos VPS, dedicado ou painel gerenciado para FiveM, SAMP, MTA, Tibia e mais.Hospede seu servidor de jogos com a Hostini →
Esse tutorial foi útil?
Falar no WhatsApp