Como Configurar um Servidor Ubuntu 22.04/24.04 com Node.js na Vultr para Produção
Guia definitivo de DevOps: VPS Cloud, UFW Firewall, NVM/NodeSource, PM2 Daemon, Nginx Reverse Proxy e Certificado SSL Let's Encrypt Gratuito.
Como Configurar um Servidor Ubuntu para Node.js em Produção na Vultr
Desenvolver localmente em localhost:3000 é apenas o primeiro passo. Quando chega o momento de colocar sua API ou aplicação web no ar para o mundo real, você precisa de um ambiente estável, escalável, seguro e de alta performance.
Neste tutorial referencial mantido por Giancarlo Gil Ottaviani Raduan, você aprenderá a arquitetar e provisionar um servidor Ubuntu 22.04 ou 24.04 LTS profissional na Vultr Cloud, configurando todas as camadas fundamentais: segurança, gerenciamento de processos, proxy reverso e criptografia TLS/SSL.
🚀 Coloque sua Aplicação Node.js em Produção na Nuvem
Todo desenvolvedor Node.js precisa dominar como rodar suas aplicações na web de verdade. Aprenda o passo a passo completo no nosso guia prático: Como Configurar um Servidor Ubuntu para Node.js na Web (Nginx, PM2 e SSL).
Aproveite a parceria exclusiva com a Vultr e receba US$ 300,00 em créditos gratuitos para iniciar instâncias de alta performance em datacenters globais e no Brasil!
Índice do Guia
- Por que utilizar uma VPS Cloud como a Vultr?
- Criando a Instância Ubuntu na Vultr (Com US$ 300 de Bônus)
- Primeiro Acesso SSH e Hardening Inicial
- Configuração do Firewall UFW
- Instalação do Node.js LTS (NodeSource / NVM)
- Gerenciamento de Processos 24/7 com PM2
- Configuração do Nginx como Reverse Proxy
- Criptografia HTTPS com Let's Encrypt (Certbot)
- Automação de Reinicializações e Monitoramento
1. Por que utilizar uma VPS Cloud como a Vultr?
Plataformas serverless ou PaaS compartilhadas têm seu espaço, mas possuem limitações severas de latência de inicialização (cold starts), custo que escala exponencialmente e falta de controle sobre o sistema operacional e módulos nativos em C/C++ do Node.js.
Com a Vultr, você obtém:
- Recursos dedicados e CPUs de alta frequência (AMD EPYC e Intel Xeon).
- Armazenamento 100% NVMe, essencial para o I/O intensivo do Node.js.
- Datacenters globais estratégicos, incluindo presença na América Latina (São Paulo) para menor latência com o público brasileiro.
- IP dedicado público, permitindo vincular seu domínio próprio (
node.com.brou seu domínio) diretamente aos DNS.
2. Criando a Instância Ubuntu na Vultr
- Acesse o portal da Vultr através do nosso link promocional: Ativar US$ 300 em Créditos na Vultr.
- No painel, clique em Deploy + e selecione Cloud Compute.
- Em Server Location, selecione o datacenter mais próximo dos seus usuários (ex: São Paulo ou Atlanta/Miami).
- Em Server Image, selecione Ubuntu 24.04 LTS (ou 22.04 LTS).
- Em Server Size, o plano básico de 1 vCPU e 1 GB a 2 GB de RAM já suporta milhares de requisições por minuto com Node.js bem otimizado.
- Configure sua chave SSH pública para login sem senha (altamente recomendado).
- Clique em Deploy Now. Em menos de 60 segundos, sua VPS estará pronta com um IP público dedicado (ex:
198.51.100.25).
3. Primeiro Acesso SSH e Hardening Inicial
Abra seu terminal no Linux/macOS ou PowerShell no Windows e conecte-se como root:
ssh root@SEU_IP_VULTR
Atualize os pacotes do sistema:
apt update && apt upgrade -y
Crie um usuário dedicado para a aplicação (nunca rode Node.js como root):
# Cria o usuario 'deployer'
adduser deployer
# Adiciona o usuario ao grupo sudo
usermod -aG sudo deployer
# Copia as chaves SSH autorizadas para o novo usuario
rsync --archive --chown=deployer:deployer ~/.ssh /home/deployer
Faça logout e conecte-se com o novo usuário:
exit
ssh deployer@SEU_IP_VULTR
4. Configuração do Firewall UFW
O Ubuntu vem com o ufw (Uncomplicated Firewall). Vamos permitir apenas as portas essenciais: SSH (22), HTTP (80) e HTTPS (443):
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Confira o status com:
sudo ufw status verbose
5. Instalação do Node.js LTS
Recomendamos utilizar o repositório oficial mantido pela NodeSource, que disponibiliza as compilações oficiais LTS (Long Term Support).
# Baixa e executa o script de instalacao do NodeSource para Node.js v22.x LTS
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
# Instala o Node.js e ferramentas de compilacao de modulos nativos
sudo apt install -y nodejs build-essential
# Verifique as versoes instaladas
node -v
npm -v
6. Gerenciamento de Processos 24/7 com PM2
Se você iniciar sua aplicação com node index.js, ela morrerá assim que você fechar o terminal ou se ocorrer uma exceção não capturada. O PM2 resolve isso fornecendo restart automático, cluster mode, monitoramento de memória e logs rotacionados.
Instalando o PM2 globalmente:
sudo npm install -g pm2
Criando um exemplo de aplicação para teste:
mkdir -p ~/app && cd ~/app
npm init -y
Crie o arquivo server.js:
import http from 'node:http';
const PORT = process.env.PORT || 3000;
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
res.end(JSON.stringify({
status: 'online',
message: 'Servidor Node.js rodando em produção no Ubuntu na Vultr!',
uptime: process.uptime(),
timestamp: new Date().toISOString()
}));
});
server.listen(PORT, '127.0.0.1', () => {
console.log(`Servidor escutando na porta interna ${PORT}`);
});
Iniciando com PM2 em Modo Cluster:
# Inicia aproveitando todos os nucleos de CPU disponiveis
pm2 start server.js -i max --name "minha-api-node"
# Configura o PM2 para iniciar automaticamente no boot do Ubuntu
pm2 startup systemd
# (Execute a linha de comando exibida no terminal)
# Salva a lista de processos atual
pm2 save
Para monitorar em tempo real:
pm2 status
pm2 monit
7. Configuração do Nginx como Reverse Proxy
O Nginx ficará na linha de frente (portas 80 e 443), recebendo as conexões públicas da internet e repassando para o Node.js rodando internamente em 127.0.0.1:3000. Isso proporciona:
- Terminação SSL/TLS ultrarrápida em C.
- Compactação Gzip/Brotli.
- Servir arquivos estáticos (imagens, CSS) sem sobrecarregar o Node.
- Mitigação de ataques e proteção de headers.
Instalando o Nginx:
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Criando o Virtual Host Nginx para sua aplicação:
Crie o arquivo /etc/nginx/sites-available/meudominio.com.br:
server {
listen 80;
listen [::]:80;
server_name meudominio.com.br www.meudominio.com.br;
client_max_body_size 20M;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
# Suporte completo a WebSockets (ws:// e wss://)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
# Headers de encaminhamento de IP real
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;
proxy_read_timeout 90;
}
}
Ativando a configuração e recarregando o Nginx:
# Cria o link simbolico em sites-enabled
sudo ln -s /etc/nginx/sites-available/meudominio.com.br /etc/nginx/sites-enabled/
# Testa a sintaxe dos arquivos de configuracao
sudo nginx -t
# Se o teste retornar 'syntax is ok', recarregue
sudo systemctl reload nginx
8. Criptografia HTTPS com Let's Encrypt (Certbot)
Ter um certificado SSL ativo com cadeado verde é obrigatório na web moderna. Utilizaremos o Certbot oficial para emitir e renovar automaticamente certificados gratuitos.
# Instala o Certbot e o plugin do Nginx
sudo apt install -y certbot python3-certbot-nginx
# Dispara a emissao automatica e configuracao do SSL no Nginx
sudo certbot --nginx -d meudominio.com.br -d www.meudominio.com.br
O Certbot alterará o arquivo do Nginx automaticamente, ativando HTTPS, HTTP/2 e redirecionamento 301 de HTTP para HTTPS. A renovação acontece de forma automática via timer do systemd.
Teste a renovação automática:
sudo certbot renew --dry-run
9. Automação de Reinicializações e Monitoramento
Pronto! Seu servidor Ubuntu está com a melhor arquitetura existente para rodar Node.js na web:
- Firewall UFW bloqueia portas internas.
- Nginx gerencia o tráfego web, compressão e SSL.
- PM2 garante que caso a aplicação encontre um erro ou o servidor seja reiniciado, ela volte imediatamente sem downtime.
- Vultr Cloud entrega os recursos brutos de hardware, rede de baixa latência e estabilidade corporativa.
🚀 Coloque sua Aplicação Node.js em Produção na Nuvem
Todo desenvolvedor Node.js precisa dominar como rodar suas aplicações na web de verdade. Aprenda o passo a passo completo no nosso guia prático: Como Configurar um Servidor Ubuntu para Node.js na Web (Nginx, PM2 e SSL).
Aproveite a parceria exclusiva com a Vultr e receba US$ 300,00 em créditos gratuitos para iniciar instâncias de alta performance em datacenters globais e no Brasil!