From da957caf8119c20c239ada3a31cf33075febb14d Mon Sep 17 00:00:00 2001 From: Cassowary Date: Tue, 9 Apr 2024 09:31:12 -0700 Subject: [PATCH 1/4] Split postgres support into separate compose so that it defaults to sqlite instead --- .env.sample | 6 +++-- compose.postgres.yml | 57 ++++++++++++++++++++++++++++++++++++++++++++ compose.yml | 51 --------------------------------------- 3 files changed, 61 insertions(+), 53 deletions(-) create mode 100644 compose.postgres.yml diff --git a/.env.sample b/.env.sample index 97c4b7e..23c473f 100644 --- a/.env.sample +++ b/.env.sample @@ -6,8 +6,6 @@ DOMAIN=n8n.example.com #EXTRA_DOMAINS=', `www.n8n.example.com`' LETS_ENCRYPT_ENV=production -SECRET_DB_PASSWORD_VERSION=v1 - # Change to `true` to enable sending "anonymous" telemetry data to n8n # https://docs.n8n.io/reference/data-collection/ N8N_DIAGNOSTICS_ENABLED=false @@ -31,3 +29,7 @@ COMPOSE_FILE="compose.yml" #N8N_BASIC_AUTH_ACTIVE=true #N8N_BASIC_AUTH_USER=username #SECRET_ADMIN_PASSWORD_VERSION=v1 + +# Use Postgres instead of SQLite +#COMPOSE_FILE="$COMPOSE_FILE:compose.postgres.yml" +#SECRET_DB_PASSWORD_VERSION=v1 diff --git a/compose.postgres.yml b/compose.postgres.yml new file mode 100644 index 0000000..4285ded --- /dev/null +++ b/compose.postgres.yml @@ -0,0 +1,57 @@ +# Compose for PostGres mode instead of the default sqlite mode. +services: + app: + environment: + - DB_TYPE=postgresdb + - DB_POSTGRESDB_HOST=${STACK_NAME}_db + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_DATABASE=n8n + - DB_POSTGRESDB_USER=root + - DB_POSTGRESDB_PASSWORD_FILE=/run/secrets/db_password + depends_on: + - db + secrets: + - db_password + + db: + image: postgres:16 + networks: + - internal_network + environment: + - POSTGRES_USER=root + - POSTGRES_PASSWORD_FILE=/run/secrets/db_password + - POSTGRES_DB=n8n + configs: + - source: db_entrypoint + target: /docker-entrypoint.sh + mode: 0555 + secrets: + - db_password + healthcheck: + test: ["CMD", "pg_isready", "-U", "root", "-d", "n8n"] + volumes: + - 'postgresql_data:/var/lib/postgresql/data' + entrypoint: /docker-entrypoint.sh + deploy: + labels: + backupbot.backup: "true" + backupbot.backup.pre-hook: "bash -c 'PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /tmp/backup.sql'" + backupbot.backup.post-hook: "rm -rf /tmp/backup.sql" + backupbot.backup.path: "/tmp/backup.sql" + +secrets: + # db_non_root_password: + # external: true + # name: ${STACK_NAME}_db_non_root_password_${SECRET_DB_NON_ROOT_PASSWORD_VERSION} + db_password: + external: true + name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION} + +volumes: + postgresql_data: + +configs: + db_entrypoint: + name: ${STACK_NAME}_db_entrypoint_${DB_ENTRYPOINT_VERSION} + file: entrypoint.postgres.sh.tmpl + template_driver: golang diff --git a/compose.yml b/compose.yml index e57a5f2..746e010 100644 --- a/compose.yml +++ b/compose.yml @@ -5,27 +5,17 @@ services: app: image: n8nio/n8n:0.237.0 environment: - - DB_TYPE=postgresdb - - DB_POSTGRESDB_HOST=${STACK_NAME}_db - - DB_POSTGRESDB_PORT=5432 - - DB_POSTGRESDB_DATABASE=n8n - - DB_POSTGRESDB_USER=root - - DB_POSTGRESDB_PASSWORD_FILE=/run/secrets/db_password - N8N_PERSONALIZATION_ENABLED - N8N_DIAGNOSTICS_ENABLED - N8N_USER_MANAGEMENT_DISABLED - N8N_BASIC_AUTH_ACTIVE=false - WEBHOOK_URL=https://${DOMAIN} - NODE_FUNCTION_ALLOW_EXTERNAL=moment - depends_on: - - db networks: - proxy - internal_network volumes: - n8n:/home/node/.n8n - secrets: - - db_password deploy: update_config: failure_action: rollback @@ -44,51 +34,10 @@ services: - "backupbot.backup=true" - "backupbot.backup.path=/home/node/.n8n" - db: - image: postgres:16 - networks: - - internal_network - environment: - - POSTGRES_USER=root - - POSTGRES_PASSWORD_FILE=/run/secrets/db_password - - POSTGRES_DB=n8n - configs: - - source: db_entrypoint - target: /docker-entrypoint.sh - mode: 0555 - secrets: - - db_password - healthcheck: - test: ["CMD", "pg_isready", "-U", "root", "-d", "n8n"] - volumes: - - 'postgresql_data:/var/lib/postgresql/data' - entrypoint: /docker-entrypoint.sh - deploy: - labels: - backupbot.backup: "true" - backupbot.backup.pre-hook: "bash -c 'PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /tmp/backup.sql'" - backupbot.backup.post-hook: "rm -rf /tmp/backup.sql" - backupbot.backup.path: "/tmp/backup.sql" - -secrets: - # db_non_root_password: - # external: true - # name: ${STACK_NAME}_db_non_root_password_${SECRET_DB_NON_ROOT_PASSWORD_VERSION} - db_password: - external: true - name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION} - volumes: n8n: - postgresql_data: networks: proxy: external: true internal_network: - -configs: - db_entrypoint: - name: ${STACK_NAME}_db_entrypoint_${DB_ENTRYPOINT_VERSION} - file: entrypoint.postgres.sh.tmpl - template_driver: golang -- 2.49.0 From 7f5744f02e8a33b61f29b432763fda7b7d658ade Mon Sep 17 00:00:00 2001 From: Cassowary Date: Tue, 9 Apr 2024 09:32:28 -0700 Subject: [PATCH 2/4] Remove stray swp file --- .env.sample.swp | Bin 12288 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .env.sample.swp diff --git a/.env.sample.swp b/.env.sample.swp deleted file mode 100644 index 99af52ca0e862bb669f7411cd737a48e516b96c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2J#W)M7=W+Llp;W4Lq~$trHNZuN~H|0V_Hj%6UA$3%+wp7myg} z%pWKNKZTV6{s1iOY6s_f#WJ6H;PyB z&98i7e{YJUX6_sZ6N;DTxb8)2^-B4a$68r-rKONX7F&*#BPW+tVkynyEoF&$VKuqf zZYoxca(<4$cnKOn17{nkblRAoB=_#ljbHV8?KZuBZT0MXa1{-p0W^RH&;S}h184vZ zpn?C&fF4bdm(bCr!>(=}juU^3ho?B80W^RH&;S}h184vZpaC?12G9T+Km!-h080od zE)y~_3B|+z|3}~dKc)!z4txPV10R5Q0Bj2&uYn;j04VV73L&3>kH8+lfdue?Wndck z1@V6Z?}4|#KJW&30@y$u7}szC9b(C701co4G=K)s02)98XaEgd5CiqVb^2}?+3k+! zM?E_T9(McfXwB^hUe|AJ&yl)6??;Pv;5m`K8ZJkxf!l9Yu;p2>f}dKoozPozTe_@Z z&FOY}-N20=cq?wJcIWu%LM)4sRJ^&#R2H*J51YG1UL$q7XeOwcfzKk7+a!!Swr?-F z9oG+|winooD{i}$vRpwH+RhZ)%sDkh(Siv!-~|_&niM(LJl~x$YiX6!RF*Udx)Awz zG5@MfDS1>C+ypT)F`&9+Jk7Qm5Nd~&N#mf>li`k<8@EJE6Fm^x_3ah!u^ocg$n{V5 z;0&1XC7-wr4N- z-5~Uw;8dQW)+4oGS&58Q6SkT+GijAP Date: Tue, 9 Apr 2024 09:40:40 -0700 Subject: [PATCH 3/4] Fix version in compose.postgres.yml --- compose.postgres.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compose.postgres.yml b/compose.postgres.yml index 4285ded..44bb471 100644 --- a/compose.postgres.yml +++ b/compose.postgres.yml @@ -1,3 +1,6 @@ +--- +version: '3.8' + # Compose for PostGres mode instead of the default sqlite mode. services: app: -- 2.49.0 From d450ef32f0672edfdccb4579c51a46a2c5cba92f Mon Sep 17 00:00:00 2001 From: Cassowary Date: Thu, 11 Apr 2024 13:48:15 -0700 Subject: [PATCH 4/4] Add release notes --- release/next | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 release/next diff --git a/release/next b/release/next new file mode 100644 index 0000000..713885e --- /dev/null +++ b/release/next @@ -0,0 +1,9 @@ +ALERTA ALERTA + +N8N recipe is switching from deploying a PostgreSQL and setting it as the database to using the +built-in SQLite database instead. PostgreSQL can still be enabled, see .env.sample for the +lines to add to your configuration to enable it (should retain data that was in Postgres). + +There is no clean migration path between sqlite and postgres. Committing to one pretty much +sticks you to that one (there are hacks but it is involved and incomplete). + -- 2.49.0