Migração 100% grátis na contratação semestral · nossa equipe migra tudo de qualquer provedor · novos clientes Migrar agora
Agente de IA no WhatsApp na API Oficial da Meta · somos Tech Provider aprovado · orçamento sob consulta Pedir orçamento
VPS com OpenClaw pré-instalado · a partir de R$ 56,90/mês · gerenciada pela Rollin Quero a VPS
VPS com Hermes Agent pré-instalado · a partir de R$ 56,90/mês · gerenciada pela Rollin Quero a VPS
Hospedagem com 30 dias de garantia · Não gostou? Devolvemos 100%, sem perguntas. Ver hospedagem

n8n · webhooks públicos

Cómo exponer los webhooks de n8n con HTTPS, autenticación y protección contra spam usando Caddy o Traefik como reverse proxy en producción.

Toda automatización en n8n que recibe datos externos necesita un webhook público con HTTPS, ya sea para EvolutionAPI, el formulario del sitio o un servicio de terceros.

Configuración obligatoria

En el docker-compose.yml, define siempre:

environment:
  N8N_HOST: n8n.exemplo.com
  N8N_PROTOCOL: https
  WEBHOOK_URL: https://n8n.exemplo.com/

La WEBHOOK_URL es lo que n8n usa para generar la URL pública del webhook en los workflows. Sin ella, muestra la IP local y los webhooks no funcionan.

Reverse proxy con Caddy

Caddy ya se encarga del certificado Let’s Encrypt automáticamente:

n8n.exemplo.com {
  reverse_proxy n8n-main:5678

  # Bloquea el editor en la red pública (opcional)
  @editor path / /workflow* /credentials* /executions*
  basicauth @editor {
    admin $2a$14$...hash_bcrypt
  }
}

Autenticación en el webhook

En n8n, cada webhook node permite elegir:

  • None (público): úsalo solo si la URL es lo bastante secreta
  • Basic Auth (usuario + contraseña)
  • Header Auth (validar X-API-Key, por ejemplo)
  • JWT (validar bearer token)

Para EvolutionAPI, lo habitual es None con URL secreta (/webhook/abc-123-supersecreto).

Protección contra spam

Si el webhook queda público (formulario, callback de OAuth):

  1. Rate limiting en Caddy:
    @webhook path /webhook/*
    rate_limit @webhook 30r/m
  2. Cloudflare al frente: el plan gratuito ya bloquea bots conocidos
  3. IF node validando el User-Agent o el origen antes de procesar

Headers útiles

n8n expone en el webhook node:

  • $json.headers: todos los headers de la solicitud
  • $json.query: query string parseada
  • $json.body: cuerpo (JSON o form-data)

Para leer la IP real (detrás de Caddy/Cloudflare), toma $json.headers['x-forwarded-for'] en lugar de x-real-ip.

Próximos pasos

Última actualización: