Deploy de bot Discord Node.js com PM2
PM2 é gerenciador de processos Node popular para bots Discord porque reinicia após crash, persiste entre reboots quando combinado com startup hook e centraliza logs mínimos sem montar Kubernetes inteiro. Este guia cobre arquivo ecosystem, env vars para token e integração com hospedagem BR.
Por que PM2 e não só screen
Session screen tmux resolve hackathon, não contrato de uptime. PM2 adiciona política de restart exponencial, métricas simples e integração com startup hook do sistema operacional. Você dorme melhor sabendo que exception não tratada não deixa bot offline até alguém SSH de manhã tomando café frio.
Contexto geral de disponibilidade aparece em hospedagem bot Discord 24/7.
Bootstrap Node e arquivo do bot
- ssh usuário@vps após SSH endurecido conforme guia de segurança.
- instalar Node LTS e npm ou pnpm conforme preferência do time.
- git clone privado ou rsync projeto com .gitignore sane.
- npm ci --omit=dev em produção para lockfile determinístico.
Passos de SSH seguro estão em SSH seguro em VPS Linux.
ecosystem.config e variáveis de ambiente
Arquivo ecosystem deve declarar name, script apontando para entry (dist/index.js ou similar), cwd absoluto para evitar bug ao reiniciar de diretório inesperado, env production e merge de arquivo dotenv via pm2 ecosystem syntax ou sourcing prévio controlado. Separe staging vs prod com nomes diferentes no pm2 list para não restartar bot errado.
| Chave | Exemplo | Notas |
|---|---|---|
| DISCORD_TOKEN | secreto | Rotate se leak |
| NODE_ENV | production | Desliga logs verbosos |
| CLIENT_ID | público ok | Para slash registry |
Commit de .env no GitHub público dura segundos até scanner roubar token. Use repo privado + hook de secret scanning.
Logs, restarts e limites de memória
Configure max_memory_restart para evitar leak silencioso comer toda RAM da VPS pequena e matar vizinhos não containerizados. Use pm2 logrotate module ou sysctl de journal externo. Tenha alerta humano se restart count sobe centenas em uma hora: algo estruturalmente errado, não só glitch.
Discord rate limits aparecem como erro não fatal; backoff exponencial no código evita storm de retries infinitos PM2 amplifica.
Hospedagem gerenciada versus VPS
PM2 em VPS root é poder total com trabalho total: patching kernel, firewall, TLS reverso se API webhook recebe hits externos. Quando foco é comunidade e não carreira SysOps, painel gerenciado acelera. Contrate planos de bot Discord StreetHosting para ativação rápida em infraestrutura BR com AntiDDoS e suporte em português. Se quiser DIY completo, hardware KVM estável está em VPS Ryzen; stacks containerizadas podem seguir Docker no Ubuntu VPS.
- Gerenciada: menos YAML da madrugada, mais foco em features do bot.
- VPS: liberdade para múltiplos bots e microserviços colados no mesmo host.
- pm2 save após mudanças ecosystem.
- Teste reboot controlado em janela comunicada.
- Monitor externo ping HTTP health se existir servidor auxiliar.
- Política de update discord.js major com changelog lido.
Perguntas frequentes
- PM2 substitui Docker?
- Para bot único frequentemente sim em VPS simples. Docker brilha quando precisa reprodutibilidade multi-serviço e pipelines CI idênticos a produção.
- Posso usar cluster mode no Discord bot?
- discord.js single process é comum; sharding para bots massivos é outro capítulo. Cluster PM2 não substitui sharding correto da API Discord.
- Onde guardo DISCORD_TOKEN?
- Arquivo .env fora do Git com permissões restritas, ou variável exportada pelo systemd/painel de hospedagem. Nunca console.log token em erro.
- Preciso build TypeScript antes?
- Sim se código fonte é TS: rode tsc ou pipeline equivalente antes do PM2 apontar para dist/. Alternativa é ts-node em dev apenas.
Próximo passo
Ver planos de bots
Bots Discord 24/7 com ativação rápida e suporte em português.
Guias relacionados
Hospedagem de bot Discord 24/7 no Brasil
Hospedagem bot Discord 24/7 combina process manager com restart automático, token fora do código, logs e servidor no Brasil para latência baixa com a API e seus jogadores.
SSH seguro em VPS Linux: chaves, senhas, fail2ban e hábitos que evitam invasão
SSH é porta mais batida da internet em VPS novo. Este guia organiza camadas baratas: autenticação por chave, desativação de senha para login remoto, usuário não privilegiado com sudo, jail de tentativas com fail2ban e firewall que só libera o necessário.
Como instalar Docker no Ubuntu 22.04 ou 24.04 em VPS (guia direto ao ponto)
Docker em VPS Ubuntu começa pelo repositório oficial da Docker Inc., não por pacotes aleatórios do universe sem atualização previsível. Depois de instalar Engine e plugin Compose, você valida com container de teste, ajusta permissões de usuário não-root e só então expõe portas com firewall disciplinado.