Hi,
I’m trying to make some workflow that is communicating between my Docker containers. My use case is to send a webhook from my Discourse instance to n8n and trigger some workflow.
In development I connected to the discourse container and tried to execute the curl which results in:
root@forum:/ curl http://n8n:5678/webhook-test/3/webhook/test
{"code":404,"message":"The requested webhook is not registred."}
root@forum:/ curl http://n8n:5678/webhook/3/webhook/test
{"code":404,"message":"The requested webhook is not registred."}
I clicked on Execute Workflow. From my browser, I’m able to enter the route and trigger the webhook.
The same goes for the production Webhook (in active state).

Here is my docker-compose.yml:
version: "3.7"
services:
traefik:
image: traefik
container_name: traefik
restart: always
command:
#- "--log.level=DEBUG"
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --api
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
#- "--certificatesresolvers.mytlschallenge.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "[email protected]"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
- --metrics
- --metrics.influxDB
- "--metrics.influxDB.address=influxdb:8089"
ports:
- "80:80"
- "443:443"
networks:
- web
- internal
volumes:
- "/home/test/traefik/acme.json:/letsencrypt/acme.json"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
n8n:
image: n8nio/n8n
container_name: "n8n"
restart: always
networks:
web:
internal:
volumes:
- /home/test/n8n/.n8n:/root/.n8n
- /var/run/docker.sock:/var/run/docker.sock
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${ID}
- N8N_BASIC_AUTH_PASSWORD=${PW}
- N8N_HOST=n8n.${DOMAIN_NAME}.de
- N8N_PROTOCOL=https
- NODE_ENV=production
- N8N_PORT=5678
- GENERIC_TIMEZONE=Europe/Berlin
- WEBHOOK_TUNNEL_URL=https://n8n.${DOMAIN_NAME}.de/
- VUE_APP_URL_BASE_API=https://n8n.${DOMAIN_NAME}.de/
labels:
- "traefik.enable=true"
- "traefik.http.routers.n8n.rule=Host(`n8n.${DOMAIN_NAME}.de`)"
- "traefik.http.routers.n8n.entrypoints=websecure"
- "traefik.http.routers.n8n.tls=true"
- "traefik.http.routers.n8n.tls.certresolver=mytlschallenge"
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
- "traefik.http.middlewares.n8n.headers.SSLRedirect=true"
- "traefik.http.middlewares.n8n.headers.STSSeconds=315360000"
- "traefik.http.middlewares.n8n.headers.browserXSSFilter=true"
- "traefik.http.middlewares.n8n.headers.contentTypeNosniff=true"
- "traefik.http.middlewares.n8n.headers.forceSTSHeader=true"
- "traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}"
- "traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true"
- "traefik.http.middlewares.n8n.headers.STSPreload=true"
The Discourse Instance is managed in a different file but is reachable for n8n.
Thank you.