
Deploy n8n.io Queue Mode on Your Own Server
Node based workflow automation tool - Queue mode
Want to deploy n8n.io Queue Mode on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
What is n8n.io Queue Mode?
n8n in queue mode is an advanced execution setting designed for scalability and distributed workflow processing. Unlike the default single-process mode, where triggers and workflow runs share the same thread, queue mode splits the backend into separate components. This separation enables horizontal scaling, improved performance under load, and isolation between trigger handling and execution.
Self-Host n8n.io Queue Mode
Follow these steps to deploy on your own server.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
Application
Postgres
Redis
Deploy
Copy the configuration and run it on your server.
services:
n8n_io_queue_mode-editor:
image: n8nio/n8n:1.106.3
environment:
DB_POSTGRESDB_DATABASE: n8n_queue
DB_POSTGRESDB_HOST: n8n_io_queue_mode-postgres
DB_POSTGRESDB_PASSWORD: 99291752710bc1c2bdf66ce1c3966e201f1ec8d3b331459797
DB_POSTGRESDB_USER: n8n_queue
DB_TYPE: postgresdb
EXECUTIONS_MODE: queue
GENERIC_TIMEZONE: UTC
N8N_CONCURRENCY_PRODUCTION_LIMIT: "10"
N8N_DEFAULT_LOCALE: en
N8N_DIAGNOSTICS_ENABLED: "false"
N8N_EDITOR_BASE_URL: https://n8n_io_queue_mode-editor.your-domain.com
N8N_EMAIL_MODE: smtp
N8N_ENCRYPTION_KEY: 864e6b05c9094e2dd00ccc3fb38a5558be0eb5e1
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
N8N_HOST: n8n_io_queue_mode-editor.your-domain.com
N8N_PROTOCOL: https
N8N_RUNNERS_ENABLED: "true"
N8N_SMTP_HOST: ""
N8N_SMTP_PASS: ""
N8N_SMTP_PORT: ""
N8N_SMTP_SENDER: ""
N8N_SMTP_SSL: "true"
N8N_SMTP_USER: ""
NODE_ENV: production
OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS: "true"
QUEUE_BULL_REDIS_HOST: n8n_io_queue_mode-redis
QUEUE_BULL_REDIS_PORT: "6379"
TZ: UTC
WEBHOOK_URL: https://n8n_io_queue_mode-webhooks.your-domain.com
volumes:
- n8n_io_queue_mode-data:/home/node/.n8n
- n8n_io_queue_mode-files:/files
depends_on:
- n8n_io_queue_mode-postgres
- n8n_io_queue_mode-redis
n8n_io_queue_mode-postgres:
image: pgvector/pgvector:pg14
environment:
POSTGRES_DB: n8n_queue
POSTGRES_PASSWORD: 99291752710bc1c2bdf66ce1c3966e201f1ec8d3b331459797
POSTGRES_USER: n8n_queue
TZ: UTC
volumes:
- n8n_io_queue_mode-postgres-data:/var/lib/postgresql/data
n8n_io_queue_mode-redis:
image: redis:8.2.0
volumes:
- n8n_io_queue_mode-redis-data:/data
n8n_io_queue_mode-webhooks:
image: n8nio/n8n:1.106.3
environment:
DB_POSTGRESDB_DATABASE: n8n_queue
DB_POSTGRESDB_HOST: n8n_io_queue_mode-postgres
DB_POSTGRESDB_PASSWORD: 99291752710bc1c2bdf66ce1c3966e201f1ec8d3b331459797
DB_POSTGRESDB_USER: n8n_queue
DB_TYPE: postgresdb
EXECUTIONS_MODE: queue
GENERIC_TIMEZONE: UTC
N8N_CONCURRENCY_PRODUCTION_LIMIT: "10"
N8N_DEFAULT_LOCALE: en
N8N_DIAGNOSTICS_ENABLED: "false"
N8N_EDITOR_BASE_URL: https://n8n_io_queue_mode-editor.your-domain.com
N8N_EMAIL_MODE: smtp
N8N_ENCRYPTION_KEY: 864e6b05c9094e2dd00ccc3fb38a5558be0eb5e1
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
N8N_HOST: n8n_io_queue_mode-editor.your-domain.com
N8N_PROTOCOL: https
N8N_RUNNERS_ENABLED: "true"
N8N_SMTP_HOST: ""
N8N_SMTP_PASS: ""
N8N_SMTP_PORT: ""
N8N_SMTP_SENDER: ""
N8N_SMTP_SSL: "true"
N8N_SMTP_USER: ""
NODE_ENV: production
OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS: "true"
QUEUE_BULL_REDIS_HOST: n8n_io_queue_mode-redis
QUEUE_BULL_REDIS_PORT: "6379"
TZ: UTC
WEBHOOK_URL: https://n8n_io_queue_mode-webhooks.your-domain.com
volumes:
- n8n_io_queue_mode-data:/home/node/.n8n
- n8n_io_queue_mode-files:/files
depends_on:
- n8n_io_queue_mode-postgres
- n8n_io_queue_mode-redis
n8n_io_queue_mode-workers:
image: n8nio/n8n:1.106.3
environment:
DB_POSTGRESDB_DATABASE: n8n_queue
DB_POSTGRESDB_HOST: n8n_io_queue_mode-postgres
DB_POSTGRESDB_PASSWORD: 99291752710bc1c2bdf66ce1c3966e201f1ec8d3b331459797
DB_POSTGRESDB_USER: n8n_queue
DB_TYPE: postgresdb
EXECUTIONS_MODE: queue
GENERIC_TIMEZONE: UTC
N8N_CONCURRENCY_PRODUCTION_LIMIT: "10"
N8N_DEFAULT_LOCALE: en
N8N_DIAGNOSTICS_ENABLED: "false"
N8N_EDITOR_BASE_URL: https://n8n_io_queue_mode-editor.your-domain.com
N8N_EMAIL_MODE: smtp
N8N_ENCRYPTION_KEY: 864e6b05c9094e2dd00ccc3fb38a5558be0eb5e1
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
N8N_HOST: n8n_io_queue_mode-editor.your-domain.com
N8N_PROTOCOL: https
N8N_RUNNERS_ENABLED: "true"
N8N_SMTP_HOST: ""
N8N_SMTP_PASS: ""
N8N_SMTP_PORT: ""
N8N_SMTP_SENDER: ""
N8N_SMTP_SSL: "true"
N8N_SMTP_USER: ""
NODE_ENV: production
OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS: "true"
QUEUE_BULL_REDIS_HOST: n8n_io_queue_mode-redis
QUEUE_BULL_REDIS_PORT: "6379"
TZ: UTC
WEBHOOK_URL: https://n8n_io_queue_mode-webhooks.your-domain.com
volumes:
- n8n_io_queue_mode-data:/home/node/.n8n
- n8n_io_queue_mode-files:/files
depends_on:
- n8n_io_queue_mode-postgres
- n8n_io_queue_mode-redis
volumes:
n8n_io_queue_mode-data: {}
n8n_io_queue_mode-files: {}
n8n_io_queue_mode-postgres-data: {}
n8n_io_queue_mode-redis-data: {}
Then run:
docker compose up -d
Access
Once started, access your app at http://localhost:5678
Why Self-Host n8n.io Queue Mode?
Full Data Ownership
Your data stays on your servers. No third-party access.
No Monthly Fees
Pay only for your server. No per-seat or usage charges.
Complete Control
Customize, backup, and scale on your own terms.
Privacy & Compliance
Meet GDPR, HIPAA, or internal security requirements.
Technical Details
Docker Image
n8nio/n8n:${N8N_VERSION}Want to go faster?
Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.
Install on any Linux server:
sh -c "$(curl -sSL https://get.senate.sh)"