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

隱私政策

要瞭解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月30日 星期日

投資-202512

投資-202512

2025年11月台股呈現「先急殺後強彈」的V型反轉格局

指數表現: 11月初,市場延續了對AI伺服器需求強勁的樂觀預期。11月3日,指數開高於28,253.53點,並在盤中一度衝高至28,494.99點。11月中旬面臨高檔修正,11月21日重挫至波段低點26,435點。創下了台股歷史上第六大單日跌點紀錄。指數一舉摜破月線與季線支撐,市場氣氛極度悲觀。隨後受美股帶動強勢反彈,月底連日大漲,11月28日收在月内最高點27,626點。全月波動幅度逾1,200點,月線收紅。站回多條短期均線之上。

法人成交量: 成交量能維持高檔,日均量約在4,900億至6,000億元之間。外資操作劇烈,中旬單日曾出現逾900億元的大幅賣超(11/21),但下旬隨美股回穩轉為買超(如11/27買超134億元),是推升月底行情的關鍵。外資11月全月累計賣超金額約為 新台幣 3,748 億元。投信持續買超。自營商月底轉大買 (單日+117億)

台積電表現: 11月月初開盤1420,月中跌到1375元,隨後回升至高點1455元,最後以1440元收盤。不僅收復失土,更領軍指數創高,維持千元之上強勢整理。

台幣匯率: 11月匯率波動主要受外資進出影響。中旬因外資大舉匯出而走貶,下旬隨著外資回補及美元指數震盪,台幣呈現止貶回升態勢。全月重貶約 6.59角,整月區間約為31.14~31.45元。

熱門產業: 資金高度集中於AI伺服器供應鏈及大型權值電子股,為本波反彈的領頭羊;此外,受惠年底消費旺季預期,部分航運與傳產股亦有表現。

美國三大指數:
11月美股呈現「道瓊強、那指弱」的分化格局。道瓊工業指數維持強勢,
那斯達克指數終止連漲,11月下跌1.5%。

#以上內容使用gemini pro整理產出。 

個人投資
11月份在台股維持定期扣款,下跌期間手動加碼市值型及主動型ETF。
今年高股息ETF表現不如預期,將思考明年是否調整方向。
目標配置市值型ETF 50%+高股息ETF 20%+債ETF 20%+主動式ETF 10%

實際配置市值型ETF 57.39%+高股息ETF 21.29 %+債ETF 17.65 %+主動式ETF 3.67 %
總投入金額 267068
總市值 336278
20251201-01
配置
20251201-02




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月23日 星期日

Proxmox VE TASK ERROR: org.freedesktop.DBus.Error.NoServer

Proxmox VE TASK ERROR: org.freedesktop.DBus.Error.NoServer

主機在異常斷電後,Proxmox VE 9.0.11啟動vm過程出現以下錯誤。

TASK ERROR: org.freedesktop.DBus.Error.NoServer: Failed to connect to socket /run/dbus/system_bus_socket: Connection refused。

所有vm皆無法啟動
pve9-dbus-error-01

TASK訊息
pve9-dbus-error-02

問題檢查

系統檢查dbus服務

執行 systemctl status dbus,確認 dbus-daemon 沒有啟動,有異常訊息。
手動啟動 dbus,systemctl restart dbus,dbus-daemon 無法啟動。
pve9-dbus-error-04

檢查異常訊息
2025-11-24T12:35:49.589109+08:00 pve9 (s-daemon)[12199]: dbus.service: Unable to locate executable '/usr/bin/dbus-daemon': Permission denied
2025-11-24T12:35:49.589363+08:00 pve9 (s-daemon)[12199]: dbus.service: Failed at step EXEC spawning /usr/bin/dbus-daemon: Permission denied
2025-11-24T12:35:49.591706+08:00 pve9 systemd[1]: dbus.service: Main process exited, code=exited, status=203/EXEC
2025-11-24T12:35:49.592013+08:00 pve9 systemd[1]: dbus.service: Failed with result 'exit-code'.
2025-11-24T12:35:49.592764+08:00 pve9 systemd[1]: Failed to start dbus.service - D-Bus System Message Bus.

pve9-dbus-error-03

檢查相關權限都正常,重新啟動服務都無法正常。
ls -l /usr/bin/dbus-daemon

重新安裝 dbus 套件

apt install --reinstall dbus dbus-daemon

pve9-dbus-error-05


重新啟動 dbus,服務就正常。
pve9-dbus-error-06

紀錄修復過程。

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
---