Variáveis de Ambiente
Este documento explica como configurar variáveis de ambiente para n8n em diferentes contextos de deployment, abordando variáveis essenciais de produção, configuração de segurança, otimização de performance, separação entre ambientes (dev/staging/prod), e gerenciamento seguro de credenciais através de environment variables que facilitam deployment automatizado e configuração flexível sem hardcoding.
Configuração Básica
Gerar Chave de Criptografia
# Gerar chave de criptografia forte
node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
Variáveis Essenciais
# Configurações básicas
N8N_PROTOCOL=https
N8N_HOST=seudominio.com
GENERIC_TIMEZONE=America/Sao_Paulo
WEBHOOK_URL=https://seudominio.com/
# Banco de dados
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}
# Redis
REDIS_URL=redis://redis:6379
# Segurança
N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
# Performance
EXECUTIONS_PROCESS=main
EXECUTIONS_MODE=regular
EXECUTIONS_TIMEOUT=300000
# Logs
N8N_LOG_LEVEL=info
N8N_LOG_FORMAT=json
Gerenciamento de Credenciais
Variáveis Sensíveis
# Chave de criptografia (obrigatória)
N8N_ENCRYPTION_KEY=chave-criptografia-forte
# Senhas de banco de dados
DB_POSTGRESDB_PASSWORD=SUA_SENHA_FORTE_AQUI_banco
N8N_BASIC_AUTH_PASSWORD=SUA_SENHA_ADMIN_AQUI
# Chaves de API
N8N_API_KEY=chave_api_segura
Docker Compose com Secrets
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
ports:
- "5678:5678"
environment:
# Configurações básicas
- N8N_PROTOCOL=https
- N8N_HOST=seudominio.com
- GENERIC_TIMEZONE=America/Sao_Paulo
# Banco de dados
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}
# Redis
- REDIS_URL=redis://redis:6379
# Segurança
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
# Performance
- EXECUTIONS_PROCESS=main
- EXECUTIONS_MODE=regular
- EXECUTIONS_TIMEOUT=300000
# Logs
- N8N_LOG_LEVEL=info
- N8N_LOG_FORMAT=json
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
- redis
postgres:
image: postgres:15
restart: unless-stopped
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- redis_data:/data
volumes:
n8n_data:
postgres_data:
redis_data:
Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: n8n
spec:
replicas: 3
selector:
matchLabels:
app: n8n
template:
metadata:
labels:
app: n8n
spec:
containers:
- name: n8n
image: n8nio/n8n:latest
ports:
- containerPort: 5678
env:
- name: N8N_PROTOCOL
value: "https"
- name: N8N_HOST
value: "seudominio.com"
- name: GENERIC_TIMEZONE
value: "America/Sao_Paulo"
- name: DB_TYPE
value: "postgresdb"
- name: DB_POSTGRESDB_HOST
value: "postgres-service"
- name: DB_POSTGRESDB_DATABASE
value: "n8n"
- name: DB_POSTGRESDB_USER
valueFrom:
secretKeyRef:
name: n8n-secrets
key: db-user
- name: DB_POSTGRESDB_PASSWORD
valueFrom:
secretKeyRef:
name: n8n-secrets
key: db-password
- name: N8N_ENCRYPTION_KEY
valueFrom:
secretKeyRef:
name: n8n-secrets
key: encryption-key
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "2Gi"
cpu: "1000m"
Ambientes Separados
Desenvolvimento
# .env.development
N8N_PROTOCOL=http
N8N_HOST=localhost
GENERIC_TIMEZONE=America/Sao_Paulo
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_DATABASE=n8n_dev
N8N_LOG_LEVEL=debug
N8N_LOG_FORMAT=simple
Staging
# .env.staging
N8N_PROTOCOL=https
N8N_HOST=staging.seudominio.com
GENERIC_TIMEZONE=America/Sao_Paulo
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=staging-postgres
DB_POSTGRESDB_DATABASE=n8n_staging
N8N_LOG_LEVEL=info
N8N_LOG_FORMAT=json
Produção
# .env.production
N8N_PROTOCOL=https
N8N_HOST=seudominio.com
GENERIC_TIMEZONE=America/Sao_Paulo
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=production-postgres
DB_POSTGRESDB_DATABASE=n8n_prod
N8N_LOG_LEVEL=warn
N8N_LOG_FORMAT=json
EXECUTIONS_PROCESS=worker
REDIS_URL=redis://redis:6379
Checklist de Configuração
Segurança
- Chave de criptografia forte configurada
- Senhas seguras definidas
- Autenticação básica ativada
- HTTPS configurado
Performance
- Timeouts configurados adequadamente
- Processo de execução definido
- Redis configurado (se necessário)
- Logs estruturados
Monitoramento
- Nível de log apropriado
- Formato de log configurado
- Métricas habilitadas
- Alertas configurados
Dica Pro
Use arquivos .env separados para diferentes ambientes e nunca commite credenciais no controle de versão. Use secrets managers em produção.
Importante
Sempre teste as variáveis de ambiente em desenvolvimento antes de aplicar em produção. A chave de criptografia é obrigatória e não pode ser alterada após a primeira configuração.