- Por que uma VPS Brasileira Faz Diferença para o n8n
- O que Você Precisa Antes de Começar
- Passo 1: Conectar na VPS via SSH
- Passo 2: Atualizar o Sistema e Instalar o Docker
- Passo 3: Instalar o n8n com Docker Compose
- Passo 4: Configurar o Nginx como Proxy Reverso
- Passo 5: Ativar SSL com Certbot
- Passo 6: Acessar e Configurar o n8n
- Boas Práticas de Segurança e Manutenção em Produção
- Configurações Avançadas para Fluxos em Produção
- Qual VPS Escolher para o n8n no Brasil
- Perguntas Frequentes
Rodar o n8n localmente funciona para testes. Para produção, não funciona. Você precisa de um servidor sempre disponível, com IP fixo, capaz de receber webhooks a qualquer hora e executar automações sem depender de uma máquina ligada na sua mesa.
Uma VPS resolve isso. Este guia mostra como instalar o n8n com Docker em uma VPS com datacenter no Brasil, configurar o Nginx como proxy reverso, ativar SSL e deixar tudo pronto para produção. Cada passo é direto ao ponto, com os comandos completos.
Por que uma VPS Brasileira Faz Diferença para o n8n
O n8n conecta APIs, webhooks, bancos de dados e dezenas de serviços. A latência entre o servidor e os endpoints que você integra afeta diretamente a velocidade de execução dos fluxos.
Hospedar em um datacenter no Brasil reduz a latência para integrações com APIs nacionais: Mercado Pago, Pix, Bling, RD Station, Omie, entre outras. Um webhook que chega ao servidor em 30ms se comporta de forma muito diferente de um que viaja até a Europa e volta.
Além da latência, há a questão da LGPD. Manter dados de clientes e logs de automação em território nacional simplifica a conformidade. E quando algo quebra às 23h de uma sexta-feira, suporte em português via WhatsApp ou Telegram é muito mais útil do que abrir um ticket em inglês.
Para quem gerencia fluxos de automação de clientes, uma VPS com NVMe SSD também faz diferença no carregamento dos workflows e na execução de múltiplas automações em paralelo. Disco lento é um gargalo real quando você tem dezenas de fluxos ativos.
O que Você Precisa Antes de Começar
Antes de rodar o primeiro comando, confirme que você tem:
- Uma VPS com Ubuntu 22.04 ou 24.04, mínimo de 1 vCPU e 2 GB de RAM
- Acesso root ou sudo via SSH
- Um domínio ou subdomínio apontando para o IP da VPS (ex:
n8n.seudominio.com.br) - O registro DNS tipo A já propagado para o IP da VPS
Para uso pessoal ou poucos fluxos, 2 GB de RAM são suficientes. Se você planeja dar acesso a múltiplos usuários, rodar automações pesadas ou integrar bancos de dados volumosos, considere 4 GB ou mais desde o início. Migrar de plano depois é mais simples do que lidar com travamentos em produção.
Passo 1: Conectar na VPS via SSH
Abra o terminal e conecte com:
ssh root@IP_DA_SUA_VPS
Se o seu usuário não for root:
ssh usuario@IP_DA_SUA_VPS
Após conectar, atualize o índice de pacotes antes de qualquer instalação.
Passo 2: Atualizar o Sistema e Instalar o Docker
apt update && apt upgrade -y
Instale as dependências necessárias:
apt install -y ca-certificates curl gnupg lsb-release
Adicione o repositório oficial do Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
Instale o Docker e o Docker Compose:
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Verifique se tudo foi instalado corretamente:
docker --version
docker compose version
Se ambos os comandos retornarem versão, você está pronto para o próximo passo.
Passo 3: Instalar o n8n com Docker Compose
Crie um diretório dedicado para o projeto:
mkdir -p /opt/n8n && cd /opt/n8n
Crie o arquivo docker-compose.yml:
nano docker-compose.yml
Cole o conteúdo abaixo, substituindo os valores marcados pelos seus dados reais:
version: "3.8"
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.seudominio.com.br
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.seudominio.com.br/
- GENERIC_TIMEZONE=America/Sao_Paulo
- TZ=America/Sao_Paulo
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Salve com Ctrl+O, depois Enter, e feche com Ctrl+X.
Suba o container:
docker compose up -d
Confirme que está rodando:
docker compose ps
O status deve aparecer como running. O n8n está ouvindo na porta 5678, mas apenas no loopback (127.0.0.1), ou seja, não está exposto diretamente à internet. O Nginx vai fazer essa ponte com segurança.
Por que usar `restart: always`
Essa diretiva garante que o container suba automaticamente se a VPS reiniciar ou se o processo Docker for reiniciado. Em produção, isso evita que suas automações parem silenciosamente após uma atualização de kernel ou reinicialização de manutenção.
Passo 4: Configurar o Nginx como Proxy Reverso
Instale o Nginx:
apt install -y nginx
Crie o arquivo de configuração para o seu domínio:
nano /etc/nginx/sites-available/n8n
Cole a configuração abaixo:
server {
listen 80;
server_name n8n.seudominio.com.br;
location / {
proxy_pass http://127.0.0.1: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;
chunked_transfer_encoding on;
proxy_buffering off;
proxy_read_timeout 3600s;
}
}
Salve e feche o arquivo. Ative a configuração:
ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
O comando nginx -t testa a sintaxe antes de recarregar. Se aparecer syntax is ok e test is successful, pode prosseguir.
Por que `proxy_read_timeout 3600s`
Fluxos que aguardam respostas de APIs lentas ou executam tarefas longas podem ultrapassar o timeout padrão do Nginx, que é de 60 segundos. Definir 3600 segundos evita que o proxy encerre conexões ativas no meio de uma execução.
Por que `proxy_buffering off`
O n8n usa Server-Sent Events para atualizar a interface em tempo real. Com buffering ativo, o Nginx acumula os dados antes de enviá-los ao cliente, o que quebra o acompanhamento ao vivo dos fluxos. Desativar mantém a comunicação fluindo corretamente.
Passo 5: Ativar SSL com Certbot
Sem SSL, o n8n não funciona corretamente em produção. Muitas APIs recusam webhooks de URLs sem HTTPS, e o próprio n8n exige protocolo seguro para algumas funcionalidades.
Instale o Certbot:
apt install -y certbot python3-certbot-nginx
Gere e instale o certificado:
certbot --nginx -d n8n.seudominio.com.br
O Certbot vai solicitar um e-mail, pedir que você aceite os termos e, em seguida, modificar automaticamente o arquivo do Nginx para incluir os blocos SSL. Ele também configura a renovação automática via systemd ou cron.
Verifique se a renovação automática está ativa:
certbot renew --dry-run
Se o comando retornar sem erros, o certificado vai se renovar automaticamente antes de expirar.
Passo 6: Acessar e Configurar o n8n
Abra o navegador e acesse https://n8n.seudominio.com.br. Na primeira vez, o n8n vai pedir que você crie um usuário administrador com e-mail e senha.
Após o login, você está na interface principal. Algumas configurações que vale fazer imediatamente:
Fuso horário: Confirme que está como America/Sao_Paulo. Já definimos isso no docker-compose.yml, mas vale checar em Settings > General.
Credenciais: Armazene tokens e chaves de API dentro do gerenciador de credenciais do próprio n8n, não como variáveis de texto nos nós dos fluxos.
Webhook URL: Verifique em Settings > n8n que a URL base está como https://n8n.seudominio.com.br. Isso garante que os webhooks gerados automaticamente usem o endereço correto.
Boas Práticas de Segurança e Manutenção em Produção
Colocar o n8n no ar é metade do trabalho. Manter ele seguro e funcionando ao longo do tempo é a outra metade.
Restrinja o acesso SSH
Desative o login por senha e use apenas chaves SSH:
nano /etc/ssh/sshd_config
Altere ou adicione:
PasswordAuthentication no
PermitRootLogin prohibit-password
Reinicie o SSH:
systemctl restart sshd
Configure o firewall
Permita apenas as portas necessárias:
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
Isso bloqueia tráfego direto para a porta 5678 do n8n, que só deve ser acessada via Nginx.
Monitore os logs do container
docker compose logs -f n8n
Esse comando mostra os logs em tempo real — útil para diagnosticar fluxos que falham silenciosamente ou erros de autenticação com APIs.
Atualize o n8n com segurança
Para atualizar para a versão mais recente:
cd /opt/n8n
docker compose pull
docker compose up -d
O Docker baixa a nova imagem e recria o container. Os dados ficam preservados no volume n8n_data.
Backups do volume de dados
Os fluxos, credenciais e configurações do n8n ficam em /opt/n8n e no volume Docker. Faça backup regularmente:
docker run --rm -v n8n_data:/data -v $(pwd):/backup ubuntu tar czf /backup/n8n_backup_$(date +%Y%m%d).tar.gz /data
Armazene os backups em um local separado da VPS, como um bucket de armazenamento ou outra máquina.
Configurações Avançadas para Fluxos em Produção
Variáveis de ambiente adicionais úteis
Você pode estender o docker-compose.yml com variáveis que controlam o comportamento do n8n em produção:
environment:
- N8N_HOST=n8n.seudominio.com.br
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.seudominio.com.br/
- GENERIC_TIMEZONE=America/Sao_Paulo
- TZ=America/Sao_Paulo
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=seu_usuario
- N8N_BASIC_AUTH_PASSWORD=sua_senha_forte
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
N8N_BASIC_AUTH_ACTIVE adiciona uma camada extra de autenticação antes da tela de login. EXECUTIONS_DATA_PRUNE e EXECUTIONS_DATA_MAX_AGE controlam a limpeza automática do histórico de execuções, evitando que o banco de dados interno cresça indefinidamente.
Usando PostgreSQL em vez do SQLite
Por padrão, o n8n usa SQLite para armazenar dados de execução. Para produção com alto volume de fluxos, PostgreSQL é mais adequado. Adicione ao docker-compose.yml:
services:
postgres:
image: postgres:15
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=senha_segura
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
n8n:
image: n8nio/n8n:latest
restart: always
depends_on:
- postgres
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.seudominio.com.br
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.seudominio.com.br/
- GENERIC_TIMEZONE=America/Sao_Paulo
- TZ=America/Sao_Paulo
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=senha_segura
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
postgres_data:
Com PostgreSQL, você ganha melhor performance em consultas, suporte a backups mais granulares e maior estabilidade sob carga.
Qual VPS Escolher para o n8n no Brasil
A escolha da VPS afeta diretamente a estabilidade das suas automações. Alguns critérios práticos:
RAM mínima: 2 GB para uso individual com poucos fluxos. 4 GB se você for rodar PostgreSQL no mesmo servidor ou tiver múltiplos usuários acessando o n8n simultaneamente.
Armazenamento: NVMe SSD faz diferença real. O n8n lê e escreve com frequência no banco de dados de execuções, e disco lento cria gargalos que aparecem como lentidão nos fluxos.
Datacenter no Brasil: Reduz latência para APIs nacionais e simplifica a conformidade com a LGPD.
Suporte: Quando um container não sobe às 2h da manhã e você tem automações de clientes paradas, suporte disponível via WhatsApp ou Telegram em português vale mais do que qualquer desconto.
A Napoleon oferece VPS com armazenamento NVMe, datacenter no Brasil e suporte 24/7 via WhatsApp e Telegram. Para quem gerencia fluxos de automação de clientes, essa combinação de infraestrutura local com suporte acessível é um critério relevante na escolha do provedor.
Perguntas Frequentes
Quanto de RAM eu preciso para rodar o n8n em produção?
Para uso individual com até 20 fluxos ativos, 2 GB são suficientes. Se você adicionar PostgreSQL ao mesmo servidor ou tiver múltiplos usuários, comece com 4 GB. O n8n em si não é pesado, mas o banco de dados e os processos paralelos somam consumo.
Preciso de um domínio para usar o n8n em produção?
Tecnicamente não, mas na prática sim. Muitas APIs e serviços de webhook recusam URLs com IP direto ou sem HTTPS. Um subdomínio como n8n.seudominio.com.br com certificado SSL é o mínimo para funcionar de forma confiável com integrações externas.
O n8n fica disponível 24 horas com essa configuração?
Sim, desde que a VPS esteja no ar. A diretiva restart: always no Docker Compose garante que o container reinicie automaticamente após qualquer reinicialização da VPS. A disponibilidade depende do uptime do provedor de hospedagem.
Como faço backup dos meus fluxos e credenciais?
Os dados ficam no volume Docker n8n_data. Você pode exportar fluxos individualmente pela interface do n8n em formato JSON, ou fazer backup completo do volume com o comando docker run mostrado na seção de manutenção. Armazene os backups fora da própria VPS.
Posso rodar o n8n no mesmo servidor que outros sites?
Sim. O Nginx suporta múltiplos server_name no mesmo servidor. Cada domínio ou subdomínio pode ter seu próprio bloco de configuração, e o n8n vai ocupar a porta 5678 internamente sem conflito com os demais.
Qual a diferença entre SQLite e PostgreSQL para o n8n?
SQLite é o padrão e funciona bem para uso individual com volume moderado de execuções. PostgreSQL é mais adequado quando você tem muitos fluxos rodando em paralelo, histórico de execuções volumoso, ou precisa de backups mais granulares. A troca exige reconfigurar o docker-compose.yml e não migra dados automaticamente.
O n8n com Docker é difícil de atualizar?
Não. O processo se resume a três comandos: docker compose pull para baixar a nova imagem, docker compose up -d para recriar o container com a nova versão, e docker compose ps para confirmar que está rodando. Os dados ficam preservados no volume e não são afetados pela atualização da imagem.
Com o n8n rodando em uma VPS no Brasil, suas automações ficam disponíveis continuamente, com latência baixa para APIs nacionais e sem depender de uma máquina local. O conjunto Docker, Nginx e Certbot descrito aqui é uma base sólida para produção. O próximo passo é construir os fluxos.



