iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0
生成式 AI

打造基於 MCP 協議與 n8n 工作流的會議處理 Agent系列 第 4

Day 4 在 Docker 中部署 n8n 並建立第一個 Webhook

  • 分享至 

  • xImage
  •  

今天的目標與挑戰

昨天完成了本地 Whisper 的環境與服務封裝,今天的目標是要讓自動化工作流平台 n8n 在容器中跑起來,並且測試第一支 Webhook。

  • 安裝 Docker 並熟悉基本指令
  • 撰寫 docker-compose.yml,部署 n8n 容器
  • 進入 n8n Web UI,完成初次設定
  • 建立並測試第一支 Webhook 工作流

Docker 架設 n8n?

你一定會好奇,為什麼要用 Docekr 來架設 n8n ?這樣有什麼好處?

  1. 環境一致性
    Docker 容器就像是一個輕量的虛擬機,不論是在開發機、測試機,還是部署到伺服器,n8n 都跑在同樣的環境裡,就可以避免「我這裡可以跑你那裡不行」的痛苦。
  2. 快速部署與回滾
    只要寫好 Docker Compose,一行指令就能把 n8n 啟動起來,如果有問題,也能快速停止並還原到上一個正常版本。
  3. 資源隔離
    每個容器在獨立的環境中各司其職,互不干擾,不會因為某個套件版本衝突導致系統整體出問題。
  4. 擴展容易
    未來如果要新增監控、資料庫或其他服務,只要修改docker-compose.yml,就可以同時管理多個容器,維護成本低。

Docker 的概念

我們來簡單介紹一下 Docker 的概念

  • Image(映像檔):就像是程式的「安裝檔」,裡面打包了作業系統、應用程式與相依套件。
  • Container(容器):執行中的映像檔,就像是一個輕量虛擬機,可以啟動、停止、重啟。
  • Dockerfile:定義如何建構自訂映像檔的腳本。
  • Docker Compose:用 YAML 檔描述多個容器如何協同運作,省去一個一個手動執行的麻煩。

Step 1:安裝 Docker

確認電腦架構

  1. 按下 Win+Pause/Break(或在「開始」按鈕上點右鍵,選「系統」)

  2. 找到「裝置規格」下的「系統類型」一欄:

    • 顯示 64 位元作業系統,x64 型處理器 代表 AMD64
    • 顯示 64 位元作業系統,ARM64 型處理器 代表 ARM64
      系統類型
  3. 記得自己電腦的架構


下載及安裝

  1. Docker 官網下載 Docker Desktop 安裝檔案,請依照上一步查到的結果,點選:

    • Download for Windows – AMD64(如果系統類型為 x64)
    • Download for Windows – ARM64(如果系統類型為 ARM64)
      Docker home page
  2. 等待下載的期間,可至 Docker hub 註冊帳號。
    Docker install success

  3. 下載完後,打開安裝檔案後點擊OK,待安裝程式跑完後,即安裝完成。
    Docker installing
    Installation succeeded

  4. 同意 Docker Service Agreement
    Docker Service Agreement

  5. 登入帳號後,即可來到 Docekr 畫面
    Docker install success

可打開 PowerShell 執行

docker --version
docker-compose --version

如果能正常顯示版本號,這表示 Docker 已正確安裝並可以使用了。


Step 2:撰寫 Docker Compose 檔

在專案根目錄下,建立名為 docker-compose.yml 的檔案,用來定義 n8n 容器:

version: '3.8'

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: m2a-n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    volumes:
      - ./n8n_data:/home/node/.n8n
    environment:
      # n8n 基本設定
      - N8N_HOST=0.0.0.0           # 監聽所有網路介面
      - N8N_PORT=5678              # n8n 服務埠號
      - N8N_PROTOCOL=http          # 使用 HTTP(開發環境無需 HTTPS)
      - WEBHOOK_URL=http://localhost:5678/  # Webhook 根網址
      - GENERIC_TIMEZONE=Asia/Taipei       # 設定時區為台北
      # 開發友善設置
      - N8N_SECURE_COOKIE=false    # 關閉 cookie 安全標誌,方便 HTTP 存取
      - N8N_DIAGNOSTICS_ENABLED=false  # 關閉匿名診斷數據收集
volumes:
  n8n_data: {}  # 本機 volume,用以持續化儲存工作流與憑證

設定說明

  • environment:設定時區、Webhook URL 及本地開發所需參數

    • N8N_HOST:指定服務監聽的主機地址,0.0.0.0 表示接收任何對外請求。
    • N8N_PORT:n8n 預設埠號 5678,搭配 ports 對應到本機相同埠。
    • N8N_PROTOCOL:設為 http,開發環境用 HTTP 即可,不需要配置 SSL。
    • WEBHOOK_URL:Webhook 節點生成的完整 URL 前綴,方便在節點設定時使用相對路徑。
    • GENERIC_TIMEZONE:設定時區為「Asia/Taipei」,讓節點顯示時間為臺灣時間。
    • N8N_SECURE_COOKIE:若設為 true,cookie 只允許在 HTTPS 下傳送;開發可以關閉避免跨域問題。
    • N8N_DIAGNOSTICS_ENABLED:控制是否收集匿名診斷資料,開發時可以關閉。
    • volumes:將 /home/node/.n8n(n8n 預設資料夾)對應到本機 n8n_data,確保工作流與認證憑證不會因容器重建而遺失。

Step 3:啟動 n8n 容器

在專案根目錄執行

docker-compose up -d

幾秒鐘後,容器就啟動了,可以用 docker-compose ps 確認狀態,並用瀏覽器開啟 http://localhost:5678


Step 4:n8n 首次登入與設定

  1. 建立使用者帳號:系統會要求建立第一組使用者帳號與密碼,按指示完成。
  2. 建立工作流:登入後,點擊右上角 Create Workflow
    homepage

Step 5:建立並測試第一支 Webhook

  1. 點擊 新增一個 Webhook 節點
    M2A Aent work flow

  2. Webhook 節點中,設定:

    • HTTP MethodPOST
    • Webhook Path/m2a-test
    • RespondUsing 'Respond to Webhook' Node
      webhook

設定完成後,可點擊左上角的 Back to canvas 或點擊任意灰色處回到畫布。

  1. 點擊 Webhook 節點後面的 新增下一個 Respond to Webhook 節點,設定:

    • Respond WithJSON
    • Respond Body{"status":"ok"}
    • Respond Code200
      Respond to Webhook

設定完成後,可點擊左上角的 Back to canvas 或點擊任意灰色處回到畫布。

  1. 回到畫布後,在右上角將 inactive 切換為 Activate 啟用 Workflow
    inactive
    Active

在專案的根目錄下建立一個 test_n8n.py 測試程式

import requests

url = "http://localhost:5678/webhook/m2a-test"
data = {"message":"Hello n8n"}
res = requests.post(url, json=data)
print(res.status_code, res.json())

執行後,終端機成功顯示

200 {'status':'ok'}

這表示我的第一支 Webhook 不僅成功部署,而且能正確接收 POST 請求並回傳預期的 JSON 回應!


今天的成果總結

完成項目

  • 安裝並驗證 Docker 環境
  • 撰寫並啟動 docker-compose.yml,成功部署 n8n 容器
  • 完成 n8n 首次登入
  • 建立第一支 Webhook Workflow,並以 Python 程式測試成功

📝 關鍵發現

  • 容器化部署:讓整體環境易於重現與移植,只需一份 docker-compose.yml,讓環境一致且易於維護,重啟容器不會遺失設定
  • n8n Webhook:幾秒鐘內就能上線並回應,開發效率極高
  • Volume 綁定:可確保 Workflow、Credential 可持續保存,不需擔心重啟導致資料遺失。

心得

今天最大的收穫是將 Docker 與 n8n 結合,展現出了結合之後強大的威力!

🎯 明天計劃
使用 MCP Agent 的 WhisperService 將文字結果傳給這支 Webhook,實現端到端的「音訊 → 文字 → 工作流觸發」流程驗證。


上一篇
Day 3 Whisper Service 封裝與介面建立
下一篇
Day 5 整合 WhisperService 與 n8n Webhook
系列文
打造基於 MCP 協議與 n8n 工作流的會議處理 Agent7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言