Self-hosted (Auto-hospedado)
Visão Geral
O que é Self-Hosted?
Self-hosted significa que você instala e gerencia o n8n em sua própria infraestrutura – seja um servidor local, VPS, cloud ou Kubernetes.
Principais Vantagens
Controle total - Sua infraestrutura, suas regras
- Integração corporativa - VPNs, LDAP, redes privadas
- Compliance - Dados nunca saem da sua rede
- Personalização - Plugins customizados e extensões
- Custo controlado - Sem cobrança por execução
Requisitos do Sistema
- Node.js: Versão 20.19 a 24.x (para instalação NPM)
- Docker: Versão 20.10+ (recomendado)
- Memória: Mínimo 2GB RAM (4GB+ recomendado)
- Armazenamento: 10GB+ de espaço livre
- Rede: Acesso à internet para downloads
📥 Docker Compose
version: '3.8'
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_PROTOCOL=https
- N8N_HOST=seu-dominio.com
- GENERIC_TIMEZONE=America/Sao_Paulo
- N8N_ENCRYPTION_KEY=sua_chave_32_caracteres
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=SUA_SENHA_SEGURA_AQUI
- REDIS_URL=redis://redis:6379
- EXECUTIONS_PROCESS=main
- EXECUTIONS_MODE=regular
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
- redis
postgres:
image: postgres:13
restart: unless-stopped
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=SUA_SENHA_SEGURA_AQUI
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- redis_data:/data
volumes:
n8n_data:
postgres_data:
redis_data:
Ver comandos para executar os serviços
# iniciar todos os serviços docker
docker-compose up -d
# parar todos os serviços docker
docker-compose down
# ver logs do n8n
docker-compose logs -f n8n
📦 Instalação via NPM
Teste rápido (sem instalar)
npx n8n
Instalação global
1. Instalar o n8n:
npm install n8n -g
2. Executar com configurações:
N8N_PROTOCOL=https \
N8N_HOST=seu-dominio.com \
GENERIC_TIMEZONE=America/Sao_Paulo \
n8n start
n8n requer Node.js versão entre 20.19 e 24.x. Verifique sua versão com
node --version
.🏗️ Configuração de Proxy Reverso
Nginx com SSL
server {
listen 443 ssl;
server_name seu-dominio.com;
ssl_certificate /etc/letsencrypt/live/seu-dominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/seu-dominio.com/privkey.pem;
location / {
proxy_pass http://localhost:5678;
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_set_header X-XSS-Protection "1; mode=block";
}
}
SSL com Certbot (Let's Encrypt)
O Certbot é uma ferramenta automatizada que simplifica significativamente a obtenção e renovação de certificados SSL gratuitos através do Let's Encrypt. Esta abordagem elimina a necessidade de gerenciar certificados manualmente, pois o Certbot configura automaticamente o Nginx e renova os certificados antes da expiração.
Ver comandos do Certbot
# instalar certbot
sudo apt install certbot python3-certbot-nginx
# gerar certificado
sudo certbot --nginx -d seu-dominio.com
# configurar renovação automática
sudo crontab -e
# adicionar linha:
0 12 * * * /usr/bin/certbot renew --quiet
Kubernetes
Ver configuração Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: n8n
spec:
replicas: 1
selector:
matchLabels:
app: n8n
template:
metadata:
labels:
app: n8n
spec:
containers:
- name: n8n
image: docker.n8n.io/n8nio/n8n
ports:
- containerPort: 5678
env:
- name: N8N_PROTOCOL
value: "https"
- name: N8N_HOST
value: "seu-dominio.com"
- name: DB_TYPE
value: "postgresdb"
- name: DB_POSTGRESDB_HOST
value: "postgres-service"
Segurança
A segurança é fundamental em ambientes de produção, pois protege dados sensíveis, credenciais e workflows contra acesso não autorizado. O n8n oferece múltiplas camadas de segurança que incluem autenticação básica, OAuth2, configurações de firewall e restrições de acesso que devem ser configuradas adequadamente para cada ambiente.
Autenticação
Ver configuração de Basic Auth
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=SUA_SENHA_SEGURA_AQUI
Ver configuração de OAuth2
N8N_OAUTH2_ACTIVE=true
N8N_OAUTH2_CLIENT_ID=seu_client_id
N8N_OAUTH2_CLIENT_SECRET=SEU_CLIENT_SECRET_AQUI
N8N_OAUTH2_AUTHORIZATION_URL=https://auth.provider.com/oauth/authorize
N8N_OAUTH2_TOKEN_URL=https://seu-provider.com/oauth/token
Firewall
A configuração de firewall é essencial para controlar o acesso à instância do n8n, permitindo apenas conexões necessárias e bloqueando tentativas de acesso não autorizado. Esta camada adicional de segurança complementa a autenticação, garantindo que apenas IPs autorizados possam acessar a aplicação.
Ver configuração de Firewall
# permitir apenas https
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
sudo ufw deny 5678/tcp
# restringir acesso por ip
sudo ufw allow from 192.168.1.0/24 to any port 5678
Backup e Recuperação
Ver script de backup
#!/bin/bash
BACKUP_DIR="/backup/n8n"
DATE=$(date +%Y%m%d_%H%M%S)
# Backup dos dados
tar -czf $BACKUP_DIR/n8n_data_$DATE.tar.gz /home/node/.n8n
# Backup do banco PostgreSQL
docker exec postgres pg_dump -U n8n n8n > $BACKUP_DIR/n8n_db_$DATE.sql
# Limpar backups antigos (mais de 7 dias)
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
Agendar backup
# adicionar ao crontab para backup diário às 2h
0 2 * * * /path/to/backup-n8n.sh
Mantenha sempre backups regulares dos dados e do banco de dados. Em caso de falha, você pode restaurar rapidamente.
Monitoramento
Ver script de monitoramento
#!/bin/bash
URL="https://seu-dominio.com"
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" $URL)
if [ $RESPONSE -ne 200 ]; then
echo "n8n não está respondendo: $RESPONSE"
docker restart n8n_container
else
echo "n8n está saudável: $RESPONSE"
fi
Atualizações
Docker
# baixar nova imagem docker
docker pull docker.n8n.io/n8nio/n8n
# parar e remover container atual
docker stop n8n_container
docker rm n8n_container
# iniciar com nova imagem
docker run --name n8n_container [suas_opções] docker.n8n.io/n8nio/n8n
NPM
# atualizar para última versão
npm update -g n8n
# instalar versão específica
npm install -g n8n@1.81.0
# instalar versão next
npm install -g n8n@next
Reverter atualização
# instalar versão anterior
npm install -g n8n@1.80.0
# reverter migração do banco
n8n db:revert
Solução de Problemas
Logs
# ver logs do container
docker logs n8n_container
# ver logs em tempo real
docker logs -f n8n_container
# ver logs específicos
docker logs n8n_container | grep ERROR
Verificar status
# verificar se o container está rodando
docker ps | grep n8n
# verificar uso de recursos
docker stats n8n_container
# verificar conectividade
curl -I http://localhost:5678