顯示具有 n8n 標籤的文章。 顯示所有文章
顯示具有 n8n 標籤的文章。 顯示所有文章

2025年12月2日 星期二

n8n Optingout of data collection

n8n Opting out of data collection

n8n資料收集

依據官網文件Data collection,自建n8n平台在預設情況下,系統會收集部分使用情況和效能數據,自動將平台資料傳送到n8n.io/n8n.cloud伺服器。以幫助診斷問題並改善平臺。
n8n伺服器也會通知使用者有關n8n可用更新、工作流程範本和診斷資訊。
大多數資料會在生成事件發生時發送到n8n。工作流執行計數和實例心跳信號會定期每6小時發送一次。
n8n說明將保持自建平台資料的匿名性,並避免收集敏感性資料。
使用者如果不想提供資料給n8n可以參考官方文件Isolate n8n,設定參數將n8n隔離。

隔離n8n

參考官方文件Isolate n8n,設定以下2組參數來停止傳送資料給n8n伺服器

取消自建n8n平台連接到n8n服務器:

N8N_DIAGNOSTICS_ENABLED=false
停止向n8n伺服器發送遙測資料。
N8N_VERSION_NOTIFICATIONS_ENABLED=false
停止n8n檢查新版本資訊。
N8N_TEMPLATES_ENABLED=false
停用templates功能(阻止後台健康檢查呼叫)。

取消設置n8n的診斷配置:

EXTERNAL_FRONTEND_HOOKS_URLS=
設為空值將阻止n8n從n8n伺服器載入預設web_hook_urls(其中包含遙測功能)。
N8N_DIAGNOSTICS_CONFIG_FRONTEND=
設為空值會覆蓋前端的預設遙測配置。
N8N_DIAGNOSTICS_CONFIG_BACKEND=
設為空值會覆蓋預設的伺服器端遙測配置。

另外設定以下參數將阻止n8n獲取引導提示。
N8N_ONBOARDING_FLOW_DISABLED=true

參數設定

在docker-compose.yml增加以下參數,停止資料傳送
---
# prevent your n8n instance from connecting to n8n's servers
- N8N_DIAGNOSTICS_ENABLED=false
- N8N_VERSION_NOTIFICATIONS_ENABLED=false
- N8N_TEMPLATES_ENABLED=false

# Unset n8n's diagnostics configuration
- EXTERNAL_FRONTEND_HOOKS_URLS=
- N8N_DIAGNOSTICS_CONFIG_FRONTEND=
- N8N_DIAGNOSTICS_CONFIG_BACKEND=

- N8N_ONBOARDING_FLOW_DISABLED=true
---
其它參數也可以參考Deployment environment variables

後續事項

20251203

1.要先設定N8N_DIAGNOSTICS_ENABLED=false,下面2項參數才可以設定,否則會有錯誤訊息產生。
   - N8N_DIAGNOSTICS_CONFIG_FRONTEND=
   - N8N_DIAGNOSTICS_CONFIG_BACKEND=
訊息內容
Diagnostics backend config is invalid
Diagnostics frontend config is invalid

2.當n8n版本太舊,會出現以下訊息。看來太舊的資料,n8n 也不要。
訊息內容
Error tracking disabled because this release is older than 6 weeks.

Image-20251203-2-error

20251210

參考Deployment environment variables文件中提到,設定N8N_DIAGNOSTICS_ENABLED=false,在Code node節點無法啟用Ask AI功能。不確定是指什麼功能,後續再確認。看來n8n很需要資料。

 if you set this to false, you can't enable Ask AI in the Code node.
 
20251210-askai



隱私政策

要瞭解n8n如何存儲和處理這些資訊,請參考官方隱私政策Privacy,以下為列出部分內容。
除了自建n8n平台外,使用n8n cloud也會收集資料。

自建n8n的資料收集

n8n收集的內容

-失敗執行的錯誤代碼和消息(不包括任何有效載荷資料,且不適用於自訂節點)
-應用崩潰和API問題的錯誤報告
-工作流的圖形(使用的節點類型及其連接方式)
-From node parameters:
   -節點設置的'resource'和'operation'(如果適用)
   -對於HTTP請求節點,功能變數名稱、路徑和方法(個人資料匿名化處理)
-Data around workflow executions:
   -狀態
   -執行運行用戶的用戶ID
   -工作流首次從外部源載入資料時
   -首個成功運行的(非手動)生產工作流
-如果指定了webhook調用的功能變數名稱(不包括子功能變數名稱)。
-關於如何使用使用者介面的詳細資訊(例如導航、節點面板搜索)

-Diagnostic information:
   -n8n 版本
   -Selected settings:
     -DB_TYPE
     -N8N_VERSION_NOTIFICATIONS_ENABLED
     -N8N_DISABLE_PRODUCTION_MAIN_PROCESS
     -執行變數
   -作業系統、記憶體和CPU
   -匿名實例ID
   -IP地址

n8n 不收集的內容

n8n不會收集私人或敏感資訊,例如:
-個人身份資訊(IP位址除外)
-憑證資訊
-節點參數(不包括'resource'和'operation')
-執行資料
-敏感設置(例如端點、埠、資料庫連接、用戶名/密碼)
-錯誤負載

更詳細的資料在官網文件Privacy

2025年11月26日 星期三

n8n Environment variables-Executions

n8n Environment variables-Executions

在n8n平台不論手動或自動執行workflow,都會將執行紀錄紀錄在資料庫。
隨著使用時間增加,n8n資料庫可能會不斷增長並影響執行效能。
為避免這種情況,n8n建議不要保存不必要的數據,並啟用對舊資料的清理。
依據官網文件
Executions environment variables
Execution data
進行設定。

主機環境

Ubuntu 24.04.3 LTS
Docker version v28.5.1 
Docker compose version v2.40.3 
n8n Community Edition version 1.118.1 (n8nio/n8n)

設定過程

1.手動刪除

檢查執行紀錄
executions-01

手動刪除紀錄
executions-02

2.設定減少儲存資料

設定資料保存條件,官網提供只儲存error 執行的設定

參數說明
# 儲存結束於錯誤的執行
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# 不要保存成功执行
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# 不要為每次執行保存節點進度
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# 不要保存手動啟動的執行
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false

於docker-compose.yml增加以下設定
---
# Reduce saved data
# Save executions ending in errors
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# Don't save successful executions
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# Don't save node progress for each execution
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# Don't save manually launched executions
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
---
以上是全平台的設定,也可以參考工作流程設置, 針對單一工作流程配置這些設定。

3.定期刪除資料

n8n預設啟用executions pruning,會定期刪除已完成的執行及其執行資料和二進位資料。出於效能考慮,刪除會先標記要刪除的目標,然後再將其永久移除。

參數說明
# 啟用executions pruning
- EXECUTIONS_DATA_PRUNE=true
# 執行完成時間超過設定的時間,n8n會刪除超過設定時間的資料。預設值:336小時,單位為小時。
- EXECUTIONS_DATA_MAX_AGE=336
# 執行總數超過 EXECUTIONS_DATA_PRUNE_MAX_COUNT 設定值,n8n會從最早到最新刪除執行記錄。預設值:10000。如果設為0則為無限制。
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000

記住事項:
a.處於new、running或 waiting 狀態的執行不符合刪除條件。
b.帶有註釋的執行(例如,帶有標籤或評分的執行)永遠不會被刪除。
C.定時刪除時,設定參數EXECUTIONS_DATA_HARD_DELETE_BUFFER 安全緩衝期(預設值:1小時),以確保在使用者建置或偵錯工作流程時,最近的資料仍然可用。

可以自行設定EXECUTIONS_DATA_MAX_AGE及EXECUTIONS_DATA_PRUNE_MAX_COUNT的數字,來保持資料完整

於docker-compose.yml增加以下設定
---
# Clear EXECUTIONS_DATA
# Enable executions pruning
- EXECUTIONS_DATA_PRUNE=true
# How old (hours) a finished execution must be to qualify for soft-deletion
- EXECUTIONS_DATA_MAX_AGE=168
# Max number of finished executions to keep. 
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000
---

docker-compose.yml
executions-03

注意項目

官方文件提到,如果使用預設SQLite資料庫執行n8n,則任何已清理資料的磁碟空間不會自動釋放,而是會重新用於後續執行的資料。
若要釋放此空間,請設定環境變數(DB_SQLITE_VACUUM_ON_STARTUP=true)或手動執行 VACUUM 操作。

後續事項

20251203

1.設定EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false,手動執行工作流時出現錯誤時無法自動停止,須要手動停止。
n8n會出現以下訊息。
Attempt to read execution was blocked due to insufficient permissions
Unable to stop execution "2070" as it was not found
Image-20251203-5-error

AI協助提供以下答案:
EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS設為false,手動執行只會跑邏輯,不會在DB存完整的執行紀錄。這會導致前端或 API 在讀取/停止該執行時找不到對應資料,就可能會出現的兩個錯誤訊息。

Attempt to read execution was blocked due to insufficient permissions 錯誤
在UI在點「測試工作流程」或打開節點執行結果時,會去讀對應的 execution 資料;若該 ID 在 DB 裡沒有對應內容(因為手動執行未被儲存或已被清除),就可能出現「Attempt to read execution was blocked due to insufficient permissions」這類訊息,實際上常見原因之一是 execution record 不存在或不完整,而非真的RBAC權限錯誤。​

若系統在啟動時偵測到「有execution row,但缺少 executionData」的異常,也會在 log 裡報類似錯誤,並且後續對這些 execution 的讀取會被阻擋,避免使用者看到不一致資料。​

Unable to stop execution "2070" as it was not found 錯誤
停止執行(UI的Stop按鈕或 POST /executions/:id/stop)會先查詢該execution ID,在DB或 queue 裡找對應的執行紀錄;如果找不到,就會回傳「execution not found」或類似訊息。​

在手動執行不儲存、或該執行資料被 prune / hard delete 之後,前端仍保留舊的 execution ID,這時去 Stop 就會得到「Unable to stop execution '2070' as it was not found」這種錯誤。

建議保留 EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true,方便在UI中查看「測試執行」的歷史、debug 節點輸出、或隨時手動Stop測試流程,並改用 EXECUTIONS_DATA_PRUNE、EXECUTIONS_DATA_MAX_AGE 等變數來控管DB大小。


2025年11月25日 星期二

Connect to the n8n PostgreSQL database

Connect to the n8n PostgreSQL database 

在使用docker compose安裝n8n+PostgreSQL,PostgreSQL是用container啟動服務,無法直接連接PostgreSQL。要直接連接PostgreSQL進行資料管理有以下2個方法。

主機環境

Ubuntu 24.04.3 LTS
Docker version v28.5.1
Docker compose version v2.40.3
n8n Community Edition version 1.118.1 (n8nio/n8n) PostgreSQL version 17 (PostgreSQL Docker Community)
Admer version 5.4.1
HeidiSQL version 12.12.0.7122

安裝過程

1.使用Admer 

Adminer 是以PHP撰寫的資料庫管理工具,支援多種資料庫系統,提供簡潔直觀的網頁介面,方便用戶連線和管理PostgreSQL資料庫。
參考Postgre資料,修改原有docker-compose.yml,增加admer服務,n8n啟動時同時啟動。
---
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
---
http://主機IP:8080,伺服器填入postgres,再填入env設定的帳號、密碼及資料庫。

adminer-01

adminer-02


2.使用HeidiSQL

HeidiSQL 是Windows平台上免費且開源的資料庫管理工具,支援多種資料庫系統,透過直觀的圖形介面,讓用戶能輕鬆連接並管理 PostgreSQL 資料庫。
修改原有docker-compose.yml,增加postgres的對外port
---
services:
  postgres:
...
    ports:
      - 5432:5432
---

在windows 11執行程式,先填入主機IP,再填入env設定的帳號、密碼及資料庫。
heildiSQL-01


heildiSQL-02


3.docker-compose.yml

sql-fix-01

先將2個方法都先打開測試,後面再來決定方法。
sql-fix-02


2025年11月10日 星期一

n8n Environment variables

n8n Environment variables

在建置n8n平台除了在yml設定的參數後,在啟動過程系統會有建議的參數,可以依需求修改docker-compose.yml。

Environment variables-01

There are deprecations related to your environment variables. Please take the recommended actions to update your configuration:
- N8N_BLOCK_ENV_ACCESS_IN_NODE -> The default value of N8N_BLOCK_ENV_ACCESS_IN_NODE will be changed from false to true in a future version. If you need to access environment variables from the Code Node or from expressions, please set N8N_BLOCK_ENV_ACCESS_IN_NODE=false. Learn more: https://docs.n8n.io/hosting/configuration/environment-variables/security/

- N8N_GIT_NODE_DISABLE_BARE_REPOS -> Support for bare repositories in the Git Node will be removed in a future version due to security concerns. If you are not using bare repositories in the Git Node, please set N8N_GIT_NODE_DISABLE_BARE_REPOS=true. Learn more: https://docs.n8n.io/hosting/configuration/environment-variables/security/

環境變數說明

在n8n Community Edition version 1.118.1
docker-compose.yml使用的參數
GENERIC_TIMEZONE=Asia/Taipei
GENERIC_TIMEZONE環境變數為面向調度的節點(如 Schedule Trigger node)設定正確的時區
TZ=Asia/Taipei
TZ環境變數設定系統時區,以控制date等腳本和指令回傳的內容
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
對n8n設定檔強制執行安全文件權限
N8N_RUNNERS_ENABLED=true
啟用任務運行器,在n8n中執行任務的建議方式
N8N_BLOCK_ENV_ACCESS_IN_NODE=true
封鎖 Code Node 與 Expression 讀取環境變數(.env)。
N8N_GIT_NODE_DISABLE_BARE_REPOS=true
禁止 Git Node 使用bare repository,只允許正常(有工作目錄的)Git repository,防止 Git Node 可能的安全風險
N8N_SECURE_COOKIE=false
停用TLS/HTTPS,供測試環境使用

使用PostgreSQL的參數,使用docker compse可寫於.env DB_TYPE=postgresdb DB_POSTGRESDB_HOST=postgres DB_POSTGRESDB_PORT=5432 DB_POSTGRESDB_DATABASE=n8n DB_POSTGRESDB_USER=n8n

官方文件有提供不同的環境參數可以參考。
https://docs.n8n.io/hosting/configuration/environment-variables/
 

n8n install local with docker compose ( PostgreSQL)

n8n install local with docker compose ( PostgreSQL )

前篇n8n平台使用SQLite 存放憑證、歷史執行紀錄和工作流程的database。參考官網也可以使用PostgreSQL使用database,根據官方githubPostgreSQL資料修改為個人環境使用。

主機環境

Ubuntu 24.04.3 LTS Docker version v28.5.1 Docker compose version v2.40.3 n8n Community Edition version 1.116.2 (1.118.1) (n8nio/n8n) PostgreSQL version 17 (PostgreSQL Docker Community)

安裝過程

1.使用者目錄建立n8n-postgres、n8n_data目錄及.env設定檔

將n8n_data目錄掛載到/home/node/.n8n目錄,當container重啟動後資料可以保留。 mkdir n8n-postgres/n8n_data/ -p 新建.env設定檔存放相關參數 (PostgreSQL user and password ),執行docker compose會自動帶入。 vim n8n-postgres/.env --- POSTGRES_USER=changeUser POSTGRES_PASSWORD=changePassword POSTGRES_DB=n8n POSTGRES_NON_ROOT_USER=changeUser POSTGRES_NON_ROOT_PASSWORD=changePassword ---
postgres-env

建立docker-compose.yml cd n8n-postgres vim docker-compose.yml --- services: n8n: image: n8nio/n8n:1.116.2 container_name: n8n ports: - "5678:5678" environment: - GENERIC_TIMEZONE=Asia/Taipei - TZ=Asia/Taipei - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true - N8N_RUNNERS_ENABLED=true - N8N_SECURE_COOKIE=false - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=${POSTGRES_DB} - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER} - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD} links: - postgres volumes: - ./n8n_data:/home/node/.n8n depends_on: postgres: condition: service_healthy postgres: image: postgres:17 container_name: postgres environment: - POSTGRES_USER - POSTGRES_PASSWORD - POSTGRES_DB - POSTGRES_NON_ROOT_USER - POSTGRES_NON_ROOT_PASSWORD volumes: - ./db_data:/var/lib/postgresql/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 volumes: n8n_data: db_data: ---
postgres-yml

init-data.sh放在同一目錄,啟動才不會出錯。

2.啟動服務

啟動n8n、PostgreSQL服務 sudo docker compose up -d 啟動過程會依n8n、PostgreSQL啟動 檢查n8n、PostgreSQL服務 sudo docker compose ps -a ls -la
ss -ntlp
postgres-up

3.問題解決

原本使用n8n最新版本1.118.1,出現Connection lost無法連線PostgreSQL的訊息 You have a connection issue or the server is down. n8n should reconnect automatically once the issue is resolved. 查詢網站無法有效解決。後來發現n8n 版本1.116.2可以正常使用,先用此版本進行測試。

20251107 經過測試發現是browser問題,將browser (chrom/firefox)更新到最新版,在頁面操作都可以正常顯示。

後續事項

20251127 

新增環境變數
---
# Reduce saved data
# Save executions ending in errors
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# Don't save successful executions
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# Don't save node progress for each execution
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# Don't save manually launched executions
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false

# Enable executions pruning,clear executions_data
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=96
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000
---

2025年11月4日 星期二

n8n install local with docker compose (SQLITE)

n8n install local with docker compose (SQLITE)

本地主機搭建n8n測試環境,參考官網文件將原來的docker指令修改為docker compse啟動服務

docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
 -e TZ="<YOUR_TIMEZONE>" \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -e N8N_RUNNERS_ENABLED=true \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

主機環境

Ubuntu 24.04.3 LTS
Docker version v28.5.1
Docker compose version v2.40.3
n8n Community Edition version 1.118.1 (n8nio/n8n)

安裝過程

1.使用者目錄建立n8n及n8n_data目錄

預計將n8n_data目錄掛載到/home/node/.n8n目錄,當container重啟動後資料可以保留。
mkdir n8n/n8n_data/ -p

建立docker-compose.yml
cd n8n
vim docker-compose.yml
---
services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Asia/Taipei
      - TZ=Asia/Taipei
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_RUNNERS_ENABLED=true
    volumes:
      - ./n8n_data:/home/node/.n8n 
volumes:
  n8n_data:
---

2.環境變數說明

GENERIC_TIMEZONE=Asia/Taipei
GENERIC_TIMEZONE環境變數為面向調度的節點(如 Schedule Trigger node)設定正確的時區
TZ=Asia/Taipei
TZ環境變數設定系統時區,以控制date等腳本和指令回傳的內容
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
對n8n設定檔強制執行安全文件權限
N8N_RUNNERS_ENABLED=true
啟用任務運行器,在n8n中執行任務的建議方式

3.啟動n8n服務

sudo docker compose up -d
local-install-05
檢查n8n服務
sudo docker compose ps -a
ss -ntlp
ls -l n8n_data/
local-install-06
local-install-07
過程已直接安裝Sqlite資料庫,資料庫位置在container的 ~/.n8n/database.sqlite

4.進入登入頁面

登入時如果出現此畫面是本機沒有申請ssl方式連線,需增加N8N_SECURE_COOKIE=false參數,方便測試使用
local-install-08
修改docker-compose.yml
重新啟動n8n服務
sudo docker compose down
sudo docker compose up -d
local-install-09

成功看到註冊面,直接設定帳號資料,密碼要8位數以上,要有數字和大寫字母。
local-install-10
如果要使用Community Edition 功能,請輸入正確的email方便收到註冊碼。

5.登入畫面

此畫面可以直接按get started跳過。
local-install-11
申請Community Edition License key,填入email就可以收到
local-install-12
n8n free license key mail
local-install-14
未輸入 license key
local-install-15
輸入 license key啟動後
local-install-16


註冊後即可解鎖社群版(Community Edition) 的以下功能:
Folders: Organize your workflows into tidy folders
資料夾 :將您的工作流程整理到整齊的資料夾中
Debug in editor: Copy and pin execution data when working on a workflow
在編輯器中偵錯 :在處理工作流程時複製並固定執行數據
Custom execution data: Save, find, and annotate execution metadata
自訂執行資料 :儲存、尋找和註解執行元數據

6.影片



後續事項

20251127 

新增環境變數
---
# Reduce saved data
# Save executions ending in errors
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# Don't save successful executions
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# Don't save node progress for each execution
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# Don't save manually launched executions
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false

# Enable executions pruning,clear executions_data
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=96
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000

# Clear SQLITE database
- DB_SQLITE_VACUUM_ON_STARTUP=true
---

20251201

啟動過程出現以下訊息
There is a deprecation related to your environment variables. Please take the recommended actions to update your configuration:
 - DB_SQLITE_POOL_SIZE -> Running SQLite without a pool of read connections is deprecated. Please set `DB_SQLITE_POOL_SIZE` to a value higher than zero. See: https://docs.n8n.io/hosting/configuration/environment-variables/database/#sqlite

20251201-1-sqlite-error

您的環境變數有棄用風險。請依照以下建議更新您的配置:
- DB_SQLITE_POOL_SIZE -> 在沒有讀取連線池的情況下執行 SQLite 已被棄用。請將 `DB_SQLITE_POOL_SIZE` 設定為大於零的值。

依官方說明環境變數增加以下設定。
---
- DB_SQLITE_POOL_SIZE=1
---