Issues with Queue Mode setup

Describe the problem/error/question

I’m having trouble getting the main worker in a distributed queue mode setup working correctly. My main process has the following environment variables:

    DB_POSTGRESDB_USER:
      valueFrom:
        secretKeyRef:
          name: n8n
          key: DATABASE_USERNAME
    DB_POSTGRESDB_HOST:
      valueFrom:
        secretKeyRef:
          name: n8n
          key: DATABASE_WRITER_ENDPOINT
    DB_POSTGRESDB_PASSWORD:
      valueFrom:
        secretKeyRef:
          name: n8n
          key: DATABASE_PASSWORD
    N8N_ENCRYPTION_KEY: 
      valueFrom:
        secretKeyRef:
          name: n8n
          key: N8N_ENCRYPTION_KEY
    # Enables "queue mode"
    EXECUTIONS_MODE:
      value: queue
    QUEUE_BULL_REDIS_HOST:
      valueFrom:
        secretKeyRef:
          name: n8n
          key: REDIS_ENDPOINT
    QUEUE_BULL_REDIS_PASSWORD:
      valueFrom:
        secretKeyRef:
          name: n8n
          key: REDIS_AUTH_TOKEN
    QUEUE_BULL_REDIS_PORT:
      value: "6379"
    OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS:
      value: "true"          
    QUEUE_HEALTH_CHECK_ACTIVE:
      value: 'true'
    QUEUE_HEALTH_CHECK_PORT:
      value: "5680"
    N8N_RUNNERS_ENABLED:
      value: "true"
    N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS:
      value: "true"
    N8N_LOG_LEVEL:
      value: "debug"
    N8N_WORKER_SERVER_ADDRESS:
      value: "0.0.0.0"
    N8N_METRICS:
      value: "true"

What is the error message (if any)?

When I start the process, with debug logs enabled, I see:

2025-08-12T14:02:53.725Z | info | Initializing n8n process {“file”:“start.js”,“function”:“init”}
2025-08-12T14:02:53.745Z | debug | Starting main instance in scaling mode {“scopes”:[“scaling”],“file”:“start.js”,“function”:“init”}
2025-08-12T14:02:53.749Z | debug | Host ID: main-bOSU7vWKj1ZQjwix {“scopes”:[“scaling”],“file”:“start.js”,“function”:“init”}
2025-08-12T14:02:54.144Z | debug | Lazy-loading nodes and credentials from n8n-nodes-base {“nodes”:482,“credentials”:384,“file”:“lazy-package-directory-loader.js”,“function”:“loadAll”}
2025-08-12T14:02:54.185Z | debug | Lazy-loading nodes and credentials from @n8n/n8n-nodes-langchain {“nodes”:100,“credentials”:22,“file”:“lazy-package-directory-loader.js”,“function”:“loadAll”}
2025-08-12T14:02:54.723Z | info | n8n ready on ::, port 5678 {“file”:“abstract-server.js”,“function”:“init”}
2025-08-12T14:02:54.749Z | debug | Started Redis client publisher(n8n) {“scopes”:[“redis”,“scaling”],“type”:“publisher(n8n)”,“host”:“``master.n8n.3wm9q0.use1.cache.amazonaws.com``”,“port”:6379,“file”:“redis-client.service.js”,“function”:“createRegularClient”}
2025-08-12T14:02:54.822Z | debug | Registered a “reload-license” event handler on License#reload {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.823Z | debug | Registered a “relay-execution-lifecycle-event” event handler on Push#handleRelayExecutionLifecycleEvent {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.823Z | debug | Registered a “clear-test-webhooks” event handler on TestWebhooks#handleClearTestWebhooks {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.824Z | debug | Registered a “restart-event-bus” event handler on MessageEventBus#restart {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.824Z | debug | Registered a “display-workflow-activation” event handler on ActiveWorkflowManager#handleDisplayWorkflowActivation {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.824Z | debug | Registered a “display-workflow-deactivation” event handler on ActiveWorkflowManager#handleDisplayWorkflowDeactivation {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.825Z | debug | Registered a “display-workflow-activation-error” event handler on ActiveWorkflowManager#handleDisplayWorkflowActivationError {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.825Z | debug | Registered a “add-webhooks-triggers-and-pollers” event handler on ActiveWorkflowManager#handleAddWebhooksTriggersAndPollers {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.825Z | debug | Registered a “remove-triggers-and-pollers” event handler on ActiveWorkflowManager#handleRemoveTriggersAndPollers {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.826Z | debug | Registered a “response-to-get-worker-status” event handler on WorkerStatusService#handleWorkerStatusResponse {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.826Z | debug | Registered a “community-package-update” event handler on CommunityPackagesService#handleInstallEvent {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.826Z | debug | Registered a “community-package-install” event handler on CommunityPackagesService#handleInstallEvent {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.827Z | debug | Registered a “community-package-uninstall” event handler on CommunityPackagesService#handleUninstallEvent {“scopes”:[“pubsub”],“file”:“pubsub.registry.js”,“function”:“init”}
2025-08-12T14:02:54.828Z | debug | Started Redis client subscriber(n8n) {“scopes”:[“redis”,“scaling”],“type”:“subscriber(n8n)”,“host”:“``master.123xyz.amazonaws.com``”,“port”:6379,“file”:“redis-client.service.js”,“function”:“createRegularClient”}

The logs indicate that the main procerss is able to connect to my external Redis instance and the Postgres database schema is populated correctly – so it seems it can connect to the database as well.

This is the last log that I see – and I don’t think it’s booting fully. When I try to access the web interface, I only see:

Cannot GET /

The UI is not displayed. If I set EXECUTIONS_MODE to regular – the interface loads properly.

What am I missing here? What is causing the main process not to fully boot and display the web interface? How can I troubleshoot further?

Information on your n8n setup

  • n8n version: 1.105.4
  • Database (default: SQLite): Postgres v17
  • n8n EXECUTIONS_PROCESS setting (default: own, main): queue
  • Running n8n via (Docker, npm, n8n cloud, desktop app): Kubernetes

The problem ended up being a failure to connect to my Elasticache Valkey instance due to TLS – but this was harder to debug than it needed to be because n8n was reporting that it WAS in fact able to connect.

There could be better logging around this.

Hi, thank you for sharing. Could explain how did you fix this? Was it adding the env variable QUEUE_BULL_REDIS_TLS = “true“?

Being getting crazy trying to find the issue. I’m using Redis OSS on AWS ElastiCache

I’m using ElastiCache (Valkey) – and I have these env vars set:

    QUEUE_BULL_REDIS_HOST:
      valueFrom:
        secretKeyRef:
          name: n8n
          key: REDIS_ENDPOINT
    QUEUE_BULL_REDIS_PASSWORD:
      valueFrom:
        secretKeyRef:
          name: n8n
          key: REDIS_AUTH_TOKEN
    QUEUE_BULL_REDIS_TLS:
      value: "true"
    QUEUE_BULL_REDIS_PORT:
      value: "6379"

Enabling the redis tls via QUEUE_BULL_REDIS_TLS = “true” fixed the issue, thanks!