Como Configurar um Servidor Ubuntu para Node.js na Web
O checklist passo a passo definitivo para hospedar suas aplicações em uma VPS Cloud na Vultr: Firewall UFW, NodeSource LTS v22+, PM2 em Cluster, Nginx como Reverse Proxy e SSL HTTPS automático com Let's Encrypt.
Bônus de US$ 300,00 em Créditos na Vultr Cloud
Acompanhe este tutorial criando sua instância diretamente no datacenter da Vultr em São Paulo com discos NVMe e altíssima largura de banda.
Ativar US$ 300 de Bônus na VultrComo 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 esta aplicação no ar com a Vultr Cloud
Precisa de um ambiente Linux para rodar este código com alta performance e baixa latência no Brasil? Utilize nosso link de parceiro e ganhe US$ 300,00 em créditos gratuitos para testar servidores VPS com discos NVMe.
Í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 esta aplicação no ar com a Vultr Cloud
Precisa de um ambiente Linux para rodar este código com alta performance e baixa latência no Brasil? Utilize nosso link de parceiro e ganhe US$ 300,00 em créditos gratuitos para testar servidores VPS com discos NVMe.
Recomendações Avançadas de Segurança e Otimização para o Ubuntu na Vultr
Ao manter instâncias em produção na Vultr Cloud, engenheiros de infraestrutura devem aplicar camadas adicionais de proteção:
- Atualizações Não-Atendidas (Unattended Upgrades): Configure o pacote
unattended-upgradespara instalar automaticamente patches de segurança do kernel sem intervenção manual. - Swap File Otimizado: Em instâncias com menos de 4GB de RAM, ative 2GB de Swap com valor de
vm.swappiness = 10para prevenir que o OOM Killer encerre o processo do Node.js abruptamente. - Rotação de Logs do PM2: Instale o módulo
pm2-logrotate(pm2 install pm2-logrotate) configurando tamanho máximo de 10MB por arquivo e retenção de 7 dias para evitar esgotamento de disco. - Auditoria com Lynis: Execute periodicamente a ferramenta de auditoria de segurança
sudo lynis audit systempara identificar potenciais brechas na configuração do host Linux.
Com essa base consolidada, seu servidor Ubuntu na Vultr operará com disponibilidade contínua (99.99%), latência estável e total conformidade com as melhores práticas mundiais de DevOps e engenharia de software.
Arquitetura de Produção e Melhores Práticas Operacionais no Ubuntu com Vultr
A administração de servidores Linux voltados à hospedagem de microsserviços Node.js de alta vazão exige rigor em todas as camadas de abstração do sistema operacional. Ao contrário de ambientes de desenvolvimento local, servidores conectados diretamente à internet pública sofrem varreduras contínuas de portas e tentativas automatizadas de exploração de vulnerabilidades a cada segundo.
1. Governança de Permissões e Princípio do Menor Privilégio
Nunca execute a aplicação Node.js como usuário root. A criação de um usuário de sistema dedicado sem privilégios de login direto assegura que, mesmo no caso improvável de uma dependência comprometida por Supply Chain Attack ou execução arbitrária de código (RCE), o invasor permaneça enjaulado no diretório restrito do processo. O Nginx atua como guardião na borda, recebendo conexões TLS nas portas privilegiadas 80 e 443 e despachando via proxy reverso local para o processo do Node.js escutando apenas em interface de loopback (127.0.0.1:3000).
2. Monitoramento Contínuo e Gestão Proativa de Recursos
A infraestrutura de servidores da Vultr Cloud oferece métricas em tempo real no painel de controle para acompanhamento de uso de vCPU, IOPS de disco e tráfego de rede. No nível do sistema operacional, recomendamos configurar alertas de monitoramento com Prometheus Node Exporter ou ferramentas leves de telemetria. Estabelecer limiares claros para alertas de consumo de memória RAM (acima de 85%) e latência de resposta do endpoint de health check permite à equipe de engenharia agir antes que qualquer degradação afete a experiência dos usuários finais.
3. Rotina Periódica de Atualizações e Patches de Segurança do Kernel
O sistema operacional Ubuntu LTS recebe atualizações críticas de segurança semanalmente através dos repositórios oficiais da Canonical. Configure a execução de unattended-upgrades para pacotes de segurança do kernel e bibliotecas C centrais (glibc, OpenSSL), agendando janelas controladas de reinicialização automática quando exigido por atualizações de kernel com livepatch. Essa disciplina operacional transforma sua VPS em uma fortaleza digital resiliente, pronta para sustentar crescimento exponencial de tráfego com estabilidade inabalável.
Resgate US$ 300 na Vultr
Créditos gratuitos para desenvolvedores começarem a rodar instâncias Linux ultravelozes com NVMe.
Criar Conta com BônusComandos Rápidos
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g pm2
pm2 startup systemd
sudo apt install -y nginx certbot python3-certbot-nginx