Bônus Especial Vultr Cloud: US$ 300,00 em créditos gratuitos para instâncias de alta velocidade no Brasil (São Paulo) e no mundo! Resgatar US$ 300 Agora
Início Tutoriais Ubuntu + Vultr Sobre
DEVOPS & PRODUÇÃO US$ 300 EM CRÉDITOS VULTR

Como Configurar um Servidor Ubuntu para Node.js na Web

O guia passo a passo definitivo para hospedar suas aplicações em uma VPS Cloud na Vultr: Firewall UFW, NodeSource LTS, PM2 em Cluster, Nginx como Reverse Proxy e SSL HTTPS automático.

Ubuntu 24.04 / 22.04 LTS
Arquitetura de Produção

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!

👉 Clique aqui para ativar seus US$ 300 de bônus na Vultr



Índice do Guia

  1. Por que utilizar uma VPS Cloud como a Vultr?
  2. Criando a Instância Ubuntu na Vultr (Com US$ 300 de Bônus)
  3. Primeiro Acesso SSH e Hardening Inicial
  4. Configuração do Firewall UFW
  5. Instalação do Node.js LTS (NodeSource / NVM)
  6. Gerenciamento de Processos 24/7 com PM2
  7. Configuração do Nginx como Reverse Proxy
  8. Criptografia HTTPS com Let's Encrypt (Certbot)
  9. 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.br ou seu domínio) diretamente aos DNS.

2. Criando a Instância Ubuntu na Vultr

  1. Acesse o portal da Vultr através do nosso link promocional: Ativar US$ 300 em Créditos na Vultr.
  2. No painel, clique em Deploy + e selecione Cloud Compute.
  3. Em Server Location, selecione o datacenter mais próximo dos seus usuários (ex: São Paulo ou Atlanta/Miami).
  4. Em Server Image, selecione Ubuntu 24.04 LTS (ou 22.04 LTS).
  5. 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.
  6. Configure sua chave SSH pública para login sem senha (altamente recomendado).
  7. 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:

  1. Firewall UFW bloqueia portas internas.
  2. Nginx gerencia o tráfego web, compressão e SSL.
  3. PM2 garante que caso a aplicação encontre um erro ou o servidor seja reiniciado, ela volte imediatamente sem downtime.
  4. 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!

👉 Clique aqui para ativar seus US$ 300 de bônus na Vultr


Giancarlo Gil Ottaviani Raduan

Giancarlo Gil Ottaviani Raduan

raduan.dev Especialista Node.js & Linux
Cidadão Europeu • Brasil • EUA • Europa (Itália)

Especialista em ecossistema Node.js e Linux com vasta experiência em ambientes de alta concorrência, sistemas distribuídos e infraestrutura escalável. Cidadão europeu em constante trânsito entre o Brasil, Estados Unidos e Europa (com carinho especial pela Itália), residindo em São José do Rio Preto - SP. Esposo da Simone, pai orgulhoso da Lais e da Sophia, e graduando em Direito. Criador do node.com.br para entregar à comunidade lusófona documentação referencial, arquitetura moderna e downloads gratuitos em Markdown (.md).

Especialista Linux Revisão Técnica 100% Humana Downloads Gratuitos (.md) Deploy Ubuntu & Vultr Cloud Graduando em Direito Família (Simone, Lais & Sophia)
Aviso de Independência: O node.com.br é uma publicação educativa pessoal, independente e não oficial mantida por Giancarlo Gil Ottaviani Raduan. Não possui filiação, patrocínio ou vínculo institucional à OpenJS Foundation ou ao projeto oficial Node.js.

Resgate US$ 300 na Vultr

Créditos gratuitos para desenvolvedores começarem a rodar Node.js em instâncias NVMe ultravelozes.

Criar Conta com Bônus
Comandos Rápidos
Instalar NodeSource v22 LTS:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
Instalar PM2:
sudo npm install -g pm2
pm2 startup systemd
Instalar Nginx & Certbot:
sudo apt install -y nginx certbot python3-certbot-nginx