Pular para o conteúdo principal

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.