RexHung's Blog

塵世中一個前端迷途小書僮!

0%

[Tool Note]  — 架設 n8n & 簡易使用指南

Introduction & 前言

Banner

你肯定聽過 n8n ,你有一天肯定要用 n8n ,那為什麼不現在就用?

往下看,教你怎麼快速在 本地VM(虛擬機) 上架設 n8n

整篇文章是筆者自己的心得,如果文內有錯誤的地方,還請盡情指出。

本篇文章將會有兩個方法架設 n8n ,一個是本地,一個是透過 VM

P.S:當然如果你不想自己安裝這麼麻煩,可以直接使用 n8n 官網提供的線上版本,不過線上會有執行次數限制且需要付費,且線上版本會是比較舊的,自行架設的可以依照自己的使用需求升級


Summary & 摘要

本篇文章預設學習前的基本條件需求:

  • 會使用終端機安裝套件
  • 一顆熱忱的心 -> 超級重要,碰到坑千萬不要氣餒

本篇文章將有以下幾個步驟:

  1. 前前前言
  2. 安裝n8n
  3. 解決永久進階功能
  4. 簡易範例
  5. 其它問題

P.S:如果你想知道怎麼架設 VM 可以參考筆者之前的文章 [Third party service Note] - 全端手動部署 VPS(VM) 踩坑全記錄 By Vue + Node.js + Nginx + MySQL8 + CentOS Stream 9


前前前言

前陣子一直聽到 n8n ,剛好最近有碰到想做機器人的需求,就想著可以來搞一個 n8n 機器人

如果你還不知道 n8n 是什麼,這邊也簡單介紹一下

!這邊請 AI 幫我補充!


安裝n8n

這邊我們會介紹兩種路線,不過兩種路線安裝方式其實大同小異

  1. 首先開一個資料夾,放哪裡都可以,然後進入資料夾中,隨後創建一個 docker-compose.yml 檔案
1
2
3
mkdir n8n
cd n8n
touch docker-compose.yml # 如果直接電腦操作創建檔案就不用這行指令
  1. 打開 docker-compose.yml 並在檔案內貼上下面內容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
services:
n8n:
image: n8nio/n8n
container_name: n8n_container
restart: always
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- WEBHOOK_TUNNEL_URL=https://n8n.your-domain.com # 如果你是架設在 VM 上才需要,不然這行可以刪掉
- N8N_HOST=n8n.your-domain.com # 同上
- N8N_PROTOCOL=https # 同上
- N8N_PORT=5678
volumes:
- ./n8n_data:/home/node/.n8n
ports:
- "5678:5678"

注意:內容有三行是你架設在 VM 才會需要輸入的,如果是本地就直接刪掉那三行即可

environment 的設定可以參考 n8ndocker image 指南,如果一開始沒有加到,後面可以再把 n8n 暫停重新加入配置後再重啟也可以,不避擔心

  1. 啟動 n8n
1
docker compose up -d

接下來如果你在本地使用的話,就可以直接網頁打開 http://localhost:5678 應該能看到下面的畫面

n8n 登入頁面

如果不是架設在線上 VM ,可以直接跳到下一小節 簡易範例

  1. 線上配置會碰到防火牆問題

如果沒有解決防火牆問題,會碰到下面圖片

502 Bad Gateway

圖片來自 Local Community p.verdugo 的提問, 出現在谷歌圖片搜尋

先查看 5678 port 有沒有打開

1
semanage port --list

輸入結束後搜尋 http_port_t

Semanage port list

如果沒有 5678 ,這時候我們需要把 5678 打開,輸入以下指令

1
semanage port --add --type http_port_t --proto tcp 5678

然後重新刷新你的網頁,有可能會有 Cache ,記得清除一下


解決永久進階功能

在介紹範例前,如果登入有出現以下畫面,代表你可以透過輸入 Email 獲得永久進階功能(註1)

Get Paid Features For Free

輸入結束後到信箱去應該會有類似下面的信件

License Key Email

之後如同信件說的步驟 settings → usage → plan → enter activation key ,去設定那邊輸入就能完成了

依照介紹上面寫的大概是下列四項

  1. ⏰ Workflow history(工作流程歷史)
  • 可以檢視和還原過去24小時內的任何工作流程版本
  1. 🐞 Advanced debugging(進階除錯)
  • 輕鬆修復任何出錯的工作流程執行,然後重新運行
  1. 🔎 Execution search and tagging(執行搜尋和標籤)
  • 搜尋和組織過去的工作流程執行,方便檢視
  1. 🗂️ Folders(資料夾)
  • 在巢狀資料夾結構中組織您的工作流程

註1:筆者創建時間是 2025/10/01 如果沒出現大概率是活動結束了


簡易範例

這邊筆者想用一個簡單的機器人當例子,因為筆者所處的公司平日中午都會舉辦德州撲克的休閒遊戲時間

而開始前筆者想透過排程去定期發送投票到 Telegram 群組去詢問想要參加的人

隨後筆者會搜集投票 idDB 去,最後在遊戲結束時間(目前暫定一小時)後,抓取投票的 id ,並且濾出投票結果

看起來雖然只是單純像發起投票,但是中間我們慢慢還能再加入後期的圖片分析,透過每次遊戲結束後,上傳排行榜圖片去判斷一整個週期下來,誰是第一名,誰是最後一名

創建定期排程(Schedule)

廢話不多說,先做出一個初階的版本,我們先在 canvas 上創建一個 Schedule 定期排程,點擊桌布上空蕩蕩的 Add first step…

隨後右側會跳出抽屜,點擊裡面的 On a schedule

On a schedule

然後再 Trigger Interval 選擇你喜好的檢查方式,筆者這邊用 Custom(Cron) 進行檢查

輸入 50 11 * * 1-5,代表每週一到五的 11:50 AM 會觸發,可以使用線上 Cron 的工具進行測試,如 Crontab

On a schedule Setting

設定好之後點擊左上角很小的 <- Back to canvas

Back to canvas

這邊必須吐嘲一下這個 UI 做的不是很好,第一次用筆者愣在這邊很久,不知道是要我接下來做什麼

之後你就會看到你 n8n 第一個節點了!!

First n8n node

創建 HTTP Request

之後我們再點擊節點右邊 + 符號,然後輸入 http ,找到 HTTP Request 選項,點擊下去

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
2
3
4
5
6
{
"chat_id": "換成你的目標 id",
"question": "今天中午要 All-in 嗎?",
"options": ["All 啦", "不 All"],
"is_anonymous": false
}

關於 chat_id 怎麼查詢,可以先傳訊息給你的機器人,然後在網址輸入 https://api.telegram.org/bot<Bot Token>/getUpdates

然後會取得以下的回應,把那串 Chat ID 拿去替換 POST JSON Body 中的 chat_id 就行

TG Chat ID

完成後大概如下

HTTP Request Setting

執行一次流程

接著回到我們的 canvas 去,點擊畫面上的橘色按鈕(Execute workflow)

執行流程

接下來就會發現訊息發到 TG 上了

新增 Data table

注意:如果要使用 DB 功能至少要將 n8n 版本升級至 v1.113,可參考 Data Tables Are Here!

接下來我們如果想要把投票 ID 傳入 DB 內需要先去首頁,點擊左邊 Personal

然後點擊 Tab Data tables ,再點擊右上角的 橘色按鈕 “”箭頭””

創建 Data tables

會跳出彈窗隨便輸入你喜歡的名稱,例如這邊叫做 votes

然後點擊創建的 Table 進去,接著點擊右上角的 Add Column

Name 輸入 pollId ,型別我們不需要改,再點擊下面大顆的按鈕 Add Column

然後在左邊就會看到你新增的 column

創建 Column

寫入 DB

回到我們原本的 canvas ,我們先點擊一次 Execute workflow 確保等等有資料可以直接使用

之後點擊 HTTP Request 右邊的 + 符號

在右邊找到 Data table 並點擊

選擇 DB

接著先點擊點擊 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 機器人,這幾年技術真的進步很快,同時也更便利,就是一把雙面刃,只是看我們有沒有辦法好好利用


參考網站