From 140f4784189097fe065df02adbf895f2ee3b456b Mon Sep 17 00:00:00 2001 From: chriswin Date: Tue, 6 Jan 2026 00:27:36 +0100 Subject: [PATCH] n8n use postgres d --- docker-compose.yml | 1 - project/service/n8n/Dockerfile | 31 +++++++++++++++++++++++++++++++ project/service/n8n/n8n.yml | 16 +++++++++++----- renovate.json | 10 ++++++++++ 4 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 project/service/n8n/Dockerfile diff --git a/docker-compose.yml b/docker-compose.yml index fb3f881..474dfb1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,7 +23,6 @@ include: - ${INFRA_PATH}/syncthing/syncthing.yml - ${INFRA_PATH}/traefik/traefik.yml - ${INFRA_PATH}/uptime-kuma/uptime-kuma.yml - - ${INFRA_PATH}/watchtower/watchtower.yml env_file: ${INFRA_PATH}/.env - path: diff --git a/project/service/n8n/Dockerfile b/project/service/n8n/Dockerfile new file mode 100644 index 0000000..2bc544e --- /dev/null +++ b/project/service/n8n/Dockerfile @@ -0,0 +1,31 @@ +# Start with the official n8n image +FROM n8nio/n8n:2.2.1 + +# Copy apk and its deps from Alpine 3.23 +COPY --from=alpine:3.23 /sbin/apk /sbin/apk +COPY --from=alpine:3.23 /usr/lib/libapk.so* /usr/lib/ + +# Switch to root to install dependencies +USER root + +# Install Chromium and necessary dependencies for Puppeteer +RUN apk add --no-cache \ + chromium \ + nss \ + freetype \ + harfbuzz \ + ca-certificates \ + ttf-freefont \ + wget \ + nodejs \ + npm + +# Set environment variable for Puppeteer to find Chromium +ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser +ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true + +RUN npm install puppeteer + +# Revert back to non-root (default n8n user) +USER node + diff --git a/project/service/n8n/n8n.yml b/project/service/n8n/n8n.yml index d7f91bc..dbe045f 100644 --- a/project/service/n8n/n8n.yml +++ b/project/service/n8n/n8n.yml @@ -3,7 +3,9 @@ services: extends: file: ${TEMPLATES_PATH} service: default - image: docker.n8n.io/n8nio/n8n:2.2.1 + build: + context: . + dockerfile: ${SERVICE_PATH}/n8n/Dockerfile container_name: n8n ports: - 4022:5678 @@ -13,12 +15,16 @@ services: - N8N_BLOCK_ENV_ACCESS_IN_NODE=false - MAM_USERNAME=${N8N_MAM_USERNAME} - MAM_PASSWORD=${N8N_MAM_PASSWORD} - - PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true - - PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser - user: root + - NODES_EXCLUDE=[] + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_DATABASE=n8n + - DB_POSTGRESDB_USER=n8n + - DB_POSTGRESDB_PASSWORD=${N8N_DB_PASSWORD} + - DB_POSTGRESDB_SCHEMA=public volumes: - ${SERVICE_PATH}/n8n/data:/home/node/.n8n - entrypoint: /home/node/.n8n/script/entrypoint.sh labels: # Traefik - "traefik.enable=true" diff --git a/renovate.json b/renovate.json index 99295d0..215761a 100644 --- a/renovate.json +++ b/renovate.json @@ -57,5 +57,15 @@ "enabled": false } ] + }, + "docker": { + "enabled": true, + "managerFilePatterns": [ + "/(^|/)project/db/*\\Dockerfile$/", + "/(^|/)project/infrastructure/.*\\Dockerfile$/", + "/(^|/)project/media/.*\\Dockerfile$/", + "/(^|/)project/monitoring/.*\\Dockerfile$/", + "/(^|/)project/service/.*\\Dockerfile$/" + ] } }