app-store/apps/n8n/docker-compose.yml

74 lines
2.5 KiB
YAML

version: "3.7"
services:
n8n:
container_name: n8n
image: n8nio/n8n:1.27.2
restart: unless-stopped
ports:
- ${APP_PORT}:5678
volumes:
- ${APP_DATA_DIR}/data/n8n:/home/node/.n8n
environment:
- N8N_EDITOR_BASE_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}
- WEBHOOK_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=n8n_db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${N8N_NR_DB_PASSWORD}
networks:
- tipi_main_network
links:
- n8n_db
depends_on:
n8n_db:
condition: service_healthy
labels:
# Main
traefik.enable: true
traefik.http.middlewares.n8n-web-redirect.redirectscheme.scheme: https
traefik.http.services.n8n.loadbalancer.server.port: 5678
# Web
traefik.http.routers.n8n-insecure.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.n8n-insecure.entrypoints: web
traefik.http.routers.n8n-insecure.service: n8n
traefik.http.routers.n8n-insecure.middlewares: n8n-web-redirect
# Websecure
traefik.http.routers.n8n.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.n8n.entrypoints: websecure
traefik.http.routers.n8n.service: n8n
traefik.http.routers.n8n.tls.certresolver: myresolver
# Local domain
traefik.http.routers.n8n-local-insecure.rule: Host(`n8n.${LOCAL_DOMAIN}`)
traefik.http.routers.n8n-local-insecure.entrypoints: web
traefik.http.routers.n8n-local-insecure.service: n8n
traefik.http.routers.n8n-local-insecure.middlewares: n8n-web-redirect
# Local domain secure
traefik.http.routers.n8n-local.rule: Host(`n8n.${LOCAL_DOMAIN}`)
traefik.http.routers.n8n-local.entrypoints: websecure
traefik.http.routers.n8n-local.service: n8n
traefik.http.routers.n8n-local.tls: true
n8n_db:
container_name: n8n_db
image: postgres:11
restart: unless-stopped
networks:
- tipi_main_network
environment:
- POSTGRES_USER=tipi
- POSTGRES_PASSWORD=${N8N_DB_PASSWORD}
- POSTGRES_DB=n8n
- POSTGRES_NON_ROOT_USER=n8n
- POSTGRES_NON_ROOT_PASSWORD=${N8N_NR_DB_PASSWORD}
volumes:
- ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data
- ${APP_DATA_DIR}/data/init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U $$POSTGRES_USER -d $$POSTGRES_DB']
interval: 5s
timeout: 5s
retries: 10