Files
Applications/ALL_Stack/n8n/docker-compose.yml
T
2026-03-16 18:26:47 +01:00

153 lines
5.1 KiB
YAML

#### NETWORKS
networks:
traefik_front_network:
external: true
back_network_n8n:
driver: bridge
attachable: true
#### SERVICES
services:
### n8n
n8n:
container_name: n8n-app
hostname: n8n-app
image: n8nio/n8n:latest
environment:
# Database
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=n8n-postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRE_DB_NAME}
- DB_POSTGRESDB_USER=${POSTGRE_DB_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRE_DB_PASSWORD}
# N8N parametre
- N8N_HOST=n8n.tips-of-mine.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_DIAGNOSTICS_ENABLED=false
- N8N_LISTEN_ADDRESS=0.0.0.0
- N8N_SECURE_COOKIE=false
# SMTP
- N8N_EMAIL_MODE=smtp
- N8N_SMTP_HOST=n8n-msmtpd
- N8N_SMTP_PORT=2500
- N8N_SMTP_USER=
- N8N_SMTP_PASS=
- N8N_SMTP_SENDER=hostinfo@tips-of-mine.fr
- N8N_SMTP_SSL=false
- NODE_ENV=production
# - EXECUTIONS_MODE=regular
- NODE_FUNCTION_ALLOW_BUILTIN=*
- NODE_FUNCTION_ALLOW_EXTERNAL=*
- WEBHOOK_URL=https://n8n.tips-of-mine.com/
- TZ=${TZ}
- GENERIC_TIMEZONE=${TZ}
# - EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=n8n-redis
- QUEUE_HEALTH_CHECK_ACTIVE=true
# - OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true
restart: always
networks:
- back_network_n8n
- traefik_front_network
volumes:
- ./n8n:/home/node/.n8n:rw
- ./files:/files:rw
ports:
- "5678:5678"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ['CMD', 'wget', '--spider', 'http://127.0.0.1:5678']
interval: 30s
timeout: 10s
retries: 5
dns:
- 8.8.8.8
- 8.8.4.4
labels:
- "com.centurylinklabs.watchtower.enable=true"
- "traefik.enable=true"
- "traefik.docker.network=traefik_front_network"
# HTTP
- "traefik.http.routers.n8n-http.rule=Host(`n8n.tips-of-mine.com`)"
- "traefik.http.routers.n8n-http.entrypoints=http"
- "traefik.http.routers.n8n-http.priority=49"
# HTTPS
- "traefik.http.routers.n8n-https.rule=Host(`n8n.tips-of-mine.com`)"
- "traefik.http.routers.n8n-https.entrypoints=https"
- "traefik.http.routers.n8n-https.tls=true"
- "traefik.http.routers.n8n-https.priority=50"
- "traefik.http.routers.n8n-https.service=n8n-https-service"
- "traefik.http.routers.n8n-https.middlewares=n8n-middlewares"
- "traefik.http.routers.n8n-https.observability.accesslogs=true"
- "traefik.http.routers.n8n-https.observability.metrics=true"
- "traefik.http.routers.n8n-https.observability.tracing=true"
# Middleware
- "traefik.http.middlewares.n8n-middlewares.headers.SSLRedirect=true"
- "traefik.http.middlewares.n8n-middlewares.headers.STSSeconds=315360000"
- "traefik.http.middlewares.n8n-middlewares.headers.browserXSSFilter=true"
- "traefik.http.middlewares.n8n-middlewares.headers.contentTypeNosniff=true"
- "traefik.http.middlewares.n8n-middlewares.headers.forceSTSHeader=true"
- "traefik.http.middlewares.n8n-middlewares.headers.SSLHost=tips-of-mine.com"
- "traefik.http.middlewares.n8n-middlewares.headers.STSIncludeSubdomains=true"
- "traefik.http.middlewares.n8n-middlewares.headers.STSPreload=true"
# Service
- "traefik.http.services.n8n-https-service.loadbalancer.server.port=5678"
# - "traefik.http.services.n8n-https-service.loadbalancer.server.scheme=https"
# - "traefik.http.services.n8n-https-service.loadbalancer.healthcheck.hostname=n8n.tips-of-mine.com"
# - "traefik.http.services.n8n-https-service.loadbalancer.healthcheck.method=foobar"
# - "traefik.http.services.n8n-https-service.loadbalancer.healthcheck.timeout=10"
# - "traefik.http.services.n8n-https-service.loadbalancer.healthcheck.interval=30"
### postgres
postgres:
container_name: n8n-postgres
hostname: n8n-postgres
image: ${POSTGRES_IMAGE_TAG}
environment:
PGDATA: ${POSTGRE_DB_DATA}
POSTGRES_DB: ${POSTGRE_DB_NAME}
POSTGRES_PASSWORD: ${POSTGRE_DB_PASSWORD}
POSTGRES_USER: ${POSTGRE_DB_USER}
TZ: ${TZ}
restart: unless-stopped
networks:
- back_network_n8n
volumes:
- ./data:/var/lib/postgresql/data:rw
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: [ "CMD", "pg_isready", "-q", "-d", "${POSTGRE_DB_NAME}", "-U", "${POSTGRE_DB_USER}" ]
interval: 10s
timeout: 5s
retries: 3
start_period: 60s
labels:
- "com.centurylinklabs.watchtower.enable=true"
###
redis:
container_name: n8n-redis
hostname: n8n-redis
image: redis:latest
restart: always
#command: ["redis-server"]
# command: [ "/entrypoint.sh", "./redis-stack.conf" ]
ports:
- "6379:6379"
networks:
- back_network_n8n
volumes:
- ./redis:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 10