mirror of
https://github.com/preparebuddyy/n8n-self-hosted.git
synced 2026-03-02 22:47:01 +00:00
164 lines
4.3 KiB
YAML
164 lines
4.3 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
|
|
|
|
name: n8n
|
|
services:
|
|
caddy:
|
|
container_name: caddy
|
|
hostname: caddy
|
|
image: caddy:latest
|
|
networks:
|
|
- shared_network
|
|
restart: always
|
|
ports:
|
|
- '80:80'
|
|
- '443:443'
|
|
- '443:443/udp'
|
|
environment:
|
|
DOMAIN_NAME: ${DOMAIN_NAME}
|
|
SSL_EMAIL: ${SSL_EMAIL}
|
|
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
|
|
--save 600 1
|
|
--loglevel warning
|
|
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
|
|
command:
|
|
- postgres
|
|
- -c
|
|
- log_min_messages=warning
|
|
- -c
|
|
- client_min_messages=warning
|
|
- -c
|
|
- log_checkpoints=off
|
|
n8n-master:
|
|
container_name: n8n-master
|
|
hostname: n8n-master
|
|
image: 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: 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 |