services: n8n-1: container_name: n8n-1 image: n8nio/n8n:1.42.1 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} - N8N_SECURE_COOKIE=false - 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-init: condition: service_completed_successfully 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 n8n-init: image: bash:5.2.26 command: ['sh', '-c', 'chown -R 1000:1000 /home/node/.n8n'] volumes: - ${APP_DATA_DIR}/data/n8n:/home/node/.n8n