
當你已經是 n8n 的熟練使用者,能夠靈活運用 Code
節點來撰寫 JavaScript 處理複雜邏輯時,你可能會遇到下一個天花板:「如果我想用的 JavaScript 套件 (Package),n8n 預設環境沒有提供,該怎麼辦?」
你可能想在流程中使用一個功能強大的數據處理函式庫(例如 lodash
),或是想串接一個沒有官方節點、但提供了專屬 SDK 的 API 服務,又或者你想安裝一個由 n8n 社群開發的、功能超強的第三方節點。這些需求,都指向了一個更進階、更具客製化彈性的主題:管理 n8n 的 NPM (Node Package Manager) 環境。
對於自架設 (Self-Hosted) n8n 的開發者來說,n8n 提供了極大的自由度,讓你能像開發任何 Node.js 專案一樣,為你的 n8n 實例安裝任何你需要的外部 NPM 套件與社群節點。
這篇文章將是你的 n8n NPM 使用終極指南。我們將專注於最主流、最推薦的 Docker 部署方式,手把手教你如何透過撰寫 Dockerfile
來打造一個客製化的 n8n 環境,並在其中使用你安裝的套件。學會這項技巧,你將能徹底突破 n8n 的預設限制,將其打造成一個真正為你量身訂做的、無所不能的自動化平台。
為什麼要在 n8n 中安裝外部 NPM 套件?
在動手之前,我們先來理解這麼做的三大核心理由,它將為你的自動化能力帶來質的飛躍:
- 使用官方 SDK 簡化 API 串接: 雖然
HTTP Request
節點很萬能,但對於某些認證流程複雜(例如需要動態產生簽章)的 API,直接使用其官方提供的 NPM SDK 套件,會比你手動組合 Header 和 Body 簡單得多、也穩定得多。 - 存取強大的工具函式庫: NPM 生態系中有著數以百萬計的強大函式庫。你可以安裝
lodash
來進行複雜的陣列與物件操作、使用moment-timezone
來處理刁鑽的時區轉換問題,或利用cheerio
來輕鬆地爬取與解析網頁內容。這些都能讓你在Code
節點中用更少的程式碼,完成更複雜的任務。 - 擴充 n8n 的節點生態系: n8n 有一個非常活躍的開源社群,許多開發者會將自己為特定服務打造的整合,打包成「社群節點 (Community Nodes)」並發布到 NPM。透過安裝這些
n8n-nodes-*
套件,你可以直接在你的 n8n 介面上,新增官方沒有提供的應用程式節點,例如 PChome 商店街、藍新金流等在地化服務。
核心觀念:打造你的客製化 n8n Docker Image
要為 Docker 環境中的 n8n 安裝外部套件,我們不能直接 docker exec
進容器裡執行 npm install
。因為一旦容器重啟,所有變更都會消失。
正確的做法是「建立一個客製化的 Docker Image」。這個概念就像是:
- 基礎: 我們以 n8n 官方提供的 Docker Image (
n8nio/n8n
) 作為「基底」。 - 加工: 在這個基底之上,我們透過一個叫做
Dockerfile
的設定檔,下達指令告訴 Docker:「請在這個基底上,幫我額外執行npm install <套件名稱>
這個動作。」 - 成品: Docker 會根據我們的指令,產生一個包含了 n8n 主程式和你指定的外部套件的、全新的、獨一無二的 Docker Image。
- 部署: 最後,我們再用這個客製化的 Image 來啟動 n8n 容器。
手把手教學:透過 Dockerfile 為 n8n 安裝 NPM 套件
讓我們來實際操作一次。目標是:為 n8n 安裝 lodash
這個超實用的工具函式庫。
步驟一:建立你的專案資料夾結構
在你的伺服器上,建立一個專案資料夾(例如 my-custom-n8n
),並在裡面建立以下檔案與資料夾:
my-custom-n8n/
├── docker-compose.yml
├── Dockerfile
└── n8n-data/
docker-compose.yml
: 用來定義和啟動我們的服務。Dockerfile
: 我們客製化 Image 的「說明書」。n8n-data/
: 用來存放 n8n 資料的本地資料夾。
步驟二:撰寫 Dockerfile
在 Dockerfile
檔案中,貼上以下內容:
Dockerfile
# 使用官方 n8n 的映像檔作為基底
FROM n8nio/n8n
# 在容器內安裝 lodash 這個 NPM 套件
# 如果有多個套件,用空格隔開即可,例如:npm install lodash moment-timezone
RUN npm install lodash
這份檔案的意思非常簡單:以官方 n8nio/n8n
為基礎,然後在裡面執行 npm install lodash
指令。
步驟三:撰寫 docker-compose.yml
在 docker-compose.yml
檔案中,貼上以下內容:
YAML
version: '3.7'
services:
n8n:
# 這裡的 build: . 是關鍵,它告訴 Docker Compose
# 不要去 Docker Hub 下載 image,而是使用當前目錄下的 Dockerfile 來「建置」一個新的 image
build: .
container_name: n8n-custom
restart: always
environment:
- GENERIC_TIMEZONE=Asia/Taipei
ports:
- "5678:5678"
volumes:
- ./n8n-data:/home/node/.n8n
關鍵設定: build: .
這一行,它指示 Docker Compose 去讀取同目錄下的 Dockerfile
,並根據其內容建置我們客製化的 Image。
步驟四:建置與啟動
在專案資料夾的根目錄,打開終端機,執行以下指令:
Bash
docker-compose up --build -d
--build
: 這個參數是第一次啟動時必須加上的,它會強制 Docker Compose 根據Dockerfile
進行建置。
這個過程會需要幾分鐘的時間,因為 Docker 正在下載 n8n 基底 Image 並執行 NPM 安裝。完成後,你的客製化 n8n 實例就成功啟動了!

如何在 Code 節點中使用你安裝的套件?
成功安裝後,在 Code
節點中使用它就非常簡單了,就像在任何 Node.js 環境中一樣,使用 require()
語法即可。
使用 lodash
的範例: 假設上一個節點傳來一筆包含重複元素的陣列資料 {"my_array": [1, 2, 2, 3, 4, 4, 4]}
,我們想用 lodash
的 uniq
方法來移除重複項。
在 Code
節點中,你可以這樣寫:
JavaScript
// 使用 require() 來載入我們安裝好的 lodash 套件
const _ = require('lodash');
// 從傳入的 item 中取得陣列
const originalArray = items[0].json.my_array;
// 使用 lodash 的 uniq 方法
const uniqueArray = _.uniq(originalArray);
// 將處理完的結果放回 item 中
items[0].json.unique_array = uniqueArray;
return items;
執行後,你會看到輸出結果中多了一個 unique_array
欄位,其值為 [1, 2, 3, 4]
。
探索社群的力量:安裝 n8n-nodes (社群節點)
安裝社群節點的流程與安裝一般 NPM 套件完全相同。你只需要找到你想安裝的社群節點的 NPM 套件名稱(通常以 n8n-nodes-
開頭),並將它加入到你的 Dockerfile
中。
範例: 安裝一個用於台灣「藍新金流 (NewebPay)」的社群節點。 假設其套件名稱為 n8n-nodes-newebpay
。
你的 Dockerfile
就會變成:
Dockerfile
FROM n8nio/n8n
RUN npm install n8n-nodes-newebpay
接著,重新執行 docker-compose up --build -d
來重建你的 Image。重啟完成後,當你在 n8n 的節點面板中搜尋「NewebPay」時,你就會驚喜地發現,一個全新的節點已經出現在你的工具箱裡了!
非 Docker 環境用戶:NPM 與 PM2 的安裝方式
對於直接使用 NPM 在主機上安裝 n8n 的使用者,流程相對單純,但也較不推薦用於生產環境。
- 透過 SSH 登入你的主機。
- 進入 n8n 的安裝目錄。
- 直接執行
npm install <套件名稱>
。 - 如果你是使用 PM2 來管理 n8n 服務,安裝完套件後,記得執行
pm2 restart n8n
來重啟服務,讓新的套件生效。

結語
學會如何為你的 n8n 環境安裝外部 NPM 套件與社群節點,是你從「n8n 使用者」晉升為「n8n 開發者」的關鍵一步。這項技巧讓你能夠將整個龐大的 Node.js 生態系,無縫整合進 n8n 的視覺化工作流中,創造出真正無限制的自動化可能性。
從今天起,當你再遇到 n8n 內建功能無法滿足的挑戰時,不妨先到 NPM 網站上逛一逛,或許社群中早就有人為你打造了完美的解決方案。透過 Dockerfile
的客製化,你的 n8n 將不再只是一個工具,而是一個可以讓你隨心所欲擴充、專屬於你的強大開發平台。
更多精選文章請參考
n8n 與 Zapier 比較:該選哪個?2025年最完整功能、費用、優缺點分析
開源自動化工具推薦:從工作流程到測試,找到最適合你的免費方案
n8n 發送 Email 超詳細教學:從 SMTP 設定到 Gmail 節點串接,一篇搞定!
n8n Notion 串接終極指南:2025 年打造自動化工作流程,效率翻倍!