Workflow not getting triggered even after being in active state, Docker setup

Hi community,

I’m running n8n 1.111.0 self-hosted on an AWS EC2 instance with Postgres as the database (via Docker).

The issue

When I create a workflow (either via UI or API) and mark it as active:

It appears active in the UI.

But when I hit the production webhook URL, I always get:

{
“code”: 404,
“message”: “The requested webhook "POST " is not registered.”
}

What I tried

On my local Docker setup, everything works fine (workflows register, webhooks trigger).

On EC2, no workflow (UI-created or API-created) ever registers.

Tried with both API key and session cookie for API requests.

Env vars include:

N8N_USER_MANAGEMENT_DISABLED=false

N8N_SECURE_COOKIE=false

NODE_ENV=production

Question

Why would workflows show as active but never actually register webhooks in runtime?

Could this be related to environment variables, queue mode, or something else?

Hey, can you post your full list of env variables?

Hey, sure @krisn0x
Sharing the entire docker file with you.
version: “3.8”

services:

postgres:

image: postgres:14

restart: unless-stopped

environment:

  - POSTGRES_USER=n8n

  - POSTGRES_PASSWORD=n8n

volumes:

  - postgres_data:/var/lib/postgresql/data

  - ./init.sql:/docker-entrypoint-initdb.d/init.sql

ports:

  - "5432:5432"

networks:

  - internal

n8n-dev:

image: n8nio/n8n:1.111.0

restart: unless-stopped

environment:

  - DB_TYPE=postgresdb

  - DB_POSTGRESDB_HOST=postgres

  - DB_POSTGRESDB_PORT=5432

  - DB_POSTGRESDB_DATABASE=n8n_dev

  - DB_POSTGRESDB_USER=n8n

  - DB_POSTGRESDB_PASSWORD=n8n

  - N8N_BASIC_AUTH_ACTIVE=true

  - N8N_BASIC_AUTH_USER=dev

  - N8N_BASIC_AUTH_PASSWORD=dev123

  - N8N_HOST=0.0.0.0

  - N8N_PORT=5678

  - N8N_PROTOCOL=http

  - WEBHOOK_URL=http://dev.n8n.local:5678/

  - N8N_SECURE_COOKIE=false

  - N8N_USER_MANAGEMENT_DISABLED=true   # 👈 disables teams/users, makes API mode work like local

  - N8N_API_KEY=supersecretapikey       # 👈 backend uses this to create/activate workflows

ports:

  - "5678:5678"

depends_on:

  - postgres

networks:

  - internal

n8n-prod:

image: n8nio/n8n:1.111.0

restart: unless-stopped

environment:

  - DB_TYPE=postgresdb

  - DB_POSTGRESDB_HOST=postgres

  - DB_POSTGRESDB_PORT=5432

  - DB_POSTGRESDB_DATABASE=n8n_prod

  - DB_POSTGRESDB_USER=n8n

  - DB_POSTGRESDB_PASSWORD=n8n

  - N8N_BASIC_AUTH_ACTIVE=true

  - N8N_BASIC_AUTH_USER=admin

  - N8N_BASIC_AUTH_PASSWORD=admin123

  - N8N_HOST=0.0.0.0

  - N8N_PORT=5679

  - N8N_PROTOCOL=http

  - WEBHOOK_URL=http://prod.n8n.local:5679/

  - N8N_SECURE_COOKIE=false

  - N8N_USER_MANAGEMENT_DISABLED=true   # 👈 same here

  - N8N_API_KEY=anothersecretapikey     # 👈 separate prod key

ports:

  - "5679:5679"

depends_on:

  - postgres

networks:

  - internal

volumes:

postgres_data:

networks:

internal:

driver: bridge

Also @krisn0x sharing one more important thing.
If I go to the UI of my n8n docker instance, do some really small changes in the workflow which I have created via API, after that the production url starts working.
It feels like the active value is being updated in db thus I am seeing that in UI, but at some place it is being missed when I trigger the API from postman/backend service.

Thank you, that was key. There is an open issue for this being tracked:

Please drop a comment there.

There’s also a PR in the works it seems:

Not sure if this affects everyone or not, will have to test myself (tomorrow) and report back.

For now, I will appreciate if you mark this as Solution, it will not close the thread.

Hey, just checking with one more idea: if you haven’t checked, can you please ensure all workers are on the same version as your main instance and redeploy them if not?

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.