I’m facing an issue with my self-hosted n8n setup (v1.95.2, Docker, PostgreSQL, Redis).
Problem Summary: When n8n is in EXECUTIONS_MODE=regular (no queues/workers), it works stably, even with a Telegram trigger. However, when I switch to the recommended EXECUTIONS_MODE=queue (with N8N_RUNNERS_ENABLED=true, N8N_WORKERS_COUNT=1, OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true, and Redis configured), the following happens:
The n8n main process starts correctly, connects to Redis, registers the worker, and debug logs look fine.
Jobs (even a simple Manual Trigger → NoOp) are successfully enqueued to Redis (“Enqueued execution…”).
However, the worker does not pick up these jobs from the queue. Debug logs show no indication that the worker started processing.
After some time (30-60 seconds), the enqueued job gets canceled (“Execution cancelled,” “Stopped inactive job”).
The main n8n process itself remains stable and does not crash.
Troubleshooting Done:
Server resources (RAM/CPU) appear normal; no OOM Killer activity.
Redis is running, accessible, and FLUSHDB has been performed.
Permissions for the n8n Docker volume are correct.
WEBHOOK_URL and other basic n8n environment variables are configured.
The docker-compose.yml configuration for queue mode seems correct as per documentation.
Question: What could be preventing workers from processing jobs from the Redis queue in queue mode on n8n v1.95.2, given that regular mode works fine? Are there any specific configurations or known issues for workers in this version that I might be overlooking?
Could you share yml plz, also N8N_WORKERS_COUNT isn’t a var that am aware of. Mostly looks okay otherwise you would need to make sure ure worker container starts with n8n worker,
Where did u find this setup?
I could be mistaken and it can be a new feature. But normally workers are seperate containers with an extra startup command ‘worker’
@Alexseyka_Smirnov Did you create extra node like example yml shared? I don’t see any worker nodes setup, just the env vars for main n8n instacne to know to offload to redis / workers?
Did you want to jump on a call? Feel free to join.
Thank you for your help, but I’m not able to talk right now.
I split the containers exactly as you described in your post, and everything is working.
Telegram is still throwing a webhook error, but I think I can sort it out.