> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://ajuda.streethosting.com.br/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# 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:

```bash
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:

```bash
# 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

```bash
sudo npm install -g pm2
```

Iniciar a aplicação:

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

Garantir que reinicie após reboot:

```bash
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:

```bash
sudo apt install nginx -y
```

Crie a configuração do site:

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

Conteúdo:

```nginx
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:

```bash
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

```bash
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](/pt/article/monitoramento-vps-com-netdata)
* Containerize com [Docker no VPS](/pt/article/instalar-docker-no-vps-com-docker-compose)
* Monte a stack completa em [VPS para desenvolvedores](/pt/article/vps-para-desenvolvedores-stack-ideal)
