mirror of
https://github.com/preparebuddyy/n8n-self-hosted.git
synced 2026-03-03 02:27:00 +00:00
145 lines
4.1 KiB
YAML
145 lines
4.1 KiB
YAML
x-n8n-common-env: &n8n-common-env
|
|
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
|
|
- N8N_PORT=5678
|
|
- N8N_PROTOCOL=https
|
|
- NODE_ENV=production
|
|
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
|
|
# Sets the timezone for cron nodes, etc.
|
|
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
|
|
# Secret key to encrypt credentials.
|
|
- N8N_ENCRYPTION_KEY=${N8N_KEY}
|
|
# --- Database ---
|
|
- DB_TYPE=postgresdb
|
|
- DB_POSTGRESDB_DATABASE=n8n_db
|
|
- DB_POSTGRESDB_HOST=n8n-psql
|
|
- DB_POSTGRESDB_PORT=5432
|
|
- DB_POSTGRESDB_USER=n8n
|
|
- DB_POSTGRESDB_SCHEMA=public
|
|
- DB_POSTGRESDB_PASSWORD=${PSQL_PWD}
|
|
# --- Workers & Execution Pruning ---
|
|
# 'queue' mode is required for scaling with separate workers.
|
|
- EXECUTIONS_MODE=queue
|
|
- QUEUE_BULL_REDIS_HOST=n8n-redis
|
|
- QUEUE_BULL_REDIS_PASSWORD=${REDIS_PWD}
|
|
# Max age of executions to keep, in hours: 24h * 30d = 720, 14d = 336, 21d = 504, 60d = 1440
|
|
- EXECUTIONS_DATA_MAX_AGE=1440
|
|
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=1000000
|
|
- EXECUTIONS_DATA_PRUNE=true
|
|
# --- Security & Customization ---
|
|
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
|
|
- N8N_GIT_NODE_DISABLE_BARE_REPOS=true
|
|
- N8N_BLOCK_ENV_ACCESS_IN_NODE=true
|
|
# Performance tuning.
|
|
- N8N_RUNNERS_ENABLED=true
|
|
- N8N_RUNNERS_MAX_CONCURRENCY=10
|
|
- OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true
|
|
# --- SMTP ---
|
|
- N8N_EMAIL_MODE=smtp
|
|
- N8N_SMTP_HOST=${SMTP_HOST}
|
|
- N8N_SMTP_PORT=${SMTP_PORT}
|
|
- N8N_SMTP_USER=${SMTP_USER}
|
|
- N8N_SMTP_PASS=${SMTP_PWD}
|
|
- N8N_SMTP_SENDER=${SMTP_USER}
|
|
- N8N_SMTP_SSL=true
|
|
# Save binary files to filesystem instead of memory
|
|
- N8N_DEFAULT_BINARY_DATA_MODE=filesystem
|
|
# Disable modules and spam
|
|
- N8N_DISABLED_MODULES=insights
|
|
# - N8N_TEMPLATES_ENABLED=false
|
|
- N8N_HIRING_BANNER_ENABLED=false
|
|
# - N8N_VERSION_NOTIFICATIONS_ENABLED=false
|
|
# Disable n8n telemetry events (comment to enable)
|
|
- N8N_DIAGNOSTICS_ENABLED=false
|
|
- EXTERNAL_FRONTEND_HOOKS_URLS=
|
|
- N8N_DIAGNOSTICS_CONFIG_FRONTEND=
|
|
- N8N_DIAGNOSTICS_CONFIG_BACKEND=
|
|
# Enable n8n /metrics, /healthz and /healthz/readiness endpoints
|
|
- N8N_METRICS=true
|
|
- QUEUE_HEALTH_CHECK_ACTIVE=true
|
|
|
|
services:
|
|
caddy:
|
|
container_name: n8n-caddy
|
|
hostname: n8n-caddy
|
|
image: caddy:latest
|
|
networks: ['shared_network']
|
|
restart: unless-stopped
|
|
ports:
|
|
- '80:80'
|
|
- '443:443'
|
|
- '443:443/udp'
|
|
volumes:
|
|
- ./data/caddy:/data
|
|
- ./config:/etc/caddy
|
|
depends_on:
|
|
n8n-master:
|
|
condition: service_started
|
|
n8n-redis:
|
|
container_name: n8n-redis
|
|
hostname: n8n-redis
|
|
image: redis:alpine
|
|
networks: ['shared_network']
|
|
restart: always
|
|
healthcheck:
|
|
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
command: >
|
|
--requirepass ${REDIS_PWD}
|
|
--bind 0.0.0.0
|
|
volumes:
|
|
- ./data/n8n-redis:/data
|
|
n8n-psql:
|
|
container_name: n8n-psql
|
|
hostname: n8n-psql
|
|
image: postgres:17
|
|
networks: ['shared_network']
|
|
restart: always
|
|
environment:
|
|
- POSTGRES_USER=n8n
|
|
- POSTGRES_PASSWORD=${PSQL_PWD}
|
|
- POSTGRES_DB=n8n_db
|
|
volumes:
|
|
- ./data/n8n-psql:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -h localhost -U n8n -d n8n_db']
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
n8n-master:
|
|
container_name: n8n-master
|
|
hostname: n8n-master
|
|
image: docker.n8n.io/n8nio/n8n:${N8N_VERSION:-latest}
|
|
networks: ['shared_network']
|
|
restart: always
|
|
ports:
|
|
- '5678:5678'
|
|
environment: *n8n-common-env
|
|
volumes:
|
|
- ./data/n8n:/home/node/.n8n
|
|
- ./local_files:/files
|
|
depends_on:
|
|
n8n-psql:
|
|
condition: service_healthy
|
|
n8n-redis:
|
|
condition: service_healthy
|
|
n8n-worker:
|
|
image: docker.n8n.io/n8nio/n8n:${N8N_VERSION:-latest}
|
|
networks: ['shared_network']
|
|
restart: always
|
|
environment: *n8n-common-env
|
|
command: worker --concurrency=10
|
|
volumes:
|
|
- ./data/n8n:/home/node/.n8n
|
|
- ./local_files:/files
|
|
depends_on:
|
|
n8n-psql:
|
|
condition: service_healthy
|
|
n8n-redis:
|
|
condition: service_healthy
|
|
networks:
|
|
shared_network:
|
|
name: shared_network
|
|
driver: bridge
|
|
external: true |