Setup
- n8n v2.7.5 running in Docker behind Traefik v2.10 on Hostinger VPS (KVM 2, Ubuntu 24.04)
- PostgreSQL 16 database
- HTTPS via Let’s Encrypt
- No rate limiting on Traefik, no rate limiting on n8n (N8N_CONCURRENCY_PRODUCTION_LIMIT=-1)
- Hostinger managed firewall: 0 rules configured
- No OS-level firewall (UFW/iptables)
Problem
- WhatsApp Trigger activation fails intermittently with:
(#2200) Callback verification failed with the following errors: curl_errno = 56; curl_error = CONNECT tunnel failed, response 429; HTTP Status Code = 429; HTTP Message = Too Many Requests
- When activation succeeds (usually on 2nd or 3rd attempt), incoming WhatsApp messages do NOT trigger workflow executions.
Investigation & Proof
I checked both n8n and Traefik logs to trace what happens.
n8n logs (docker logs n8n --tail 30):
- No mention of 429, Meta, or any webhook-related errors
- n8n never sees the failed requests — they don’t reach the application
Traefik logs during failed activation:
- No incoming request from Meta appears at all. Only my own browser requests (129.0.76.*) and healthchecks.
Traefik logs during successful activation (2nd attempt):
- Meta’s verification GET request appears and succeeds:
172.19.0.1 - GET /webhook/[REDACTED]?hub.mode=subscribe&hub.challenge=[REDACTED]&hub.verify_token=[REDACTED] HTTP/1.1 200 9 - 54ms
Traefik logs after sending 3 WhatsApp messages (with workflow active):
- ZERO webhook POST requests from Meta. Only healthchecks and my own browser polling for executions:
129.0.76.* - GET /rest/executions?filter=... HTTP/2.0 304
129.0.76.* - GET /healthz HTTP/2.0 200
129.0.76.* - GET /rest/executions?filter=... HTTP/2.0 304
129.0.76.* - GET /healthz HTTP/2.0 200
...(repeats with no Meta POST requests anywhere)
No execution was recorded in n8n despite messages being delivered (double blue ticks on WhatsApp).
Conclusion
Meta’s webhook POST requests are being blocked before they reach Traefik. Since Traefik has no rate limiting, n8n has no rate limiting, the OS has no firewall, and the Hostinger managed firewall has 0 rules — the only remaining layer is Hostinger’s own network infrastructure (DDoS protection or proxy layer).
This is NOT an n8n bug. Another user confirmed the same setup works perfectly on n8n Cloud with the same workflow. Multiple users on Hostinger VPS are experiencing this exact issue.
What I’ve already tried
- Migrated from SQLite to PostgreSQL 16
- Set N8N_DIAGNOSTICS_ENABLED=false, N8N_METRICS=false
- Set N8N_CONCURRENCY_PRODUCTION_LIMIT=-1
- Added Traefik forwarding timeout configurations
- Added forwardedHeaders.insecure to Traefik entrypoint
- Verified Hostinger managed firewall has 0 rules
- Confirmed no UFW or iptables blocking
Environment
- n8n version: 2.7.5
- Database: PostgreSQL 16
- Running via: Docker Compose behind Traefik v2.10
- Hosting: Hostinger VPS KVM 2, Ubuntu 24.04
- OS: Alpine Linux (inside Docker)
Has anyone on Hostinger found a workaround? I’m contacting Hostinger support and considering Cloudflare as a proxy layer.
