From 1b59e98c49e0771d371cede1c9a93d0e908a50b0 Mon Sep 17 00:00:00 2001 From: Hayden Liu Date: Sat, 27 Dec 2025 04:36:03 +0800 Subject: [PATCH] n8n --- n8n/docker-compose.yml | 158 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 n8n/docker-compose.yml diff --git a/n8n/docker-compose.yml b/n8n/docker-compose.yml new file mode 100644 index 0000000..6447776 --- /dev/null +++ b/n8n/docker-compose.yml @@ -0,0 +1,158 @@ +version: "3.7" + +services: + main: + image: ${N8N_IMAGE} + command: start + restart: unless-stopped + user: ${N8N_UID} + ports: + - "5678:5678" + environment: + # Database + - DB_TYPE=postgresdb + - DB_POSTGRESDB_USER=${N8N_POSTGRESDB_DATABASE} + - DB_POSTGRESDB_HOST=db + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_USER=${N8N_POSTGRESDB_USER} + - DB_POSTGRESDB_PASSWORD=${N8N_POSTGRESDB_PASSWORD} + + # Redis + - QUEUE_BULL_REDIS_HOST=redis + - QUEUE_BULL_REDIS_PORT=6379 + - QUEUE_BULL_REDIS_DB=0 + + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + - N8N_HOST=${N8N_HOST} + - N8N_PORT=5678 + - N8N_EDITOR_BASE_URL=${N8N_EDITOR_URL} + - N8N_PROTOCOL=https + - NODE_ENV=production + - N8N_LOG_LEVEL=debug + - WEBHOOK_URL=${N8N_WEBHOOK_URL} + - EXECUTIONS_MODE=queue + - N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true + - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true + + - NODE_FUNCTION_ALLOW_EXTERNAL=${NODE_FUNCTION_ALLOW_EXTERNAL} + #- NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash,moment-with-locales + - EXECUTIONS_DATA_PRUNE=true + - EXECUTIONS_DATA_MAX_AGE=168 + - GENERIC_TIMEZONE=${N8N_TZ} + - TZ=${N8N_TZ} + volumes: + - /mnt:/mnt + deploy: + mode: replicated + replicas: 1 + labels: + - homepage.group=Management + - homepage.name=n8n + - homepage.icon=sh-n8n-light + - homepage.href=${N8N_EDITOR_URL} + - homepage.description=n8n is a workflow automation platform that gives technical teams the flexibility of code with the speed of no-code. + + worker: + image: ${N8N_IMAGE} + command: worker --concurrency=10 + restart: unless-stopped + user: ${N8N_UID} + + environment: + # Database + - DB_TYPE=postgresdb + - DB_POSTGRESDB_USER=${N8N_POSTGRESDB_DATABASE} + - DB_POSTGRESDB_HOST=db + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_USER=${N8N_POSTGRESDB_USER} + - DB_POSTGRESDB_PASSWORD=${N8N_POSTGRESDB_PASSWORD} + + # Redis + - QUEUE_BULL_REDIS_HOST=redis + - QUEUE_BULL_REDIS_PORT=6379 + - QUEUE_BULL_REDIS_DB=0 + + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + - N8N_HOST=${N8N_HOST} + - N8N_PORT=5678 + - N8N_EDITOR_BASE_URL=${N8N_EDITOR_URL} + - N8N_PROTOCOL=https + - NODE_ENV=production + - N8N_LOG_LEVEL=debug + - WEBHOOK_URL=${N8N_WEBHOOK_URL} + - EXECUTIONS_MODE=queue + - N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true + - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true + + - NODE_FUNCTION_ALLOW_EXTERNAL=${NODE_FUNCTION_ALLOW_EXTERNAL} + #- NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash,moment-with-locales + - EXECUTIONS_DATA_PRUNE=true + - EXECUTIONS_DATA_MAX_AGE=168 + - GENERIC_TIMEZONE=${N8N_TZ} + - TZ=${N8N_TZ} + volumes: + - /mnt:/mnt + deploy: + mode: global + + webhook: + image: ${N8N_IMAGE} + command: webhook + restart: unless-stopped + user: ${N8N_UID} + ports: + - "5679:5678" + environment: + # Database + - DB_TYPE=postgresdb + - DB_POSTGRESDB_USER=${N8N_POSTGRESDB_DATABASE} + - DB_POSTGRESDB_HOST=db + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_USER=${N8N_POSTGRESDB_USER} + - DB_POSTGRESDB_PASSWORD=${N8N_POSTGRESDB_PASSWORD} + + # Redis + - QUEUE_BULL_REDIS_HOST=redis + - QUEUE_BULL_REDIS_PORT=6379 + - QUEUE_BULL_REDIS_DB=0 + + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + - N8N_HOST=${N8N_HOST} + - N8N_PORT=5678 + - N8N_EDITOR_BASE_URL=${N8N_EDITOR_URL} + - N8N_PROTOCOL=https + - NODE_ENV=production + - N8N_LOG_LEVEL=debug + - WEBHOOK_URL=${N8N_WEBHOOK_URL} + - EXECUTIONS_MODE=queue + - N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true + - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true + + - NODE_FUNCTION_ALLOW_EXTERNAL=${NODE_FUNCTION_ALLOW_EXTERNAL} + #- NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash,moment-with-locales + - EXECUTIONS_DATA_PRUNE=true + - EXECUTIONS_DATA_MAX_AGE=168 + - GENERIC_TIMEZONE=${N8N_TZ} + - TZ=${N8N_TZ} + volumes: + - /mnt:/mnt + deploy: + mode: replicated + replicas: 1 + + redis: + image: redis:alpine + restart: unless-stopped + user: ${N8N_UID} + + db: + image: postgres:16 + restart: unless-stopped + user: ${N8N_UID} + volumes: + - /mnt/docker-storage/n8n:/var/lib/postgresql/data + environment: + - TZ=${N8N_TZ} + - POSTGRES_DB=${N8N_POSTGRESDB_DATABASE} + - POSTGRES_USER=${N8N_POSTGRESDB_USER} + - POSTGRES_PASSWORD=${N8N_POSTGRESDB_PASSWORD}