Artigos sobre: Hospedagem para Desenvolvedores

Deploy de app NodeJS em VPS

Deploy de aplicação Node.js em VPS com Nginx e PM2 (guia completo)


Você tem uma aplicação Node.js funcionando na sua máquina e quer colocá-la no ar em um VPS? Este guia cobre todo o caminho: instalação do Node, configuração do PM2, Nginx e SSL.


Arquitetura final


Usuário → HTTPS (443) → Nginx → PM2 → App Node.js (porta 3000)


O Nginx cuida de SSL, compressão e cache estático. O PM2 cuida de manter a aplicação rodando, reiniciar em caso de crash e gerenciar logs.


Passo 1: instalar Node.js LTS


Use o NodeSource para instalar a versão LTS mais recente:


curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
node -v
npm -v


Passo 2: enviar sua aplicação para o servidor


Use Git (recomendado) ou SCP:


# Via Git
git clone https://github.com/seu-usuario/sua-app.git /var/www/minha-app
cd /var/www/minha-app
npm install --production

# Via SCP (do seu computador local)
scp -r ./minha-app usuario@SEU_IP:/var/www/minha-app


Passo 3: instalar e configurar PM2


sudo npm install -g pm2


Iniciar a aplicação:


cd /var/www/minha-app
pm2 start app.js --name "minha-app"


Garantir que reinicie após reboot:


pm2 startup
pm2 save


Comandos úteis do PM2


Comando

O que faz

pm2 list

Lista processos ativos

pm2 logs minha-app

Mostra logs em tempo real

pm2 restart minha-app

Reinicia a aplicação

pm2 monit

Dashboard de monitoramento


Passo 4: configurar Nginx como proxy reverso


Instale o Nginx:


sudo apt install nginx -y


Crie a configuração do site:


sudo nano /etc/nginx/sites-available/minha-app


Conteúdo:


server {
listen 80;
server_name seudominio.com.br;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}


Ative e teste:


sudo ln -s /etc/nginx/sites-available/minha-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx


Passo 5: ativar HTTPS com Let's Encrypt


sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d seudominio.com.br


O Certbot configura automaticamente o Nginx para HTTPS e agenda renovação automática.


Checklist de produção


  • [ ] Node.js LTS instalado
  • [ ] Aplicação rodando com PM2
  • [ ] PM2 configurado para auto-start
  • [ ] Nginx como proxy reverso
  • [ ] HTTPS ativo com Let's Encrypt
  • [ ] Firewall liberando apenas 22, 80 e 443
  • [ ] Logs acessíveis (pm2 logs)
  • [ ] Variáveis de ambiente em arquivo .env (não no código)


Perguntas frequentes (FAQ)


PM2 é melhor que node app.js direto?

Sim, muito. PM2 reinicia automaticamente em caso de crash, gerencia logs, permite rodar em modo cluster e sobrevive a reboot do servidor.


Posso rodar múltiplas apps Node.js no mesmo VPS?

Sim. Cada app roda em uma porta diferente e o Nginx direciona pelo domínio. PM2 gerencia todas.


Docker ou PM2?

Para aplicações Node.js simples, PM2 é mais direto. Para stacks com múltiplos serviços (banco, cache, workers), Docker Compose é a melhor escolha.


Próximos passos



Actualizado em: 16/03/2026

Esse artigo foi útil?

Partilhe o seu feedback

Cancelar

Obrigado!