diff --git a/arty.yml b/arty.yml index 635cb37..beb067b 100644 --- a/arty.yml +++ b/arty.yml @@ -59,14 +59,6 @@ envs: TANDOOR_GUNICORN_MEDIA: 0 TANDOOR_COMMENT_PREF_DEFAULT: 1 TANDOOR_SHOPPING_MIN_AUTOSYNC_INTERVAL: 5 - # n8n - N8N_TRAEFIK_ENABLED: true - N8N_COMPOSE_PROJECT_NAME: n8n - N8N_IMAGE: docker.n8n.io/n8nio/n8n - N8N_TRAEFIK_HOST: n8n.pivoine.art - N8N_PORT: 5678 - N8N_DB_NAME: n8n - N8N_DB_SCHEMA: public # Filestash STASH_TRAEFIK_ENABLED: true STASH_COMPOSE_PROJECT_NAME: stash @@ -128,6 +120,10 @@ envs: DEV_COOLIFY_IMAGE: ghcr.io/coollabsio/coolify:latest DEV_COOLIFY_TRAEFIK_HOST: coolify.dev.pivoine.art DEV_COOLIFY_DB_NAME: coolify + DEV_N8N_IMAGE: docker.n8n.io/n8nio/n8n + DEV_N8N_TRAEFIK_HOST: n8n.dev.pivoine.art + DEV_N8N_DB_NAME: n8n + DEV_N8N_DB_SCHEMA: public # PairDrop DROP_TRAEFIK_ENABLED: true DROP_COMPOSE_PROJECT_NAME: drop diff --git a/compose.yaml b/compose.yaml index 521a6d1..04eb3bd 100644 --- a/compose.yaml +++ b/compose.yaml @@ -4,7 +4,6 @@ include: - sexy/compose.yaml - mattermost/compose.yaml - tandoor/compose.yaml - - n8n/compose.yaml - links/compose.yaml - vault/compose.yaml - joplin/compose.yaml diff --git a/dev/compose.yaml b/dev/compose.yaml index 74815e6..73226f8 100644 --- a/dev/compose.yaml +++ b/dev/compose.yaml @@ -172,6 +172,60 @@ services: # Watchtower - "com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}" + # n8n - Workflow automation platform + n8n: + image: ${DEV_N8N_IMAGE:-docker.n8n.io/n8nio/n8n} + container_name: ${DEV_COMPOSE_PROJECT_NAME}_n8n + restart: unless-stopped + volumes: + - n8n_data:/home/node/.n8n + environment: + TZ: ${TIMEZONE:-Europe/Berlin} + GENERIC_TIMEZONE: ${TIMEZONE:-Europe/Berlin} + N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true" + N8N_RUNNERS_ENABLED: "true" + DB_TYPE: postgresdb + DB_POSTGRESDB_DATABASE: ${DEV_N8N_DB_NAME} + DB_POSTGRESDB_HOST: ${CORE_DB_HOST} + DB_POSTGRESDB_PORT: ${CORE_DB_PORT} + DB_POSTGRESDB_USER: ${DB_USER} + DB_POSTGRESDB_PASSWORD: ${DB_PASSWORD} + DB_POSTGRESDB_SCHEMA: ${DEV_N8N_DB_SCHEMA:-public} + N8N_HOST: ${DEV_N8N_TRAEFIK_HOST} + N8N_PORT: 5678 + N8N_PROTOCOL: https + WEBHOOK_URL: https://${DEV_N8N_TRAEFIK_HOST}/ + N8N_EMAIL_MODE: smtp + N8N_SMTP_HOST: ${EMAIL_SMTP_HOST} + N8N_SMTP_PORT: ${EMAIL_SMTP_PORT} + N8N_SMTP_USER: ${EMAIL_SMTP_USER} + N8N_SMTP_PASS: ${EMAIL_SMTP_PASSWORD} + N8N_SMTP_SENDER: ${EMAIL_FROM} + N8N_SMTP_SSL: "true" + MATTERMOST_WEBHOOK_URL: ${MATTERMOST_WEBHOOK_URL:-} + depends_on: + - postgres + networks: + - compose_network + labels: + - "traefik.enable=${DEV_TRAEFIK_ENABLED}" + # HTTP to HTTPS redirect + - "traefik.http.middlewares.${DEV_COMPOSE_PROJECT_NAME}-n8n-redirect-web-secure.redirectscheme.scheme=https" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-n8n-web.middlewares=${DEV_COMPOSE_PROJECT_NAME}-n8n-redirect-web-secure" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-n8n-web.rule=Host(`${DEV_N8N_TRAEFIK_HOST}`)" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-n8n-web.entrypoints=web" + # HTTPS router + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-n8n-web-secure.rule=Host(`${DEV_N8N_TRAEFIK_HOST}`)" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-n8n-web-secure.tls.certresolver=resolver" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-n8n-web-secure.entrypoints=web-secure" + - "traefik.http.middlewares.${DEV_COMPOSE_PROJECT_NAME}-n8n-web-secure-compress.compress=true" + - "traefik.http.routers.${DEV_COMPOSE_PROJECT_NAME}-n8n-web-secure.middlewares=${DEV_COMPOSE_PROJECT_NAME}-n8n-web-secure-compress,security-headers@file" + # Service + - "traefik.http.services.${DEV_COMPOSE_PROJECT_NAME}-n8n-web-secure.loadbalancer.server.port=5678" + - "traefik.docker.network=${NETWORK_NAME}" + # Watchtower + - "com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}" + volumes: gitea_data: name: ${DEV_COMPOSE_PROJECT_NAME}_gitea_data @@ -181,6 +235,8 @@ volumes: name: ${DEV_COMPOSE_PROJECT_NAME}_gitea_runner_data coolify_data: name: ${DEV_COMPOSE_PROJECT_NAME}_coolify_data + n8n_data: + name: ${DEV_COMPOSE_PROJECT_NAME}_n8n_data networks: compose_network: diff --git a/n8n/compose.yaml b/n8n/compose.yaml deleted file mode 100644 index 75a88ae..0000000 --- a/n8n/compose.yaml +++ /dev/null @@ -1,61 +0,0 @@ -services: - n8n: - image: ${N8N_IMAGE:-docker.n8n.io/n8nio/n8n} - container_name: ${N8N_COMPOSE_PROJECT_NAME}_app - restart: unless-stopped - ports: - - "${N8N_PORT:-5678}:5678" - volumes: - - n8n_data:/home/node/.n8n - environment: - TZ: ${TIMEZONE:-Europe/Berlin} - GENERIC_TIMEZONE: ${TIMEZONE:-Europe/Berlin} - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true" - N8N_RUNNERS_ENABLED: "true" - DB_TYPE: postgresdb - DB_POSTGRESDB_DATABASE: ${N8N_DB_NAME} - DB_POSTGRESDB_HOST: ${CORE_DB_HOST} - DB_POSTGRESDB_PORT: ${CORE_DB_PORT} - DB_POSTGRESDB_USER: ${DB_USER} - DB_POSTGRESDB_PASSWORD: ${DB_PASSWORD} - DB_POSTGRESDB_SCHEMA: ${N8N_DB_SCHEMA:-public} - N8N_HOST: ${N8N_TRAEFIK_HOST} - N8N_PORT: 5678 - N8N_PROTOCOL: https - WEBHOOK_URL: https://${N8N_TRAEFIK_HOST}/ - N8N_EMAIL_MODE: smtp - N8N_SMTP_HOST: ${EMAIL_SMTP_HOST} - N8N_SMTP_PORT: ${EMAIL_SMTP_PORT} - N8N_SMTP_USER: ${EMAIL_SMTP_USER} - N8N_SMTP_PASS: ${EMAIL_SMTP_PASSWORD} - N8N_SMTP_SENDER: ${EMAIL_FROM} - N8N_SMTP_SSL: "true" - # Mattermost webhook for notifications - MATTERMOST_WEBHOOK_URL: ${MATTERMOST_WEBHOOK_URL:-} - depends_on: - - postgres - networks: - - compose_network - labels: - - 'traefik.enable=${N8N_TRAEFIK_ENABLED}' - - 'traefik.http.middlewares.${N8N_COMPOSE_PROJECT_NAME}-n8n-redirect-web-secure.redirectscheme.scheme=https' - - 'traefik.http.routers.${N8N_COMPOSE_PROJECT_NAME}-n8n-web.middlewares=${N8N_COMPOSE_PROJECT_NAME}-n8n-redirect-web-secure' - - 'traefik.http.routers.${N8N_COMPOSE_PROJECT_NAME}-n8n-web.rule=Host(`${N8N_TRAEFIK_HOST}`)' - - 'traefik.http.routers.${N8N_COMPOSE_PROJECT_NAME}-n8n-web.entrypoints=web' - - 'traefik.http.routers.${N8N_COMPOSE_PROJECT_NAME}-n8n-web-secure.rule=Host(`${N8N_TRAEFIK_HOST}`)' - - 'traefik.http.routers.${N8N_COMPOSE_PROJECT_NAME}-n8n-web-secure.tls.certresolver=resolver' - - 'traefik.http.routers.${N8N_COMPOSE_PROJECT_NAME}-n8n-web-secure.entrypoints=web-secure' - - 'traefik.http.middlewares.${N8N_COMPOSE_PROJECT_NAME}-n8n-web-secure-compress.compress=true' - - 'traefik.http.routers.${N8N_COMPOSE_PROJECT_NAME}-n8n-web-secure.middlewares=${N8N_COMPOSE_PROJECT_NAME}-n8n-web-secure-compress' - - 'traefik.http.services.${N8N_COMPOSE_PROJECT_NAME}-n8n-web-secure.loadbalancer.server.port=5678' - - 'traefik.docker.network=${NETWORK_NAME}' - - 'com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}' - -volumes: - n8n_data: - name: ${N8N_COMPOSE_PROJECT_NAME}_n8n_data - -networks: - compose_network: - name: ${NETWORK_NAME} - external: true diff --git a/restic/compose.yaml b/restic/compose.yaml index 953bf2d..15cee63 100644 --- a/restic/compose.yaml +++ b/restic/compose.yaml @@ -107,7 +107,7 @@ volumes: name: tandoor_mediafiles external: true backup_n8n_data: - name: n8n_n8n_data + name: dev_n8n_data external: true backup_filestash_data: name: stash_filestash_data