Passo a passo completo: do servidor vazio à aplicação Node.js rodando com PM2, Nginx reverse proxy, SSL Let's Encrypt e auto-start.
Antes de começar: pré-requisitos
Você precisa de: (1) VPS com Ubuntu 22.04 LTS (Digital Ocean, Contabo, Hetzner); (2) acesso SSH com usuário root ou sudo; (3) um domínio apontando para o IP da VPS (registro A); (4) aplicação Node.js rodando em porta específica (3000, 3001, etc); (5) conta GitHub/GitLab com o código. Tempo estimado do tutorial: 45 minutos do servidor vazio ao site no ar com HTTPS.
Passo 1: Preparar o servidor
SSH no servidor como root. Atualize o sistema: apt update && apt upgrade -y. Instale ferramentas básicas: apt install curl git ufw -y. Configure timezone: timedatectl set-timezone America/Sao_Paulo. Crie um usuário sudo para não usar root direto (boa prática): adduser deploy && usermod -aG sudo deploy. A partir daqui, continue como o usuário deploy.
Passo 2: Firewall UFW
Libere só as portas essenciais: ufw allow 22 (SSH), ufw allow 80 (HTTP), ufw allow 443 (HTTPS), ufw enable. Verifique: ufw status. Qualquer outra porta fica bloqueada. Isso é a primeira camada de segurança — ataque de força bruta em portas abertas aleatoriamente é a causa nº 1 de invasão de VPS.
Passo 3: Instalar Node.js (versão certa)
Não use apt install nodejs — versão muito antiga. Use NodeSource para Node 20 LTS: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs. Verifique: node -v && npm -v. Deve mostrar v20.x e npm 10.x ou similar.
Passo 4: Clonar o repositório e instalar dependências
Crie diretório para apps: sudo mkdir -p /opt/apps && sudo chown deploy:deploy /opt/apps && cd /opt/apps. Clone: git clone git@github.com:voce/seu-projeto.git. Entre: cd seu-projeto. Instale: npm ci --production. Crie arquivo .env com variáveis sensíveis (NUNCA commitar): nano .env.
Passo 5: PM2 para gerenciar o processo
PM2 mantém a aplicação rodando mesmo se crashar, reinicia no boot do servidor e centraliza logs. Instale global: sudo npm install -g pm2. Inicie sua app: pm2 start server.js --name meu-app. Configure auto-start: pm2 startup (copie e cole o comando que ele retornar). Salve: pm2 save. Verifique: pm2 list e pm2 logs meu-app.
Passo 6: Nginx como reverse proxy
Node.js não deve expor porta 80/443 diretamente — isso é trabalho do Nginx. Instale: sudo apt install nginx -y. Crie config: sudo nano /etc/nginx/sites-available/meu-app. Conteúdo: server { listen 80; server_name meudominio.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; } }. Ative: sudo ln -s /etc/nginx/sites-available/meu-app /etc/nginx/sites-enabled/. Teste: sudo nginx -t. Recarregue: sudo systemctl reload nginx.
Passo 7: SSL Let's Encrypt com certbot
HTTPS é obrigatório em 2026. Let's Encrypt é gratuito e automático. Instale certbot: sudo apt install certbot python3-certbot-nginx -y. Rode: sudo certbot --nginx -d meudominio.com -d www.meudominio.com. Responda as perguntas (email, aceitar termos, redirect HTTP→HTTPS). O certbot edita o Nginx automaticamente, baixa o certificado e configura renovação automática a cada 60 dias.
Passo 8: Testes finais e monitoramento
Acesse https://meudominio.com — deve abrir sua aplicação com cadeado. Teste: curl -I https://meudominio.com (deve retornar 200 OK). Configure alertas básicos: pm2 install pm2-logrotate (rotação de logs) + setup de email de alertas de downtime via uptimerobot.com (gratuito). Parabéns, você tem um deploy profissional.
Soluções CodexShop relacionadas
Se você quer acelerar e ter um especialista fazendo por você, a CodexShop tem soluções completas:
VPS gerenciada com Nginx, PM2, SSL, firewall, backups e 30 dias de suporte. Pronta para rodar qualquer stack.
A partir de R$ 1497,00
Ver produto →Pipeline CI/CD com GitHub Actions: staging, prod, rollback, testes, lint, build e deploy automático.
A partir de R$ 1297,00
Ver produto →Conclusão
Aplicar o que foi explicado aqui vai te colocar à frente de 90% dos concorrentes. O conhecimento está disponível — a execução é o que separa quem vende de quem não vende. Se quiser acelerar, fale com a gente: entre em contato sobre VPS Gerenciada Completa — Setup + 30 dias.