Node.js na VPS: como rodar seu app com PM2
Aprenda a rodar Node.js na VPS: instalar com nvm, subir o app com PM2, religar após reiniciar, colocar domínio com Nginx, atualizar e resolver erros comuns.
Por Redação Eleven Host · @robson.direitodigital · 27 de outubro de 2026 · 6 min de leitura

Capa da Redação Eleven Host para o guia: Node.js na VPS: como rodar seu app com PM2 Arte: Eleven Host
Para rodar Node.js na VPS, instale o Node com o nvm, mantenha o app no ar com o PM2 e ponha o Nginx na frente para atender o domínio. Cada peça tem um papel, e este guia mostra os comandos na ordem.
Os comandos usam nomes de exemplo (meu-app, app.js, a porta 3000): troque pelos do seu projeto. O PM2 é um gerenciador de processos para apps Node.js: mantém o app rodando em segundo plano, reinicia se ele cair, guarda os logs e religa os apps depois que a VPS reinicia.
Instalar o Node com o nvm
O nvm instala o Node por usuário, na pasta ~/.nvm, e permite trocar de versão com um comando. Rode estes passos com o seu usuário comum, não como root: o app não precisa de mais permissão do que isso.
Baixe e rode o instalador do nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash
Feche e abra o terminal (ou rode source ~/.bashrc) para o nvm ser reconhecido. Depois instale a versão LTS do Node e confira:
nvm install --lts
node -v
npm -v
Na data deste guia, o site nodejs.org mostra a LTS v24.22.1. A sua pode ser mais nova, e tudo bem: use a LTS que o nvm instalar.
Subir o app com o PM2
Instale o PM2 de forma global com o npm:
npm install pm2@latest -g
Entre na pasta do seu projeto e inicie o app com um nome fácil de lembrar:
cd ~/meu-app
pm2 start app.js --name meu-app
Estes são os comandos do dia a dia:
pm2 list(oupm2 ls,pm2 status) mostra os apps e se estão no ar.pm2 logsmostra os registros dos apps.pm2 restart meu-appreinicia o app, por exemplo depois de trocar o código.pm2 stop meu-apppara o app sem tirá-lo da lista.pm2 delete meu-apptira o app da lista.pm2 monitabre um painel no terminal com o uso de cada app.
Rode o app como usuário comum e deixe a senha do banco e outros segredos fora do código versionado, em variáveis de ambiente. Rodar o app como root dá a ele mais permissão do que ele precisa.
Religar o app depois de reiniciar a VPS
Subir o app com o PM2 não basta para ele voltar após um reinício da VPS. Para isso existem dois comandos. O primeiro cria a configuração de inicialização. Rode-o sem sudo:
pm2 startup
O PM2 detecta o sistema de inicialização e mostra na tela um comando para você copiar e colar no terminal. Esse comando, sim, começa com sudo. Cole-o e execute. Depois, com os apps já iniciados, grave a lista:
pm2 save
O pm2 save congela a lista de apps para ela voltar depois do reinício. Se precisar trazer a lista salva de volta manualmente, use pm2 resurrect. Para remover a configuração de inicialização, use pm2 unstartup.
Quer colocar o seu app Node.js num servidor seu? Os planos de VPS começam em R$ 17,00/mês, no Plano Bronze; confira na loja o que cada plano inclui. Ver planos de VPS
Colocar domínio e HTTPS na frente do app
O app escuta numa porta interna, como a 3000, em 127.0.0.1. Quem recebe os visitantes nas portas 80 e 443 é o Nginx, que repassa o pedido ao app. Esse arranjo se chama proxy reverso, e o HTTPS fica configurado no Nginx. O passo a passo está em Nginx proxy reverso: como configurar na sua VPS.
Duas conferências antes disso:
- O domínio precisa apontar para a VPS. O guia Apontar domínio para VPS: passo a passo com registro A mostra como.
- Não libere a porta 3000 no firewall. Deixe abertas só as portas que o site e o SSH usam, como explica o guia Firewall para VPS: como proteger seu servidor. Assim, o acesso ao app passa pelo Nginx.
Atualizar o app, o Node e o PM2
Para publicar uma versão nova do seu código, atualize os arquivos na pasta do projeto, instale as dependências se mudaram e reinicie o app:
cd ~/meu-app
npm install
pm2 restart meu-app
Para trocar de versão do Node, instale a nova com o nvm e confira a versão com node -v antes de seguir. A documentação do PM2 pede que, depois de atualizar o Node, você atualize também o script de inicialização:
pm2 unstartup
pm2 startup
pm2 save
Lembre que o pm2 startup mostra um comando com sudo para colar, como no passo anterior. Para atualizar o próprio PM2:
npm install pm2@latest -g
pm2 update
Teste o app depois de cada troca de versão e acompanhe com pm2 logs.
Erros comuns
Estes são problemas comuns quando se sobe um app Node.js numa VPS:
- Erro 502 no navegador: o Nginx não conseguiu falar com o app. Veja se ele está no ar com
pm2 liste se a porta do Nginx é a mesma do app. O guia Erro 502 Bad Gateway: o que é e como resolver na VPS traz o passo a passo. - O app sai sozinho: rode
pm2 logse leia as últimas linhas. A causa pode aparecer ali, como uma variável que falta ou um erro no código. - O app não volta depois de reiniciar a VPS: repita o
pm2 startupe opm2 save, e confira compm2 listapós um reinício. - O comando
nodenão é encontrado: o terminal talvez ainda não tenha carregado o nvm. Abra um terminal novo ou rodesource ~/.bashrc.
Checklist do app Node no ar
- Instalei o Node com o nvm, com o usuário comum, e conferi
node -venpm -v. - Instalei o PM2 e iniciei o app com
pm2 start. - Conferi o app com
pm2 liste li os registros compm2 logs. - Rodei
pm2 startup, colei o comando que ele mostrou e rodeipm2 save. - O app escuta em
127.0.0.1, e o Nginx faz o proxy reverso. - O domínio aponta para a VPS e o HTTPS está no Nginx.
- A porta 3000 não está liberada no firewall.
- Os segredos estão fora do código versionado.
- Depois de trocar o Node, repeti
pm2 unstartup,pm2 startupepm2 save.
Registre o domínio do seu app e aponte para a VPS. Registrar domínio
Perguntas frequentes
Para que serve o PM2?
É um gerenciador de processos para apps Node.js. Mantém o app em segundo plano, reinicia se ele cair, guarda logs e religa os apps depois que a VPS reinicia.
Preciso de Nginx para rodar um app Node.js na VPS?
O Nginx na frente atende o domínio nas portas 80 e 443 e permite colocar o HTTPS. O app fica numa porta interna, sem exposição direta.
Como faço o app voltar depois de reiniciar a VPS?
Rode pm2 startup sem sudo, cole o comando que ele mostrar e, com os apps iniciados, rode pm2 save.
Preciso mexer no PM2 depois de atualizar o Node?
Segundo a documentação do PM2, sim: rode pm2 unstartup, depois pm2 startup de novo e pm2 save.
Como vejo por que o app caiu?
Rode pm2 logs e leia as últimas linhas. Elas podem mostrar o erro que fez o app sair.