Skip to content

aitorroma/n8n-webhook-cf

Repository files navigation

n8n-webhook-cf

Worker de Cloudflare para actuar como proxy de n8n.

¿Por qué necesitas esto?

Este servicio te permite:

  • Proteger tu instancia de n8n contra ataques DDoS
  • Ocultar tu instancia de n8n al público
  • Añadir limitación de tasa (rate limiting)
  • Implementar deduplicación de peticiones
  • Gestionar peticiones mediante colas (queues)
  • Configurar mecanismos de reintentos automáticos

Requisitos:

  • Plan de Cloudflare Workers (Recomendado: Workers Paid):
    • Para un funcionamiento óptimo y fiable de este worker en producción, especialmente si utilizas las funcionalidades de deduplicación (KV Namespaces) y colas de mensajes (Cloudflare Queues para DLQ), se recomienda encarecidamente el plan Workers Paid de Cloudflare (actualmente desde 5 USD/mes).
    • El plan gratuito tiene limitaciones en tiempo de CPU, número de KV Namespaces, y la robustez de las Queues que podrían afectar el rendimiento y la disponibilidad de estas características.
    • Puedes gestionar tu plan de Workers navegando a tu cuenta de Cloudflare, y luego a la sección "Workers & Pages" > "Planes" (o "Compute" > "Workers" > "Planes" según la interfaz de tu dashboard).
  • Un dominio en Cloudflare.

Arquitectura:

Petición del cliente -> Cloudflare Worker -> n8n

Despliega tu servicio

Opción 1: Despliegue automatizado con script (Recomendado)

El proyecto incluye un script de despliegue automatizado que facilita todo el proceso:

./deploy.sh

Este script te guiará a través de los siguientes pasos:

  1. Verificación de requisitos: Comprueba que tienes instaladas todas las dependencias necesarias (jq, pnpm).
  2. Configuración del entorno: Te permite elegir entre desplegar en producción o desarrollo.
  3. Configuración del dominio: Configura automáticamente las rutas en wrangler.toml para tu dominio personalizado.
  4. Configuración de la URL de n8n: Establece la URL de tu instancia n8n a la que se reenviarán las peticiones.
  5. Gestión de KV Namespaces: Crea o verifica el KV Namespace necesario para la deduplicación.
  6. Gestión de Queues: Crea o verifica las colas necesarias para el procesamiento de mensajes.
  7. Despliegue: Despliega el worker a Cloudflare con la configuración establecida.

Ventajas del script de despliegue:

  • Manejo robusto de errores
  • Configuración automática de dominios personalizados sin comodines (compatible con Cloudflare)
  • Creación y verificación automática de recursos (KV Namespaces, Queues)
  • Backups automáticos de la configuración antes de cada modificación

Opción 2: Despliegue manual

Si prefieres desplegar manualmente, asegúrate de configurar correctamente el archivo wrangler.toml y ejecuta:

wrangler deploy -e production

Asegúrate de que las rutas (routes) en tu wrangler.toml estén correctamente configuradas para apuntar a tu dominio. Importante: Para dominios personalizados, no uses comodines ni rutas específicas como /webhook/* ya que Cloudflare no los permite en dominios personalizados.

¿Cómo probar en local?

Puedes ejecutar el worker localmente para pruebas usando:

wrangler dev

Esto iniciará un servidor local que simula el entorno de Cloudflare Workers. Necesitarás configurar las variables de entorno y bindings necesarios en tu wrangler.toml para el entorno de desarrollo si difieren de los de producción, o usar variables de entorno locales.

Variables de Entorno (en wrangler.toml)

  • ENVIRONMENT: Define el entorno (ej. "dev", "production").
  • PROXY_DOMAIN: La URL base de tu instancia de n8n a la que el worker reenviará las peticiones.
  • DEDUPLICATION_ENABLED: true o false para habilitar/deshabilitar la deduplicación.
  • DEDUPLICATION_TTL: (Opcional) Tiempo en segundos para la expiración de las claves de deduplicación. Por defecto 60.
  • RATE_LIMITING_ENABLED: true o false para habilitar/deshabilitar la limitación de tasa.

Endpoints

El worker expone principalmente dos tipos de endpoints basados en las rutas configuradas en wrangler.toml:

  • /webhook/*: Endpoint principal para recibir webhooks y reenviarlos a n8n. Este endpoint utiliza la cola y puede tener deduplicación y limitación de tasa si están habilitadas.
  • /webhook-test/*: Endpoint para pruebas directas sin pasar por la cola. Útil para verificar la conectividad y la lógica del proxy directamente.

Ambos endpoints soportan los métodos HTTP: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD.

About

Worker de Cloudflare para actuar como proxy de n8n

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published