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 pm2Iniciar a aplicação:
cd /var/www/minha-app
pm2 start app.js --name "minha-app"Garantir que reinicie após reboot:
pm2 startup
pm2 saveComandos úteis do PM2
Comando | O que faz |
|---|---|
| Lista processos ativos |
| Mostra logs em tempo real |
| Reinicia a aplicação |
| Dashboard de monitoramento |
Passo 4: configurar Nginx como proxy reverso
Instale o Nginx:
sudo apt install nginx -yCrie a configuração do site:
sudo nano /etc/nginx/sites-available/minha-appConteú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 nginxPasso 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
- Monitore a aplicação com Monitoramento com Netdata
- Containerize com Docker no VPS
- Monte a stack completa em VPS para desenvolvedores
Actualizado em: 16/03/2026
Obrigado!
