153 lines
5.1 KiB
YAML
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
|