Como configurar o PM2 para reiniciar sua aplicação Node.js automaticamente após falhas
Olá! Aqui é a Sensei da GeHost 🧘♀️. Se você tem uma aplicação Node.js rodando no seu servidor e já passou pelo susto de descobrir que ela "caiu" no meio da noite e ninguém percebeu, este guia é pra você. Vamos configurar o PM2, um gerenciador de processos que cuida da sua aplicação: reinicia sozinho se ela travar, mantém tudo rodando em segundo plano e ainda te dá logs organizados para entender o que aconteceu.
Vamos com calma, passo a passo. Não precisa saber nada avançado — só seguir a receita. 💛
Antes de começar: este guia assume que você já tem acesso via terminal (SSH) ao ambiente onde sua aplicação Node.js está hospedada e que o Node.js já está instalado. Se você não tem certeza sobre isso ou sobre qual plano/recursos seu servidor possui, consulte seu contrato ou fale com o suporte pelo painel do cliente.
1. O que é o PM2 e por que usar
O PM2 é como um "zelador" para a sua aplicação Node.js. Ele fica de olho no processo e, se por qualquer motivo o app cair (erro não tratado, falta de memória, etc.), o PM2 reinicia automaticamente — sem você precisar entrar no servidor no meio da madrugada para religar nada.
- Reinicia a aplicação sozinho em caso de falha (crash);
- Mantém a aplicação rodando mesmo depois que você fecha o terminal;
- Reinicia a aplicação automaticamente se o servidor for reiniciado;
- Organiza os logs (mensagens de erro e funcionamento) em um só lugar.
2. Instalando o PM2
Com acesso ao terminal do seu servidor, rode o comando abaixo para instalar o PM2 globalmente (ou seja, disponível para qualquer aplicação):
npm install -g pm2
Depois de instalar, você pode confirmar que deu certo verificando a versão:
pm2 --version
3. Iniciando sua aplicação com o PM2
Em vez de rodar sua aplicação com node app.js, você vai deixar o PM2 cuidar disso. Navegue até a pasta do seu projeto e rode:
pm2 start app.js --name "minha-aplicacao"
Troque app.js pelo arquivo principal da sua aplicação, e "minha-aplicacao" por um nome que ajude você a identificá-la depois (útil se você tiver mais de um projeto rodando).
Dica da Sensei: se sua aplicação usa um comando de start diferente (comonpm start), você também pode usarpm2 start npm --name "minha-aplicacao" -- start.
4. Configurando o reinício automático após falhas
Aqui está a boa notícia: o reinício automático em caso de crash já vem ativado por padrão assim que você inicia a aplicação com pm2 start. Ou seja, se o processo cair inesperadamente, o PM2 já tenta religar sozinho.
Mas dá pra deixar o comportamento ainda mais sob controle:
- Limitar tentativas de reinício (evita um "loop infinito" de falhas seguidas):
pm2 start app.js --name "minha-aplicacao" --max-restarts 10
- Reiniciar automaticamente se a aplicação passar de um limite de memória (útil para evitar travamentos por consumo excessivo):
pm2 start app.js --name "minha-aplicacao" --max-memory-restart 300M
- Ver o status de todas as aplicações gerenciadas pelo PM2 a qualquer momento:
pm2 status
5. Fazendo o PM2 sobreviver a reinicializações do servidor
Até aqui, o PM2 já reinicia sua aplicação se ela travar. Mas e se o servidor inteiro reiniciar (por exemplo, após uma manutenção)? Para que sua aplicação volte a funcionar sozinha nesse caso também, siga estes dois comandos:
- Gere o script de inicialização automática:
pm2 startup
Esse comando vai mostrar na tela uma linha de comando extra para você copiar e colar (ela varia de acordo com o sistema do servidor). Copie e execute essa linha exatamente como ela aparecer.
- Salve a lista atual de aplicações gerenciadas pelo PM2, para que ele saiba o que religar:
pm2 save
Pronto! A partir de agora, mesmo que o servidor seja reiniciado, o PM2 sobe junto com o sistema e coloca sua aplicação de volta no ar automaticamente.
6. Acompanhando logs e status
Sempre que quiser saber como sua aplicação está se comportando, use:
pm2 logs— mostra os logs em tempo real (ótimo para investigar um erro);pm2 monit— abre um painel simples com uso de CPU e memória de cada aplicação;pm2 list— lista todas as aplicações e o status atual (online, parada, quantas vezes reiniciou).
7. Comandos do dia a dia
Alguns comandos que você vai usar com frequência para gerenciar sua aplicação:
pm2 restart minha-aplicacao— reinicia manualmente;pm2 stop minha-aplicacao— para a aplicação (ela não reinicia sozinha enquanto estiver parada);pm2 delete minha-aplicacao— remove a aplicação da lista do PM2;pm2 reload minha-aplicacao— reinicia sem deixar a aplicação fora do ar (bom para atualizações).
Dica da Sensei: depois de usarpm2 deleteou de mudar a configuração de uma aplicação, lembre-se de rodarpm2 savenovamente — assim a lista salva para reinicialização automática fica atualizada.
8. Quando pedir ajuda
Se em algum passo o comando não funcionar, aparecer uma mensagem de permissão negada, ou você não tiver certeza sobre o acesso ao seu ambiente Node.js, não se preocupe — fale com o nosso suporte através do painel do cliente (painel.gehost.com.br). A equipe pode te ajudar a confirmar as configurações do seu plano e te orientar com calma. 🌱
Você chegou até aqui e agora tem uma aplicação Node.js muito mais resiliente — pronta para se recuperar sozinha das pequenas falhas do dia a dia. Um passo de cada vez! 💫