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.
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.
30120/udp + tcp 40120/tcp fivem (não root) /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.
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 oomSe 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.
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.
Cheque saturação de rede (possível DDoS):
sudo apt install -y vnstat
vnstat -l -i eth0Se o tráfego de entrada (rx) está em centenas de Mbps com poucos players conectados, é flood. Anote o pico pra comparar depois.
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.
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/serverRodar serviços expostos à internet como root é vetor de comprometimento total caso uma RCE seja descoberta no FXServer.
Crie o arquivo de service unit:
sudo nano /etc/systemd/system/fivem.serviceCole 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.targetAs 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.
Ative e inicie o service:
sudo systemctl daemon-reload
sudo systemctl enable fivem.service
sudo systemctl start fivem.service
sudo systemctl status fivem.serviceA saída deve mostrar active (running) em verde. Se aparecer failed, rode sudo journalctl -u fivem.service -n 50 pra ver o erro.
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.
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.targetE 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.serviceAtive o timer:
sudo systemctl daemon-reload
sudo systemctl enable fivem-restart.timer
sudo systemctl start fivem-restart.timer
sudo systemctl list-timers fivem-restart.timerA 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.
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.
Instale o htop e o vnstat pra observação em tempo real:
sudo apt install -y htop vnstat
sudo systemctl enable --now vnstathtop mostra processo a processo. Filtre por F4 e digite FXServer pra ver só o que importa.
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
fiTorne 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-memVerificação
Confirme que toda a stack está funcionando antes de considerar o setup completo.
Force um crash simulado pra ver se o auto-restart funciona:
sudo pkill -9 FXServer
sleep 15
sudo systemctl status fivem.serviceApós 10-15 segundos, o status deve mostrar active (running) novamente, com uptime curto. Se aparecer failed ou inactive, revise o service unit.
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
mysqldumpem 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
resmonin-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.