Introduction & 前言
你肯定聽過 n8n ,你有一天肯定要用 n8n ,那為什麼不現在就用?
往下看,教你怎麼快速在 本地 或 VM(虛擬機) 上架設 n8n
整篇文章是筆者自己的心得,如果文內有錯誤的地方,還請盡情指出。
本篇文章將會有兩個方法架設 n8n ,一個是本地,一個是透過 VM
P.S:當然如果你不想自己安裝這麼麻煩,可以直接使用 n8n 官網提供的線上版本,不過線上會有執行次數限制且需要付費,且線上版本會是比較舊的,自行架設的可以依照自己的使用需求升級
Summary & 摘要
本篇文章預設學習前的基本條件需求:
- 會使用終端機安裝套件
- 一顆熱忱的心 -> 超級重要,碰到坑千萬不要氣餒
本篇文章將有以下幾個步驟:
P.S:如果你想知道怎麼架設 VM 可以參考筆者之前的文章 [Third party service Note] - 全端手動部署 VPS(VM) 踩坑全記錄 By Vue + Node.js + Nginx + MySQL8 + CentOS Stream 9
前前前言
前陣子一直聽到 n8n ,剛好最近有碰到想做機器人的需求,就想著可以來搞一個 n8n 機器人
如果你還不知道 n8n 是什麼,這邊也簡單介紹一下
!這邊請 AI 幫我補充!
安裝n8n
這邊我們會介紹兩種路線,不過兩種路線安裝方式其實大同小異
- 首先開一個資料夾,放哪裡都可以,然後進入資料夾中,隨後創建一個
docker-compose.yml
檔案
1 | mkdir n8n |
- 打開 docker-compose.yml 並在檔案內貼上下面內容
1 | services: |
注意:內容有三行是你架設在 VM 才會需要輸入的,如果是本地就直接刪掉那三行即可
environment 的設定可以參考 n8n 的 docker image 指南,如果一開始沒有加到,後面可以再把 n8n 暫停重新加入配置後再重啟也可以,不避擔心
- 啟動 n8n
1 | docker compose up -d |
接下來如果你在本地使用的話,就可以直接網頁打開 http://localhost:5678 應該能看到下面的畫面
如果不是架設在線上 VM ,可以直接跳到下一小節 簡易範例
- 線上配置會碰到防火牆問題
如果沒有解決防火牆問題,會碰到下面圖片
先查看 5678 port 有沒有打開
1 | semanage port --list |
輸入結束後搜尋 http_port_t
如果沒有 5678 ,這時候我們需要把 5678 打開,輸入以下指令
1 | semanage port --add --type http_port_t --proto tcp 5678 |
然後重新刷新你的網頁,有可能會有 Cache ,記得清除一下
解決永久進階功能
在介紹範例前,如果登入有出現以下畫面,代表你可以透過輸入 Email 獲得永久進階功能(註1)
輸入結束後到信箱去應該會有類似下面的信件
之後如同信件說的步驟 settings → usage → plan → enter activation key ,去設定那邊輸入就能完成了
依照介紹上面寫的大概是下列四項
- ⏰ Workflow history(工作流程歷史)
- 可以檢視和還原過去24小時內的任何工作流程版本
- 🐞 Advanced debugging(進階除錯)
- 輕鬆修復任何出錯的工作流程執行,然後重新運行
- 🔎 Execution search and tagging(執行搜尋和標籤)
- 搜尋和組織過去的工作流程執行,方便檢視
- 🗂️ Folders(資料夾)
- 在巢狀資料夾結構中組織您的工作流程
註1:筆者創建時間是 2025/10/01 如果沒出現大概率是活動結束了
簡易範例
這邊筆者想用一個簡單的機器人當例子,因為筆者所處的公司平日中午都會舉辦德州撲克的休閒遊戲時間
而開始前筆者想透過排程去定期發送投票到 Telegram 群組去詢問想要參加的人
隨後筆者會搜集投票 id 到 DB 去,最後在遊戲結束時間(目前暫定一小時)後,抓取投票的 id ,並且濾出投票結果
看起來雖然只是單純像發起投票,但是中間我們慢慢還能再加入後期的圖片分析,透過每次遊戲結束後,上傳排行榜圖片去判斷一整個週期下來,誰是第一名,誰是最後一名
創建定期排程(Schedule)
廢話不多說,先做出一個初階的版本,我們先在 canvas 上創建一個 Schedule 定期排程,點擊桌布上空蕩蕩的 Add first step…
隨後右側會跳出抽屜,點擊裡面的 On a schedule
然後再 Trigger Interval 選擇你喜好的檢查方式,筆者這邊用 Custom(Cron) 進行檢查
輸入 50 11 * * 1-5
,代表每週一到五的 11:50 AM 會觸發,可以使用線上 Cron 的工具進行測試,如 Crontab
設定好之後點擊左上角很小的 <- Back to canvas
這邊必須吐嘲一下這個 UI 做的不是很好,第一次用筆者愣在這邊很久,不知道是要我接下來做什麼
之後你就會看到你 n8n 第一個節點了!!
創建 HTTP Request
之後我們再點擊節點右邊 + 符號,然後輸入 http ,找到 HTTP Request 選項,點擊下去
聰明如妳一定能想到,其實 n8n 大概就是這樣的流程,如同串烤肉串一樣,串一串後,整串就能拿去吃了
當然要串什麼料什麼食材,就依照自己喜好去新增
這邊我們 Method 選擇 POST ,然後再 URL 輸入 https://api.telegram.org/bot<Bot Token>/sendPoll
記得 Bot Token 要替換掉,換成你自己的機器人 Token
如果你不知道怎麼創建 Telegram 機器人,可以參考筆者之前寫過的 [Tool Note] — 透過 GAS 快速建立後端, 串接TG機器人佐 Google Excel 文章,有介紹怎麼創建機器人
然後往下滑把 Send Body 打開,接著 Specify Body 選擇 Using JSON ,輸入以下指令
1 | { |
關於 chat_id 怎麼查詢,可以先傳訊息給你的機器人,然後在網址輸入 https://api.telegram.org/bot<Bot Token>/getUpdates
然後會取得以下的回應,把那串 Chat ID 拿去替換 POST JSON Body 中的 chat_id 就行
完成後大概如下
執行一次流程
接著回到我們的 canvas 去,點擊畫面上的橘色按鈕(Execute workflow)
接下來就會發現訊息發到 TG 上了
新增 Data table
注意:如果要使用 DB 功能至少要將 n8n 版本升級至 v1.113,可參考 Data Tables Are Here!
接下來我們如果想要把投票 ID 傳入 DB 內需要先去首頁,點擊左邊 Personal
然後點擊 Tab Data tables ,再點擊右上角的 橘色按鈕 “”箭頭””
會跳出彈窗隨便輸入你喜歡的名稱,例如這邊叫做 votes
然後點擊創建的 Table 進去,接著點擊右上角的 Add Column
在 Name 輸入 pollId ,型別我們不需要改,再點擊下面大顆的按鈕 Add Column
然後在左邊就會看到你新增的 column 了
寫入 DB
回到我們原本的 canvas ,我們先點擊一次 Execute workflow 確保等等有資料可以直接使用
之後點擊 HTTP Request 右邊的 + 符號
在右邊找到 Data table 並點擊
接著先點擊點擊 Insert row
然後再 Data table 選擇剛剛創建的 votes
再把滑鼠移到左側的 poll.id 上面,可以直接拖曳資料過去中間的 Values to insert pollId 上面
之後再點擊一次上面的 Execute step 橘色按鈕
如果右邊的 OUTPUT 有資料,就代表成功了,回去 DB 看也一樣會有資料
接下來聰明的你就能發揮自己的創意,不管是在中間塞入資料,或是使用 Code 透過 JavaScript 去整理資料
或是透過 AI Agent 去分析資料,可以玩出百千種花樣
P.S:這邊推薦要使用 AI Agent 可以嘗試使用 OpenRouter LLM ,當中有免費的模型可以使用,可參考 OpenRouter: 統一的 LLM API 服務平台 — 免費API使用教學
Conclusion & 結論
這次因為要玩機器人的緣故去研究 n8n,學到了滿多新奇的東西,同時也感嘆以前要弄個 Line 客服機器人需要很麻煩的步驟
而且還不一定是真正的 AI 機器人,這幾年技術真的進步很快,同時也更便利,就是一把雙面刃,只是看我們有沒有辦法好好利用