I am experiencing a critical issue with n8n v2.2.4 self-hosted using PM2 and PostgreSQL. Webhooks are consistently returning a 404 Not Found with the message: {"message":"The requested webhook \"GET [path]\" is not registered."}
This happens even when the workflow is marked as Active in the UI and the logs show Activated workflow.
The “Bug” Pattern
-
GUI “Active” but Network 404: The workflow shows as active in the Editor, but the Task Broker does not seem to have registered the route.
-
API/CLI Fails to Fix: Sending an activation request via the n8n API (
/active) or using the n8n CLI does nothing. It returns success, but the webhook remains unreachable. -
Manual Intervention Required: The only way to make the webhook reachable is to manually open the GUI, change a node or the webhook path, and click “Republish” or toggle the “Active” switch off and back on.
-
Race Condition: This usually triggers after a
pm2 restart. It seems the Main Process starts and assumes the workflow is active (based on Postgres), but the Task Broker (Internal Port 5679) hasn’t fully initialized and misses the registration signal.
Technical Environment
-
n8n Version: 2.2.4
-
Deployment: PM2 (running on Ubuntu)
-
Database: PostgreSQL
-
Runner Mode:
internal -
Proxy: Nginx (Proxy Hops: 1)
Relevant Logs
Despite the 404 error, the startup logs look perfect:
Plaintext
n8n | n8n Task Broker ready on 127.0.0.1, port 5679
n8n | Version: 2.2.4
n8n | Activated workflow "main-flow-120" (ID: kfOAtWIfKK75Vg1I)
But immediately followed by:
Plaintext
n8n | Received request for unknown webhook: The requested webhook "GET main-flow-120" is not registered.
Question for the Community
Is there a known issue in v2.2.4 where the Task Broker fails to sync with the Database state on startup?
More importantly, how can I force a “Republish” event via the API or CLI? Currently, the API ignores activation requests if the DB already says active: true, leaving the workflow in a “zombie” state where the UI says it’s running but the networking layer is dead.