工廠裡的輸送帶,貨品從入口進來,經過幾個站點加工,最後從出口送出去。n8n 做的事,就是把這條輸送帶搬到畫布上。某件事一發生,資料就依序經過幾道處理,最後送到你指定的地方,每一站是一個方塊,用線連起來,整條流程就能自己重複運轉。
多數人聽到自動化工具,會直覺想到「租一個雲端服務來用」。n8n 的特別之處在於,同一套軟體既可以用 n8n 代管的雲端版,也能裝在自己的電腦或主機上,流程和資料都留在自己手上。代價是自架得先準備環境,而第一次碰 Docker、埠號和資料卷,正是新手最容易停下來的地方。
讀完這篇,你可以在自己的電腦上把 n8n 跑起來,做出一條每天自動抓取台北氣溫、再依溫度高低送出不同訊息的流程。不過在動手之前,得先弄清楚畫布上的每個方塊各自在做什麼,後面設定時才不會迷路。
n8n 是什麼?
n8n 是一套工作流程自動化工具。n8n 的文件首頁把它定位成結合 AI 功能與商業流程自動化、採公平程式碼(fair-code)授權的工具。簡單來說,你在畫布上放幾個方塊、用線連起來,它就會照著「某件事發生,資料經過幾道處理,最後送到某個地方」這條路,自己一次又一次跑下去。
它剛好站在兩種做法之間。全程拖拉的簡易工具上手快,但遇到特殊需求就沒有地方可以改;純寫程式彈性最大,卻連一件小事都要從頭寫起。n8n 讓大部分步驟靠節點設定完成,真的需要時,再在節點裡寫 JavaScript 或 Python,所以不會寫程式也能上手,會寫的人也不會被限制住。能串接的對象涵蓋任何提供 API 的服務,另外還內建大量整合節點和 AI 節點。
另一個差異是部署的彈性。同一套 n8n 可以交給 n8n 代管,也可以自己架;自架的各種版本共用同一個核心產品,只要沒放授權金鑰,運行的就是免費的 Community edition。這也是不少重視資料留在自己手上的人,會優先考慮 n8n 的原因。
節點與連線組成的工作流程
畫布上每一個方塊叫做節點(node)。n8n 的文件把節點定義成「取得資料的入口、處理資料的功能,或送出資料的出口」,換句話說,每個節點都扮演三種角色之一:取得資料、處理資料、送出資料。
連線則代表資料的流向,前一個節點的輸出,會交給下一個節點當輸入。一整張畫布上的節點和連線合起來,就是一個工作流程(workflow)。你可以把它想成一段接好的水管,水從進水口進來,經過濾水器,再從出水口流出,每個接頭只負責自己那一段。
n8n 還有一個很實用的設計,就是每個節點都能單獨測試,並且立刻看到它的輸出。在節點裡按 Execute step,n8n 會執行這個節點,以及提供它輸入資料所需的前面節點,不必等整條流程跑完,才發現哪一步的資料不對。後面做第一條流程時,這個動作會一直用到。
觸發節點負責啟動整條流程
流程需要一個起點。觸發節點(Trigger)會依外部事件或排程啟動整條流程,例如收到一筆新資料、到了每週一早上 9 點;其餘的節點屬於動作節點(Action),負責操作資料,或對外部系統執行某項工作。
n8n 啟動流程有兩條路。第一條是在編輯器按 Execute Workflow 手動執行,用來邊做邊測;第二條是把觸發節點放在第一個位置,由事件或排程自動啟動。手動執行只適合測試,想讓流程自己跑,靠的是觸發節點。
這個分工在後面會反覆出現,每次都是先用手動觸發把流程調到正確,再換成排程觸發,讓它真正上線。
公平程式碼授權下的使用範圍
常有人問,n8n 的免費版能不能拿到公司使用。n8n 採用的是 Sustainable Use License,屬於公平程式碼模式,原始碼公開,但授權條款不像 MIT 那樣幾乎沒有限制。
依 n8n 原始碼倉庫的 LICENSE 檔,使用範圍限於自己內部的業務用途,或非商業、個人使用,也可以修改軟體;若要散布或提供給他人,只能免費且為非商業目的,並且不得更改或移除授權聲明。

n8n 的授權 FAQ 把界線講得更具體。在公司內部串接自己的流程、替客戶建置與維護流程並收取服務費,或讓 n8n 在自家產品背後當處理引擎,都在允許範圍內。不允許的做法包括:以代管服務的形式提供 n8n、讓客戶自己在上面建流程;讓外部使用者透過你的產品建立或設定流程;拿掉 n8n 的品牌後原樣提供給客戶。超出範圍的用途要另外洽談商業授權,例如把 n8n 的介面嵌進自家產品的 OEM 部署,就需要和 n8n 另簽商業協議。
n8n 雲端版與自架版的取捨
動手之前,先決定資料和機器要放在誰那邊。雲端版省事,自架版自由,兩邊各有代價。

選之前,先了解執行次數怎麼計算。在編輯器按 Execute Workflow 的手動測試不計次,只有由觸發、排程或輪詢自動啟動的正式執行,才會計入付費方案的執行額度。所以反覆測試流程,不用擔心把額度用光。
雲端版由 n8n 代管,試用期滿後工作區會刪除
雲端版由 n8n 全權代管,主機與維護都不用自己處理,也不需要技術背景,註冊後即開即用。想先試試看、不想碰伺服器的人,從這裡起步最輕鬆。
有兩件事容易漏看。目前 n8n 的說明是,新建的雲端試用期為 14 天,可以使用 Pro 方案的功能,執行上限為 1,000 次;期滿沒有升級,試用就會自動到期,工作區也會被刪除,不過到期後 90 天內,還能把自己的流程下載下來。方案條件會調整,實際內容以註冊時看到的頁面為準。
這篇後面的畫布操作,在雲端版和本機自架上完全一樣,所以先在雲端試用做出第一條流程也可以。n8n 自己的第一條流程教學,預設就是用雲端版示範,並附上自架版的對照做法。
自架版不收授權費,伺服器與更新自行負責
自架版的吸引力,在於不用付授權費,資料也留在自己手上。沒有放入授權金鑰時,n8n 就是免費的 Community edition,不會自動過期。
不過「免費」只限於 n8n 軟體本身。你需要一台持續開機的機器,可以是本機電腦拿來試玩,也可以是租用的主機長期運行;版本更新、備份和安全設定都由自己負責,電費與維運時間同樣是成本。n8n 的文件把自架列為需要技術能力的選項,並建議用在需要客製化的情境。
社群版沒有的功能與註冊後解鎖的部分
自架最常見的疑問,是免費版少了哪些功能。Community edition 幾乎包含所有功能,缺少的是偏團隊協作與企業管理的部分。團隊協作方面,有專案(把流程與憑證分給不同團隊管理)、流程與憑證共享(讓多人共用同一份設定)和 SSO(用公司帳號統一登入);工程管理方面,有 Git 版本控制、多環境,以及外部密鑰(把金鑰放在外部的密鑰管理服務,而不是存在 n8n 裡);維運規模方面,有日誌串流(把執行紀錄送到外部監控)、多主節點模式(多個主節點分擔負載)和二進位資料的外部儲存(檔案類資料不存在本機);另外還有自訂變數。個人和小團隊用到的機會不高,不需要為了它們放棄自架。

想多一點功能,可以用 email 免費註冊,註冊後的 Registered community edition 會解鎖三項:資料夾,用來把流程分門別類;編輯器內除錯,可以複製並固定執行資料,開發時不必每次都重新呼叫一次 API;自訂執行資料,能儲存、查找並註記每次執行的中繼資料。
註冊在 n8n 介面內就能完成。點左下角的三點圖示,進入 Settings 裡的 Usage and plan,選 Unlock,輸入 email 後按 Send me a free license key,授權金鑰就會寄到信箱;收到後點信裡的按鈕,或回到 Usage and plan 選 Enter activation key 輸入金鑰,就完成啟用。
試用、長期運行與資料不外流的起手式
把前面的取捨收成三種常見情境,起手式各不相同。只想試試看的人,可以用本機 Docker,或直接開雲端試用,兩者都不用長期投入。想讓流程 24 小時自己跑的人,需要的是一台不關機的機器,租用主機自架是常見做法。資料不能離開自己環境的人,自架是唯一的選項。
後面的操作都在本機 Docker 上進行;同一條流程搬到雲端版或租用的主機,畫布上的做法完全相同。網域和 SSL 的設定屬於上主機之後的另一件事,這裡不展開。
本機示範有一個限制,電腦一關機,或容器一停掉,n8n 就跟著停止,排程自然不會觸發。想讓排程穩定運作,就得處理這個限制,做法在介紹排程發佈時會說明。
自架前的環境準備與安裝方式
自架的第一個門檻是 Docker,n8n 多數的本機安裝路線都建立在它之上。n8n 的自架總覽頁列了三種本機安裝路線,另外還有 AWS、Azure、Google Cloud、DigitalOcean、Hetzner 等雲端平台的安裝選項。對剛入門的人來說,最省成本的做法是先在自己的電腦上跑起來,雲端主機之後再考慮。
Windows、macOS 與 Linux 的 Docker 前置安裝
Windows 要先安裝 Docker Desktop,根據 Docker 的 Windows 安裝文件,系統需要企業版、專業版或教育版的 Windows 10 22H2(build 19045),或 Windows 11 23H2(build 22631)以上。後端建議使用 WSL 2(需要 WSL 2.1.5 以上),也可以選 Hyper-V;兩種後端都要求 64 位元處理器(支援 SLAT)、至少 8GB RAM,並且在 BIOS 或 UEFI 開啟硬體虛擬化。
使用 Windows Home 版要多留意。Docker 文件目前列出的支援版本只有企業版、專業版與教育版,同時提醒 Home 版與教育版只能執行 Linux 容器。n8n 的映像檔本身就是 Linux 容器,這一點不成問題,但 Home 版不在支援清單上,安裝前請先對照 Docker 文件當下的系統需求。
後面的一行安裝腳本在 Windows 上另有條件,需要 WSL,並且在 Docker Desktop 啟用 WSL 2 整合;n8n 的文件也說明它不支援標準的命令提示字元和 PowerShell。macOS 安裝 Docker Desktop 即可,Linux 可以裝 Docker Desktop,或分別安裝 Docker Engine 與 Docker Compose。
Docker 裝好之後,開一個終端機,用這兩行指令驗證,兩者都有印出版本號,就代表環境到位:
docker --version
docker compose versionCode language: Bash (bash)
n8n 的三種本機安裝路線與 npm 的棄用預告
n8n 的自架總覽頁把三條本機路線的條件講得很清楚,整理如下:
| 路線 | 需要什麼 | 適合誰 |
|---|---|---|
| 一行安裝 | Linux 或 macOS、curl,並已安裝 Docker 與 Compose | 想以最少設定快速開箱 |
| Docker Compose | Docker 與 Docker Compose | 需要資料庫與附加服務的長期運行部署 |
| npm | Node.js | 本機開發或測試 |
npm 這條路目前還能用,它要求 Node.js 版本介於 20.19 與 24.x(含),也可以用 npx n8n 不安裝直接試跑。不過 n8n 的文件已經標明,下一個主要版本 n8n 3.0 將不再支援 npm 與 npx n8n 的安裝方式,建議改用 Docker Compose 或一行安裝。因此剛入門的人不必選這條路,以免之後還得搬家。
主線用的是 Docker。n8n 的 Docker 安裝頁建議多數自架需求採用 Docker,因為它提供乾淨、隔離的環境,能避開作業系統與工具之間的相容問題,資料庫和環境設定的管理也比較單純。不過這一頁已被 n8n 標為內容過時,目前推薦的安裝方式是 Docker Compose 與一行安裝,兩者底下跑的同樣是 Docker。接下來仍先用單一的 docker run 指令示範,原因是每個設定都直接寫在指令裡,資料卷、埠號、時區各自負責什麼一目了然;不想手動處理這些設定,可以直接改走下一節步驟三的一行安裝。
用 Docker 在本機啟動 n8n
安裝動作本身很短,但每個旗標都有它的理由,設錯的後果也各不相同。n8n 預設用 SQLite 資料庫,儲存憑證、過往執行紀錄與流程,檔案放在容器內的 /home/node/.n8n,所以資料卷掛得對不對,直接決定流程能不能留得下來。
步驟一,建立資料卷並啟動容器
先建立一個叫 n8n_data 的資料卷:
docker volume create n8n_dataCode language: Bash (bash)
接著啟動容器。n8n 的 Docker 安裝頁給的指令,加上台灣的時區後如下:
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Asia/Taipei" \
-e TZ="Asia/Taipei" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-v n8n_data:/home/node/.n8n \
n8nio/n8nCode language: Bash (bash)

反斜線換行只有 bash 系的終端機看得懂;在 Windows 的命令提示字元或 PowerShell,請把整段接成同一行再貼上。每個設定各自負責的事如下:
-it --rm:-it讓容器以互動式終端機在前景執行,--rm則表示容器停掉後,容器本身會被清掉。資料存在資料卷,不受影響。--name n8n:替容器取名,之後查看、停止、移除都靠這個名字。-p 5678:5678:把主機的 5678 埠對應到容器的 5678 埠,瀏覽器才連得進 n8n。-e GENERIC_TIMEZONE:設定 n8n 實例的時區,對排程類節點特別重要。它的預設值是 America/New_York,不改的話,後面設的每週一 9 點會依紐約時間計算。-e TZ:設定容器的系統時區,控制date這類指令回傳的時間。兩個時區變數都要填你所在地的時區,台灣就是Asia/Taipei。-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true:強制設定檔使用安全的檔案權限。-v n8n_data:/home/node/.n8n:把資料卷掛到容器內存放 n8n 資料的位置,容器重啟或換新映像檔後,流程依然在。
有兩個地方最常出狀況。第一個是忘了建資料卷、或漏掉 -v,這時 n8n 把資料寫在容器內部,容器一刪,流程和帳號全部消失。第二個是 5678 埠已被別的程式占用,啟動時會出現埠已被使用的錯誤,這時把 -p 左邊的數字換成沒人用的埠,例如 -p 5679:5678,之後瀏覽器就改開 5679。
這樣啟動屬於前景執行,終端機視窗一旦關掉,n8n 也跟著停止;要改成背景執行,得改用 -d 旗標,這點到排程那一節再處理。看到終端機印出編輯器可以連線的網址之後,就可以進行下一步。
步驟二,開啟本機網址並建立擁有者帳號
容器啟動後,用瀏覽器開啟 http://localhost:5678。第一次開啟時,n8n 會顯示註冊畫面,要求建立擁有者帳號。依 n8n 的使用者管理說明,密碼至少 8 個字元,且必須包含至少 1 個數字與 1 個大寫字母;填完按 Next,n8n 就會直接以新建的擁有者身分登入。
這個帳號只存在你自己的 n8n 裡(存放在本機預設的 SQLite 資料庫),跟 n8n 官網的帳號無關,也不會拿去登入別的服務。若畫面接著詢問要不要註冊免費的社群版授權(只需要 email),註不註冊都不影響後面的操作。登入之後,可能先看到一個歡迎畫面,選 Start from Scratch 即可;也可能直接進到 Overview 畫面,上面有 Create Workflow 按鈕,下一節就從這裡開始。
另外,舊教學常見的 N8N_BASIC_AUTH_* 變數,是舊版用來設定帳號密碼的做法。現行版本改成第一次開啟時建立擁有者帳號,照舊教學設定這些變數,結果會跟你看到的畫面對不上。
步驟三,改用一行安裝腳本的做法
不想記 docker run 的各種旗標,可以改用一行安裝腳本。它和步驟一、步驟二擇一即可,不用兩條都走。這條路限定在 Linux、macOS,以及 Windows 上的 WSL。
curl -fsSL https://get.n8n.io | shCode language: Bash (bash)
這條指令需要事先裝好 Docker,而且要有 docker compose v2 外掛,舊的獨立 docker-compose 執行檔不行。腳本會檢查 Docker,在目前目錄建立一個 n8n 資料夾,裡面放著 compose.yml、.env 和 searxng-settings.yml,再用內建的 SQLite 與沙箱服務把 n8n 啟動起來,預設網址同樣是 http://localhost:5678。第一次啟動需要一點時間,帳號建立的畫面和步驟二相同。
腳本還有幾個旗標:--version 顯示腳本版本,或指定要安裝的 n8n 版本;--no-start 只建立檔案、不啟動;--upgrade 更新現有的安裝;--help 列出所有選項。更新時則執行下面這行指令。
curl -fsSL https://get.n8n.io | sh -s -- --upgradeCode language: Bash (bash)
要完整移除,執行下面兩行即可。其中 -v 會把 n8n 的資料一併刪除,而且無法復原,動手前請先確認流程都不需要了:
docker compose -f ./n8n/compose.yml down -v
rm -rf ./n8nCode language: Bash (bash)
在畫布上做出第一條流程
第一條流程的成品共有五個環節,依序是手動觸發,接 HTTP Request 抓台北目前氣溫,再用 Edit Fields 只留下需要的欄位,由 If 節點依氣溫分成兩條路,最後兩條路各接一個 Edit Fields 產生不同的訊息。n8n 自己的第一條流程教學用的是 NASA 太陽閃焰資料,需要先到信箱收 API 金鑰;這裡改用不需要金鑰的公開氣象 API,從頭到尾只靠本機的 n8n 就能做完。

氣象資料來自 Open-Meteo。Open-Meteo 的說明文件指出,非商業使用不需要 API 金鑰;這裡只做示範用途,若要商用,請看該服務的條款。也因為不需要金鑰,這條流程用不到憑證。
流程裡會一直用到運算式,語法是 {{ $json.欄位名 }},用來參照上一個節點輸出的資料。每個節點做完,先用 Execute step 單獨測試,確認輸出正確再往下接,出問題時才知道是哪一步。
步驟一,建立工作流程並放上手動觸發
從 Overview 的 Create Workflow 進入畫布;如果打開的是一張空畫布,畫面中央會有 Add first step。選擇 Add first step 之後,右側會出現節點面板,在這裡搜尋並選擇手動觸發(Trigger manually)。
第一版先用手動觸發,是因為它可以立刻測試,不用等排程時間到。流程完成之後,再把它換成排程觸發。流程名稱建議先改成看得懂的名字,例如「台北氣溫提醒」,日後流程變多時比較容易找。
之後要新增節點時,點節點右側的 + 連接器,或畫布上的 Add node,就能叫出同一個節點面板。
步驟二,用 HTTP Request 抓取公開 API 資料
這一步最能看出 n8n 的價值,只要服務有 API,就能用 HTTP Request 節點對它發出請求。從手動觸發節點後面新增一個 HTTP Request 節點,Method 選 GET,因為這裡只是讀取資料,不需要送資料出去。URL 欄位貼上這串網址。
https://api.open-meteo.com/v1/forecast?latitude=25.04&longitude=121.56¤t=temperature_2m&timezone=autoCode language: plaintext (plaintext)
網址的問號後面是查詢字串,各參數的意思如下:latitude 與 longitude 是台北的座標,約北緯 25.04、東經 121.56;current=temperature_2m 要求回傳目前的氣溫;timezone 決定時間欄位用哪個時區,不填的話預設為 GMT,填 auto 會依座標自動判斷,也可以填 IANA 的時區名稱,例如 Asia/Taipei。如果你手上已經有現成的 curl 指令,HTTP Request 也支援直接貼上 curl 匯入,n8n 會把請求設定填進各個欄位。
按下 Execute step 之後,右側 OUTPUT 會顯示 JSON 結果,可以切換 JSON 視圖與表格視圖。回傳內容裡有一個 current 物件,裡面包含 time(資料對應的時間)、interval(秒數)和 temperature_2m(氣溫數值),單位則在 current_units 裡。氣溫藏在兩層結構裡,所以後面要用 current.temperature_2m 這條路徑取值。

HTTP Request 預設只回傳回應本文。如果需要狀態碼或標頭,要另外開啟 Include Response Headers and Status 選項。回應格式預設為自動偵測,遇到 JSON 就會自動解析,這個範例不需要調整。
步驟三,Edit Fields 只留下需要的欄位
API 回傳了一大包資料,但後面只需要溫度。接著新增 Edit Fields 節點(又稱 Set 節點),用它挑出需要的欄位,並組合要顯示的訊息。這個節點有 Manual Mapping 與 JSON 兩種模式,新手用 Manual Mapping 最直覺,直接在畫面上新增欄位、填入值就好。
新增兩個欄位。第一個是 Number 型別的 temperature,值填 {{ $json.current.temperature_2m }};也可以把左側 INPUT 裡的欄位直接拖進來,n8n 會自動產生對應的運算式,欄位路徑以畫面上實際顯示的為準。第二個是 String 型別的 message,值用運算式拼出一句話,例如 台北目前氣溫 {{ $json.current.temperature_2m }} 度。Manual Mapping 的欄位可以切換成固定值或運算式,固定值寫死不會變,運算式則會隨上一個節點的資料更新。
另外留意 Include Other Input Fields 這個開關,讓它保持關閉。新版 Edit Fields 預設只輸出你設定的欄位,其餘的輸入資料全部丟掉,OUTPUT 就會乾乾淨淨只剩 temperature 和 message;打開它,才會把上一個節點的其他欄位一起帶下去。舊版教學裡常見的 Keep Only Set Fields 是反過來的設計,要打開才只留下設定的欄位,看到時別弄混。這個節點也支援以點記法寫巢狀結構,不過這個範例用不到。
步驟四,If 節點把資料分成兩條路
氣溫拿到了,接下來要依高低決定送哪一種訊息。新增 If 節點,它會依比較運算把資料分成 true 與 false 兩個輸出。在條件裡,把 {{ $json.temperature }} 放在左邊,型別選 Number,運算子選 is greater than,右邊填 30。
型別要選對很重要。If 節點支援字串、數字、日期時間、布林、陣列和物件各自的比較,氣溫是數字,就要用 Number 型別比;字串型別只有等於、包含、開頭是這類文字比對,根本沒有「大於」可以選。條件不只一個時,可以用 AND 或 OR 組合,AND 要求全部成立,OR 只要一個成立就算。如果判斷的結果超過兩種,就改用 Switch 節點。
接著在 true 輸出後面接一個 Edit Fields,把 message 設成 台北目前 {{ $json.temperature }} 度,天氣偏熱,記得補充水分;在 false 輸出後面再接一個 Edit Fields,把 message 設成 台北目前 {{ $json.temperature }} 度,氣溫還算舒適。兩條分支各自產出不同的訊息,這就是用條件分支表達邏輯的最小例子。
步驟五,執行測試並讀懂節點的輸入與輸出
整條接好後,按下 Execute Workflow。n8n 會依序執行各個節點,並在畫布上顯示每一階段的進度。跑完之後,逐個點開節點,看 INPUT 與 OUTPUT 兩側的資料,確認每一步都照預期流動。
這個步驟的重點,是培養出問題時知道往哪看的習慣。n8n 會保留每個節點這一次執行的輸入與輸出,資料在哪一步變了形,一眼就看得出來。
也可以故意調整 If 節點的門檻再執行一次,例如從 30 改成 20,讓目前的氣溫跨到門檻另一側,看資料是否改走另一條分支,藉此確認兩條分支都接對了。手動執行跑的是你正在編輯的內容;要讓流程依排程自己執行,還得把它發佈出去。
讓流程從手動測試走向自動執行
流程能手動跑通只算半成品,自動化的目的是讓它自己跑。要做到這點,有三件事要處理:換成排程觸發、把流程發佈成正式版本,以及確保 n8n 持續運作。
n8n 2.0 之後,儲存與發佈是分開的兩個動作。不少 n8n 教學還寫著要打開右上角的 Activate 開關,這個說法已經過時,現在對應的是 Publish 按鈕。
以排程觸發取代手動觸發
在畫布上點 Add node 叫出節點面板,搜尋 Schedule,選擇 Schedule Trigger。n8n 的第一條流程教學,示範的是每週一 9 點:Trigger Interval 選 Weeks,Weeks Between Triggers 填 1,Trigger on Weekdays 選 Monday,Trigger at Hour 選 9am,Trigger at Minute 填 0。可以照這組設定,也可以依實際需要改成每天固定的時間。
在測試階段,可以先把間隔設成每分鐘跑一次,這樣不用等到週一,就能當場看到自動執行的紀錄;確認一切正常之後,再改回實際想要的頻率。排程時間依 n8n 實例的時區(也就是 GENERIC_TIMEZONE)計算,啟動容器時填的 Asia/Taipei 在這裡就派上用場。
設定好之後,把 Schedule Trigger 接到 HTTP Request 前面,再把原本的手動觸發刪掉。後面的節點全部不用動,因為它們只關心收到的資料,不在乎資料是誰送來的。
草稿自動儲存,發佈後才是正式版本
n8n 2.x 會把你編輯的內容自動儲存成草稿,通常在 1 到 5 秒內完成,不需要手動按儲存;在按下 Publish 之前,所有修改都只是草稿。按下 Publish 之後,流程才會上線,並且鎖定在那個版本。
這個設計的好處是,改到一半的內容不會誤上線。正式執行,也就是排程或事件觸發的執行,永遠指向目前已發佈的版本,而不是你最新編輯的草稿;你可以放心地繼續修改,到下次按 Publish 才會生效。

n8n 的 2.0 破壞性變更說明寫得很明白,新的發佈機制取代了原本的啟用/停用切換,舊版的 Deactivate 開關對應到現在的 Unpublish 按鈕。想讓流程停止自動執行,就按 Unpublish。
容器持續運作,排程才會準時觸發
這是最常踩的地方。前面啟動容器的指令是前景執行,終端機視窗一關,n8n 就停了,排程自然不會觸發;本機電腦進入睡眠或關機,同樣等於 n8n 停止。
要處理這點,可以改用背景執行。n8n 的 Docker 頁說明了更換容器的流程,先用 docker ps -a 找出容器 ID,再用 docker stop 與 docker rm 停止並移除舊容器,然後以含 -d 的 docker run 重新啟動。背景執行的版本,把 -it --rm 換成 -d,其餘旗標與資料卷維持不變。
docker run -d \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Asia/Taipei" \
-e TZ="Asia/Taipei" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-v n8n_data:/home/node/.n8n \
n8nio/n8nCode language: Bash (bash)
重建容器時,一定要沿用同一個資料卷 n8n_data,流程和帳號才會原封不動地回來。若希望電腦重新開機後容器自動啟動,Docker 提供 --restart unless-stopped 這個重啟策略,加在 docker run 裡即可,前提是 Docker 本身會隨開機啟動;手動停止的容器則不會被重啟。
不過本機電腦終究會睡眠、關機。要讓流程真的 24 小時運行,需要搬到一台不關機的主機,也就是前面提到的租用主機自架。
在 Executions 分頁確認執行紀錄
流程發佈、排程到點之後,到 Executions 分頁,就能看到它有沒有跑、成功還是失敗。這個分頁有兩種檢視方式,分別是單一流程的執行列表,和所有流程的執行列表,兩種都可以篩選。點進單次執行,能看到當時每個節點的資料,出錯時從這裡回頭找原因最快。
執行紀錄也分得出手動執行與正式執行。前面提過,在編輯器按 Execute Workflow 的測試不計入額度,只有由觸發、排程或輪詢自動進行的正式執行,才計入付費方案(雲端或自架)的執行額度。免費社群版沒有額度的問題,但分清兩者,判讀紀錄時仍有幫助。
n8n 版本更新與資料卷的保管
自架的長期成本在維護。更新本身不複雜,必須記牢的是,流程和憑證都存在資料卷裡,只要資料卷還在,換上新的映像檔就不會掉資料。真正會讓一切歸零的,是刪除資料卷,或是一行安裝版的 down -v。

Docker 版的更新動作如下。先拉最新的穩定版映像檔,如果要指定版本,可以在後面加上版本號:
docker pull n8nio/n8n
docker pull n8nio/n8n:<版本>Code language: Bash (bash)
接著找出舊容器、停止、移除,再用同一個資料卷重新啟動:
docker ps -a
docker stop <container_id>
docker rm <container_id>Code language: Bash (bash)
移除後,把前面前景或背景版本的 docker run 指令再執行一次,-v n8n_data:/home/node/.n8n 這行絕對不能漏。如果是用 Docker Compose 部署,更新指令是:
docker compose pull
docker compose down
docker compose up -dCode language: Bash (bash)
一行安裝版的更新,則是前面提過的 --upgrade 旗標。不論哪一種,更新前先看 n8n 的 release notes,確認有沒有需要手動處理的變更,例如 2.0 就把 Activate 開關改成 Publish,還調整了資料庫的支援範圍。
至於進階方向,n8n 預設使用 SQLite,流程變多、執行量變大時,可以用環境變數 DB_TYPE=postgresdb 加上 DB_POSTGRESDB_* 這組設定,改接 PostgreSQL,細節請參考 n8n 的文件。
第一條流程之後的三個延伸方向
做完第一條流程後,下一個問題是怎麼把真正有用的服務接進來。接下來有三個方向:接外部服務靠憑證,想以別人做好的流程為基礎開工靠範本,想讓流程自己做決定則靠 AI Agent 節點。
用憑證把外部服務接進流程
剛才的流程沒用到憑證,因為 Open-Meteo 的 API 不需要金鑰。但幾乎所有真實服務,像試算表、聊天軟體和信箱,都需要先證明你是誰。憑證就是服務發給你、用來驗證身分的私密資訊。
做法是在節點的 Credential 下拉選單,選擇 Create new credential,把服務給的金鑰或授權貼進去,按 Save 儲存。關閉視窗後,節點會自動選取這個憑證,之後其他節點也可以共用。要注意金鑰得先到外部服務取得,例如 n8n 的第一條流程教學裡,NASA API 的金鑰是從信箱收到的。
從範本庫匯入現成流程再修改
n8n 與社群成員做好了許多預先設計的流程,叫做範本(templates)。新建流程時選擇 Templates,就能瀏覽範本庫;使用 n8n 預設的範本庫時,會直接開到 n8n 官網的範本頁,找到喜歡的就匯入自己的 n8n。
匯入後通常還要補上自己的憑證,並調整成符合需求的設定,流程才能跑起來。對新手來說,範本最大的價值是看別人怎麼把節點接起來,那是自己摸索最花時間的部分。
AI Agent 節點需要的模型與工具
n8n 把 AI 也做成節點。依 n8n 的文件,AI Agent 節點要接上一個聊天模型子節點,再接一個以上的工具子節點,Agent 會依任務判斷要呼叫哪一個工具;想讓它記住先前的對話,還可以另外接記憶子節點。
接商業模型時,自架版需要另外準備該模型供應商的金鑰,使用費用也由模型供應商另外計算,不屬於 n8n。雲端版的 Starter 與 Pro 方案另有 Gateway credits,在支援的節點上可以不必自備金鑰,改由 n8n 從預付的點數扣款。另外,n8n 的文件提到 AI Agent 節點的 v1 版本將在 3.0 移除,新建時請使用最新版。
AI 節點是 n8n 近年的重心,先備齊模型金鑰與要接的工具,等第一條流程跑穩之後再動手建構,會比較順手。
要讓一個自動化工具真正派上用場,難處不在流程怎麼畫,而在於第一條流程有沒有真的跑起來。把排程先設成每分鐘一次、發佈之後在 Executions 看到第一筆紀錄,你對 n8n 的掌握,就會比讀十遍文件更踏實。接著把氣溫換成你真正想自動化的那件事,這條流程就開始替你工作了。
