Skip to Content

Variables de Entorno en n8n: Gestión de Configuración

RUTA E · Agentes y Automatización · Lección 3 de 16

Las variables de entorno son el método estándar para configurar aplicaciones en entornos de producción. Permiten separar la configuración del código y gestionar parámetros sensibles como credenciales de forma segura. En n8n, su uso es crucial para la flexibilidad, seguridad y escalabilidad.

Variables de Entorno en n8n: Gestión de Configuración

Fundamento de las Variables de Entorno en n8n

n8n, como muchas aplicaciones modernas, utiliza variables de entorno para definir su comportamiento y acceder a recursos externos. Esto incluye desde el puerto de escucha y la conexión a la base de datos hasta las credenciales de servicios externos y configuraciones específicas del modo de operación. El principio es que la aplicación no debe tener valores sensibles o específicos del entorno codificados directamente en su configuración o código fuente.

La ventaja principal es la portabilidad. Un mismo despliegue de n8n puede funcionar en diferentes entornos (desarrollo, pruebas, producción) simplemente cambiando las variables de entorno sin modificar el binario o la imagen del contenedor. Esto es fundamental para la automatización del despliegue y la consistencia entre entornos.

Configuración de n8n mediante Variables de Entorno

n8n expone una amplia gama de parámetros configurables a través de variables de entorno. Estas se suelen prefijar con N8N_. La documentación oficial de n8n es la fuente definitiva para conocer todas las variables disponibles y su propósito. A continuación, se presentan algunas de las más comunes y críticas en un entorno de producción:

  • N8N_HOST: Define el nombre de host o IP donde n8n es accesible. Importante para la generación de URLs correctas en webhooks.
  • N8N_PORT: Puerto en el que n8n escuchará las conexiones entrantes (por defecto, 5678).
  • N8N_PROTOCOL: Protocolo utilizado (http o https). Esencial cuando n8n está detrás de un proxy inverso que maneja SSL.
  • DB_TYPE, DB_POSTGRES_HOST, DB_POSTGRES_PORT, DB_POSTGRES_DATABASE, DB_POSTGRES_USER, DB_POSTGRES_PASSWORD: Configuración para la conexión a la base de datos PostgreSQL. Estas son críticas y deben gestionarse con seguridad.
  • N8N_BASIC_AUTH_ACTIVE, N8N_BASIC_AUTH_USER, N8N_BASIC_AUTH_PASSWORD: Para habilitar y configurar la autenticación básica en la interfaz de n8n (aunque se recomienda usar un proxy inverso para esto).
  • N8N_ENCRYPTION_KEY: Clave de cifrado para credenciales. Es fundamental que esta clave sea estable y persistente. Su pérdida o cambio invalida todas las credenciales cifradas.
  • N8N_QUEUE_HEALTH_CHECK_ACTIVE, N8N_QUEUE_BULL_REDIS_HOST, etc.: Variables para configurar el modo de cola (Queue Mode) con Redis.
  • WEBHOOK_URL: URL base que n8n utilizará para generar URLs de webhooks. Crucial si n8n está detrás de un balanceador de carga o proxy inverso.
REGLA DEL OFICIO

Nunca codifique credenciales directamente en archivos de configuración o scripts de despliegue. Utilice variables de entorno inyectadas de forma segura por el orquestador (Docker Compose, Kubernetes, etc.) o el sistema de CI/CD.

Gestión de Credenciales y Secretos

Las variables de entorno son el vector principal para inyectar credenciales y otros secretos en n8n. Sin embargo, no basta con definirlas; es crucial cómo se gestionan y protegen estas variables en el entorno de ejecución. Para entornos de producción, se recomienda encarecidamente el uso de un sistema de gestión de secretos.

  • HashiCorp Vault: Solución robusta para almacenar, acceder y auditar secretos. Se integra bien con orquestadores como Kubernetes.
  • AWS Secrets Manager / Azure Key Vault / Google Secret Manager: Servicios de nube que ofrecen gestión centralizada de secretos, rotación automática y control de acceso granular.
  • Variables de entorno en orquestadores: Docker Swarm, Kubernetes y otros orquestadores permiten definir secretos que se inyectan como variables de entorno en los contenedores de forma segura, sin exponerlos en la configuración del despliegue.

La clave N8N_ENCRYPTION_KEY es particularmente sensible. n8n la utiliza para cifrar las credenciales de servicios externos que se configuran en la interfaz. Si esta clave cambia o se pierde, todas las credenciales almacenadas se vuelven inaccesibles y deben reintroducirse. Debe ser una cadena aleatoria y compleja, y gestionarse como un secreto de alta prioridad.

Prioridad de Carga y Persistencia

n8n carga su configuración en un orden específico. Generalmente, las variables de entorno tienen la mayor prioridad, sobrescribiendo los valores predeterminados o los especificados en archivos de configuración (como .env si se usan localmente). En un despliegue de producción, esto significa que las variables de entorno definidas por el orquestador o el sistema de despliegue serán las que n8n utilice.

Para asegurar la persistencia de la configuración entre reinicios o actualizaciones, las variables de entorno deben ser parte de la definición del despliegue (por ejemplo, en un archivo docker-compose.yml, una definición de Pod en Kubernetes, o un script de inicio de sistema). Evite configurar variables de entorno manualmente en el servidor, ya que esto no es reproducible ni escalable.

version: '3.8'
services:
  n8n:
    image: n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n.ejemplo.com
      - N8N_PROTOCOL=https
      - N8N_PORT=443
      - DB_TYPE=postgresdb
      - DB_POSTGRES_HOST=db.ejemplo.com
      - DB_POSTGRES_DATABASE=n8n_prod
      - DB_POSTGRES_USER=n8nuser
      - DB_POSTGRES_PASSWORD=${DB_N8N_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_MASTER_KEY}
      - WEBHOOK_URL=https://n8n.ejemplo.com/
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:

En el ejemplo de docker-compose.yml, ${DB_N8N_PASSWORD} y ${N8N_MASTER_KEY} son variables que Docker Compose resolverá del entorno donde se ejecuta, o de un archivo .env local. Esto permite que el archivo de configuración sea genérico y los secretos se inyecten dinámicamente.

Aplicación Práctica: Configuración Segura de n8n

Para asegurar un despliegue robusto y seguro de n8n, siga estos pasos al configurar las variables de entorno:

  1. Identifique todas las variables necesarias: Revise la documentación de n8n y su configuración actual para listar todas las variables de entorno que su instancia de n8n requiere (base de datos, host, puerto, claves de cifrado, etc.).
  2. Separe secretos de configuración no sensible: Determine qué variables son secretos (credenciales de DB, claves de cifrado) y cuáles son configuración general (host, puerto).
  3. Utilice un gestor de secretos: Implemente HashiCorp Vault, AWS Secrets Manager o el sistema de secretos de su orquestador (Docker Secrets, Kubernetes Secrets) para almacenar y rotar las variables sensibles.
  4. Defina las variables en su despliegue: Incorpore las variables de entorno en su archivo de definición de despliegue (docker-compose.yml, manifiesto de Kubernetes, etc.). Asegúrese de que los secretos se inyecten de forma segura desde el gestor de secretos.
  5. Proteja N8N_ENCRYPTION_KEY: Genere una clave de cifrado fuerte y almacénela de forma segura en su gestor de secretos. Esta clave debe ser persistente y no cambiar entre actualizaciones o reinicios.
  6. Valide la configuración: Después del despliegue, verifique que n8n se inicie correctamente y que todas las integraciones funcionen, lo que indica que las variables de entorno se cargaron y aplicaron correctamente.

Rating
0 0

There are no comments for now.

to be the first to leave a comment.