# documentation: https://n8n.io # slogan: n8n is an extendable workflow automation tool with queue mode and workers. # category: automation # tags: n8n,workflow,automation,open,source,low,code,queue,worker,scalable # logo: svgs/n8n.png # port: 5678 services: n8n: image: docker.n8n.io/n8nio/n8n environment: - SERVICE_URL_N8N_5678 - N8N_EDITOR_BASE_URL=${SERVICE_URL_N8N} - WEBHOOK_URL=${SERVICE_URL_N8N} - N8N_HOST=${SERVICE_URL_N8N} - GENERIC_TIMEZONE=${GENERIC_TIMEZONE:-Europe/Berlin} - TZ=${TZ:-Europe/Berlin} - DB_TYPE=postgresdb - DB_POSTGRESDB_DATABASE=${POSTGRES_DB:-n8n} - DB_POSTGRESDB_HOST=postgresql - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_USER=$SERVICE_USER_POSTGRES - DB_POSTGRESDB_SCHEMA=public - DB_POSTGRESDB_PASSWORD=$SERVICE_PASSWORD_POSTGRES - EXECUTIONS_MODE=queue - QUEUE_BULL_REDIS_HOST=redis - QUEUE_HEALTH_CHECK_ACTIVE=true - N8N_ENCRYPTION_KEY=${SERVICE_PASSWORD_ENCRYPTION} - N8N_RUNNERS_ENABLED=true - OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true - N8N_BLOCK_ENV_ACCESS_IN_NODE=${N8N_BLOCK_ENV_ACCESS_IN_NODE:-true} - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=${N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS:-true} volumes: - n8n-data:/home/node/.n8n depends_on: postgresql: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/"] interval: 5s timeout: 20s retries: 10 n8n-worker: image: docker.n8n.io/n8nio/n8n command: worker environment: - GENERIC_TIMEZONE=${GENERIC_TIMEZONE:-Europe/Berlin} - TZ=${TZ:-Europe/Berlin} - DB_TYPE=postgresdb - DB_POSTGRESDB_DATABASE=${POSTGRES_DB:-n8n} - DB_POSTGRESDB_HOST=postgresql - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_USER=$SERVICE_USER_POSTGRES - DB_POSTGRESDB_SCHEMA=public - DB_POSTGRESDB_PASSWORD=$SERVICE_PASSWORD_POSTGRES - EXECUTIONS_MODE=queue - QUEUE_BULL_REDIS_HOST=redis - QUEUE_HEALTH_CHECK_ACTIVE=true - N8N_ENCRYPTION_KEY=${SERVICE_PASSWORD_ENCRYPTION} - N8N_RUNNERS_ENABLED=true - N8N_BLOCK_ENV_ACCESS_IN_NODE=${N8N_BLOCK_ENV_ACCESS_IN_NODE:-true} - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=${N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS:-true} volumes: - n8n-data:/home/node/.n8n healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/healthz"] interval: 5s timeout: 20s retries: 10 depends_on: n8n: condition: service_healthy postgresql: condition: service_healthy redis: condition: service_healthy postgresql: image: postgres:16-alpine volumes: - postgresql-data:/var/lib/postgresql/data environment: - POSTGRES_USER=$SERVICE_USER_POSTGRES - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES - POSTGRES_DB=${POSTGRES_DB:-n8n} healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 20s retries: 10 redis: image: redis:6-alpine volumes: - redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 10