n8n 是個可以透過串接方式完成一連串任務的 workflow 工具,類似於收費服務的 pipedream 與 zapier ,主打不寫程式來完成一連串的事情,而如果要彈性功能也可以使用 javascript 或是 python 來執行一些較客製化的事情,有提供 GUI 可以進行流設定,並且會將每個執行的流程記錄下來,介面上類似於 AWS 的 step function
官方網站:https://n8n.io/
原始碼:https://github.com/n8n-io/n8n
管理用 API 文件:https://docs.n8n.io/api/
介紹
其可以使用許多方式驅動一連串的事情,其中包括:
- webhook
- cronjob 排程
- 手動點擊驅動
- IMAP 收到信件時
- …其他
其串接的功能也非常多,可以自行撰寫程式處理客製化行為或是使用提供的多樣化工具
啟動
使用官方的 docker 啟動
如果用的功能很基本的話,並且想快速安裝,可以直接使用官方的 docker images
docker run -it -d \ --restart=always \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n
加上需要使用的 npm 套件 (非必要)
如果 workflow 中有需要使用「Code」這個功能,並且會需要使用第三方套件 (例如:lodash),預設會是無法使用的,需要額外安裝並且設定進環境變數中
主要步驟為:
-
在 n8n 中安裝所要套件
-
設定環境變數 NODE_FUNCTION_ALLOW_EXTERNAL
如果是 Docker 的話可以使用 Dockerfile 來建立自己所要的 image:
FROM n8nio/n8n RUN cd /usr/local/lib/node_modules/n8n RUN npm install lodash ENV NODE_FUNCTION_ALLOW_EXTERNAL=moment ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"]
一些範例
範例一:使用 javascript 執行行為並產生 response
我們使用 webhook 驅動
在 Response 選擇 Using 'Respond to Webhook' Node
接著第二個 Node 選擇 Code
並且輸入自己的程式碼
最後一個則選擇 Respond to Webhook
在選項選 First Incoming Item
範例二:註冊一個事件,過段時間執行
我們使用 webhook 驅動
在 response 選擇 Immediately
讓使用者不需要等待後續任務
在第二個 node 選擇 Wait
設定要等待的時間
第三個 Node 選擇自己要做的步驟
這邊使用 Http Request做示範
輸入要 callback 的 API