- Por Que um VPS é a Escolha Certa para o n8n em Produção
- Requisitos Mínimos de Hardware
- Sistema Operacional Recomendado
- Passo 1: Atualizar o Sistema e Instalar Dependências
- Passo 2: Instalar o Node.js
- Passo 3: Instalar o n8n
- Passo 4: Criar um Usuário Dedicado para o n8n
- Passo 5: Configurar Variáveis de Ambiente
- Passo 6: Criar o Serviço Systemd
- Passo 7: Configurar o Nginx como Proxy Reverso
- Passo 8: Emitir o Certificado SSL com Certbot
- Passo 9: Configurar o Firewall
- Passo 10: Verificar o Funcionamento em Produção
- Boas Práticas para Manter o n8n Estável em Produção
- Usando Docker em Vez de Instalação Direta
- Escolhendo o VPS Certo para Rodar o n8n
- Solução de Problemas Comuns
- FAQs
- Conclusão
Rodar o n8n em um VPS é a forma mais confiável de colocar automações em produção sem depender de planos cloud com limites de execução, timeouts arbitrários ou custos que crescem junto com o volume de workflows. Se você já tentou manter o n8n funcionando em hospedagem compartilhada ou em um plano gratuito de nuvem, conhece bem o problema: a instância cai, os webhooks param de responder e você só descobre quando um cliente liga reclamando.
Este guia cobre tudo que você precisa para instalar, configurar e manter o n8n em produção em um VPS — do zero até HTTPS funcionando, processo persistente e boas práticas de segurança. Sem atalhos que quebram em três semanas.
Por Que um VPS é a Escolha Certa para o n8n em Produção
O n8n é uma aplicação Node.js que roda como processo contínuo e precisa de recursos previsíveis. Em hospedagem compartilhada, o uso de CPU e memória é limitado por política, não por hardware, e processos de longa duração são encerrados automaticamente. Isso mata workflows agendados e webhooks sem nenhum aviso.
Em um VPS você tem:
- Recursos dedicados — CPU e RAM garantidos, sem vizinhos consumindo sua cota
- Controle total do processo — você decide como o n8n inicia, reinicia e registra logs
- Acesso root — instala dependências, configura firewall, define variáveis de ambiente
- IP fixo — necessário para configurar domínio, certificado SSL e webhooks estáveis
Para agências e desenvolvedores gerenciando automações de múltiplos clientes, um VPS com NVMe também garante que leituras e escritas no banco de dados interno do n8n não virem gargalo conforme o volume de execuções cresce.
Requisitos Mínimos de Hardware
Antes de provisionar o servidor, defina o tamanho certo. O n8n em modo leve consome cerca de 200 MB de RAM em idle, mas workflows com muitos nós, chamadas HTTP simultâneas ou processamento de arquivos podem ultrapassar 1 GB com facilidade.
| Uso | RAM | vCPU | Armazenamento |
|---|---|---|---|
| Testes e desenvolvimento | 1 GB | 1 | 20 GB NVMe |
| Produção leve (até 50 workflows) | 2 GB | 2 | 40 GB NVMe |
| Produção média (50+ workflows, múltiplos usuários) | 4 GB | 2–4 | 80 GB NVMe |
NVMe faz diferença real aqui. O n8n usa SQLite por padrão (ou PostgreSQL em setups maiores) e operações frequentes de leitura e escrita em disco mecânico ou SATA SSD criam latência perceptível em workflows de alto volume.
Sistema Operacional Recomendado
Use Ubuntu 22.04 LTS ou Ubuntu 24.04 LTS. São as distribuições com melhor suporte da comunidade n8n, maior disponibilidade de tutoriais e ciclo de suporte longo o suficiente para não forçar uma migração desnecessária no meio de um projeto de cliente.
Debian 12 também funciona bem se você já tem familiaridade com ele. Evite CentOS em versões EOL e distribuições sem suporte ativo de pacotes.
Passo 1: Atualizar o Sistema e Instalar Dependências
Conecte ao VPS via SSH com o usuário root (ou um usuário sudo) e comece atualizando os pacotes:
apt update && apt upgrade -y
Instale as dependências básicas:
apt install -y curl wget git ufw nginx certbot python3-certbot-nginx
O nginx vai servir como proxy reverso na frente do n8n. O certbot cuida da emissão e renovação do certificado SSL automaticamente.
Passo 2: Instalar o Node.js
O n8n requer Node.js 18 ou superior. Use o repositório oficial da NodeSource para garantir uma versão atual:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
Confirme a instalação:
node -v
npm -v
Passo 3: Instalar o n8n
Com o Node.js instalado, instale o n8n globalmente via npm:
npm install -g n8n
A instalação baixa todas as dependências e registra o binário n8n no PATH do sistema. Dependendo da velocidade do servidor, pode levar alguns minutos.
Confirme:
n8n --version
Passo 4: Criar um Usuário Dedicado para o n8n
Nunca rode o n8n como root em produção. Crie um usuário sem privilégios elevados:
useradd -m -s /bin/bash n8nuser
Esse usuário vai ser o dono do processo e dos arquivos de dados do n8n.
Passo 5: Configurar Variáveis de Ambiente
O n8n usa variáveis de ambiente para configuração de produção. Crie um arquivo de configuração em /home/n8nuser/.n8n/:
mkdir -p /home/n8nuser/.n8n
nano /home/n8nuser/.n8n/.env
Adicione as variáveis essenciais:
N8N_HOST=0.0.0.0
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://seudominio.com.br/
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=senha_forte_aqui
N8N_ENCRYPTION_KEY=chave_aleatoria_de_32_caracteres
DB_TYPE=sqlite
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=336
Substitua seudominio.com.br pelo domínio real que você vai usar. A variável N8N_ENCRYPTION_KEY protege as credenciais armazenadas — gere uma string aleatória segura e guarde em local seguro.
EXECUTIONS_DATA_PRUNE=true com EXECUTIONS_DATA_MAX_AGE=336 (14 dias em horas) evita que o banco de dados cresça indefinidamente em produção.
Ajuste as permissões do arquivo:
chown -R n8nuser:n8nuser /home/n8nuser/.n8n
chmod 600 /home/n8nuser/.n8n/.env
Passo 6: Criar o Serviço Systemd
Para que o n8n inicie automaticamente com o servidor e se recupere em caso de falha, crie um serviço systemd:
nano /etc/systemd/system/n8n.service
Conteúdo do arquivo:
[Unit]
Description=n8n workflow automation
After=network.target
[Service]
Type=simple
User=n8nuser
WorkingDirectory=/home/n8nuser
EnvironmentFile=/home/n8nuser/.n8n/.env
ExecStart=/usr/bin/n8n start
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=n8n
[Install]
WantedBy=multi-user.target
Ative e inicie o serviço:
systemctl daemon-reload
systemctl enable n8n
systemctl start n8n
Verifique se está rodando:
systemctl status n8n
Para acompanhar os logs em tempo real:
journalctl -u n8n -f
Passo 7: Configurar o Nginx como Proxy Reverso
O n8n roda na porta 5678. O nginx recebe as requisições na porta 443 (HTTPS) e repassa para o n8n internamente.
Crie o arquivo de configuração do site:
nano /etc/nginx/sites-available/n8n
Conteúdo:
server {
listen 80;
server_name seudominio.com.br;
location / {
proxy_pass http://localhost:5678;
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;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
}
Ative o site e teste a configuração:
ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
Passo 8: Emitir o Certificado SSL com Certbot
Com o nginx configurado e o domínio apontando para o IP do VPS, emita o certificado:
certbot --nginx -d seudominio.com.br
O certbot modifica automaticamente a configuração do nginx para redirecionar HTTP para HTTPS e configurar os caminhos do certificado. A renovação automática já vem configurada via timer do systemd.
Passo 9: Configurar o Firewall
Libere apenas as portas necessárias:
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
A porta 5678 do n8n não precisa estar aberta publicamente — o nginx faz o proxy internamente. Mantê-la fechada no firewall reduz a superfície de ataque.
Passo 10: Verificar o Funcionamento em Produção
Acesse https://seudominio.com.br no navegador. Você deve ver a tela de login do n8n com autenticação básica ativa.
Crie um workflow simples com um nó de Webhook e um nó de resposta HTTP. Dispare o webhook via curl para confirmar que o processamento está funcionando de ponta a ponta:
curl -X POST https://seudominio.com.br/webhook/teste \
-H "Content-Type: application/json" \
-d '{"status": "ok"}'
Se receber resposta do workflow, a instalação está correta.
Boas Práticas para Manter o n8n Estável em Produção
Backups do Banco de Dados
O n8n armazena workflows, credenciais e histórico de execuções em ~/.n8n/database.sqlite no setup padrão. Faça backup desse arquivo regularmente. Um script simples no cron resolve:
0 3 * * * cp /home/n8nuser/.n8n/database.sqlite /backup/n8n-$(date +\%Y\%m\%d).sqlite
Se o seu VPS inclui backups diários automáticos — como os disponíveis nos planos da Napoleon — isso complementa, mas não substitui, um backup específico do arquivo de dados do n8n.
Migrar para PostgreSQL em Alta Escala
SQLite funciona bem para até alguns milhares de execuções por dia. Para volumes maiores ou múltiplos usuários simultâneos, migre para PostgreSQL. O n8n suporta PostgreSQL nativamente via DB_TYPE=postgresdb e as variáveis de conexão correspondentes.
Monitorar Uso de Recursos
Instale htop para monitoramento interativo e configure alertas de uso de memória e disco. Um workflow que processa arquivos grandes pode consumir memória rapidamente se não tiver limites definidos.
apt install -y htop
Manter o n8n Atualizado
Atualize o n8n regularmente para receber correções de segurança e novos nós:
npm update -g n8n
systemctl restart n8n
Quando possível, teste em um ambiente de staging antes de atualizar em produção.
Autenticação e Acesso
Em ambientes com múltiplos usuários, ative o modo de autenticação nativa do n8n (disponível a partir da versão 0.227) em vez de depender apenas da autenticação básica do nginx. Isso permite criar usuários individuais com permissões distintas.
Usando Docker em Vez de Instalação Direta
Se você prefere isolar o n8n em container, o Docker é uma alternativa válida. A instalação direta descrita acima tem menos camadas e é mais fácil de depurar quando algo quebra, mas o Docker simplifica atualizações e rollback.
Para instalar com Docker Compose, crie um arquivo docker-compose.yml:
version: '3.8'
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=seudominio.com.br
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://seudominio.com.br/
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=senha_forte_aqui
- N8N_ENCRYPTION_KEY=chave_aleatoria_de_32_caracteres
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Inicie com:
docker compose up -d
O nginx e o certbot ficam fora do container, configurados da mesma forma descrita nos passos anteriores.
Escolhendo o VPS Certo para Rodar o n8n
A qualidade do VPS afeta diretamente a estabilidade das suas automações. Alguns pontos que fazem diferença na prática:
Latência do datacenter: Se seus workflows chamam APIs brasileiras ou processam dados de usuários no Brasil, um VPS com datacenter local reduz a latência de cada chamada HTTP. Em workflows que fazem dezenas de requisições em cadeia, isso acumula de forma perceptível.
NVMe vs. SATA SSD: O banco de dados do n8n faz muitas operações de leitura e escrita. NVMe reduz a latência de I/O de forma mensurável em volumes altos de execução.
Suporte acessível: Quando o VPS trava às 23h no meio de uma automação crítica de cliente, você precisa de suporte que responda de verdade — não de um ticket que vai ser lido no próximo dia útil. Suporte 24/7 via WhatsApp e Telegram, como o disponível nos planos da Napoleon, é exatamente essa diferença.
Uptime garantido: Automações de produção dependem de disponibilidade contínua. Um VPS com garantia de 99,9% de uptime é o mínimo aceitável para workflows que precisam responder a webhooks em tempo real.
Solução de Problemas Comuns
O n8n não inicia após reiniciar o servidor
Verifique se o serviço systemd está habilitado:
systemctl is-enabled n8n
Se retornar disabled, execute systemctl enable n8n e reinicie.
Webhooks retornam 502 Bad Gateway
O nginx está rodando, mas o n8n não. Verifique o status do serviço e os logs:
systemctl status n8n
journalctl -u n8n -n 50
Erro de permissão no arquivo de banco de dados
Confirme que o usuário n8nuser é dono do diretório .n8n:
ls -la /home/n8nuser/
chown -R n8nuser:n8nuser /home/n8nuser/.n8n
Certificado SSL expirado
O certbot renova automaticamente, mas se a renovação falhar, force manualmente:
certbot renew --force-renewal
systemctl reload nginx
FAQs
Qual é a quantidade mínima de RAM para rodar o n8n em produção?
Para uso leve com até 50 workflows e execuções não simultâneas, 2 GB de RAM é o mínimo recomendado. Com 1 GB o n8n inicia, mas você vai enfrentar problemas de memória em workflows que processam payloads grandes ou fazem múltiplas chamadas HTTP em paralelo.
O n8n precisa de um domínio próprio para funcionar em um VPS?
Tecnicamente não, mas na prática sim. Webhooks precisam de uma URL pública estável, e o certificado SSL — necessário para que serviços externos aceitem seus webhooks — exige um domínio. Usar o IP diretamente funciona para testes, mas não para produção.
Qual banco de dados devo usar: SQLite ou PostgreSQL?
SQLite é suficiente para uso individual ou pequenas equipes com volume moderado de execuções. Migre para PostgreSQL quando tiver múltiplos usuários simultâneos, mais de alguns milhares de execuções por dia, ou quando precisar de maior confiabilidade em operações de escrita concorrente.
Posso rodar o n8n no mesmo VPS que outros sites ou aplicações?
Sim. O nginx como proxy reverso permite hospedar múltiplos domínios no mesmo servidor. O n8n fica em um subdomínio (como automacao.seudominio.com.br) enquanto outros sites ficam em outros virtual hosts. Monitore o uso de memória para garantir que as aplicações não competem por recursos.
Como faço backup dos workflows do n8n?
Além do backup do arquivo database.sqlite, o n8n permite exportar workflows individualmente em formato JSON pela interface web (menu de cada workflow > Export). Para backup automatizado de todos os workflows via linha de comando, use n8n export:workflow --all --output=/backup/workflows.json.
O n8n suporta múltiplos usuários com permissões diferentes?
Sim, a partir da versão 0.227 o n8n introduziu gerenciamento nativo de usuários com papéis de owner e member. Para times maiores com necessidade de controle granular, o plano Enterprise do n8n oferece permissões por workflow e por credencial.
Quanto tempo leva para instalar e configurar o n8n em um VPS do zero?
Seguindo este guia com um VPS já provisionado e um domínio apontando para o IP do servidor, o processo completo leva entre 30 e 60 minutos para quem tem familiaridade básica com linha de comando Linux. A maior parte do tempo é aguardar a propagação de DNS para emitir o certificado SSL.
Conclusão
Instalar o n8n em um VPS não é complicado, mas exige atenção a cada camada: processo persistente, proxy reverso, SSL, firewall e backup. Pular qualquer uma dessas etapas cria pontos de falha que aparecem exatamente quando você menos precisa.
Com o setup descrito aqui, você tem uma instância de produção estável, acessível por HTTPS, com reinicialização automática e logs centralizados. A partir daí, o trabalho real começa: construir os workflows que automatizam o que consome tempo dos seus clientes.
Se você ainda está definindo em qual VPS hospedar, veja as opções com datacenter no Brasil e armazenamento NVMe disponíveis em napoleon.com.br — a combinação de latência local e I/O rápido faz diferença concreta para automações que dependem de resposta em tempo real.



