如何架設N8N伺服器在本地端的部署教學

如何架設N8N伺服器在本地端的部署教學

教你如何使用docker架設N8N伺服器在本地端的部署教學,并且講述爲什麽我從完全免費的huggingface spaces平臺換到本地端,以及如何讓外網連接到本地的webhook

成功畫面本文將帶你一步步從零開始,在本地端(Windows 系統為例)架設 n8n 並使用 Cloudflare Tunnel 將本地服務映射為網路可訪問的固定公開網址。過程中會詳細解說重要設定與可能遇到的注意事項。

1. N8N是什麽

n8n 是一個開源的自動化工作流程平台,讓用戶可以透過圖形化介面(拖拉節點)來串接和自動化各種工具、平台與服務,無需寫程式也能輕鬆建立自動化流程(雖然我的這個要寫不少JS跟SQL就對了)。

像是下面的圖片,有許多的節點跟綫條連接,這樣做的好處就是可讀性高,以及維護容易。

成功畫面

主要特點

  • 開源免費:n8n 完全開源,任何人都可以免費下載、使用、修改,並根據需求自行部署在本地或雲端。
  • 視覺化操作:只需拖拉節點、設定參數,就能設計複雜的自動化工作流,適合沒有程式基礎的使用者。
  • 高度彈性與擴充性:支援自訂節點、腳本(如 JavaScript),也能安裝社群第三方擴充,適合開發者進行進階自動化。
  • 豐富的整合能力:內建超過200~400種第三方應用整合(如 Google Apps、Slack、Trello、GitHub、AWS、Notion、LINE、Shopify 等),可滿足各式自動化需求。
  • 自我託管:用戶可選擇將 n8n 部署在自己的伺服器,完全掌控資料安全與隱私

爲什麽需要N8N?

先想清楚:什麽事值得自動化?

  • 重複性高:每天、每週都要做的瑣事。
  • 很花時間:不是難,但就是煩、耗時。
  • 流程固定:步驟一樣、邏輯清楚。 訂閲系統就符合以上所有需求

如何開始使用n8n

你可以使用:

  • 官方的托管伺服器https://n8n.io/
  • 本地端伺服器: 本次使用Docker Desktop來建立。
  • 其他部署平臺

1. 環境與準備條件

  • Windows 電腦已安裝 Docker Desktop
  • 已擁有自己的網域且 DNS 交由 Cloudflare 管理(或可自行將 DNS 指向 Cloudflare)
  • 了解 Cloudflare Tunnel 基本概念

2. 用 Docker 安裝 n8n

  1. 確認 Docker Desktop 已安裝啟動

    • 下載並安裝 Docker Desktop
    • 安裝完成並啟動,確保 Docker 正常運行 執行以下指令確認docker是否安裝成功
docker --version

應該能出現版本號 成功畫面

  1. 創建一個資料夾來存放你的N8N的資料 你可以挑選一個你喜歡的位置當作N8N資料的存放點,之後你儲存的那些版本都會放入這個資料夾下面。

  2. 將n8n鏡像檔pull到docker容器裏面

docker pull n8nio/n8n

成功畫面4. 執行docker run,運行伺服器 執行下列命令

docker run -it --rm -p 5678:5678 -v <YOUR-FOLDER-PATH>:/home/node/.n8n n8nio/n8n

# 範例
# docker run -it --rm -p 5678:5678 -v D:\Learning\n8n:/home/node/.n8n n8nio/n8n

他將會開啓一個localhost:5678的伺服器,之後就可以注冊N8N賬號!

至此,你已經知道如何架設N8N伺服器在本地的Docker Desktop上了。

其實,如果你只是要使用基礎的一些功能(完全離綫操作)了話,到這一步就可以了。
如果你有看我的這篇文章了話,就會知道我把伺服器假設在huggingface spaces上

部署
如何使用N8N來建立一個自動化部落格訂閲系統
教你如何利用N8N來建立一個個人化的自動化訂閲管理系統,并且處理郵件發送以及處理使用者如何加入訂閲的全自動化流程,重點是從頭到尾完全免費!!!
#N8N #自動化 #Supabase
Tommy Pan 閱讀更多 →
如何使用N8N來建立一個自動化部落格訂閲系統
但是這個我會改成使用本地伺服器的原因就是,HuggingFace Spaces在使用寄送mail節點的時候,他會擋住SMTP的端口,就會在認證的時候會一直出現Timeout,或者像是連不到網路卡住一樣,以至於不能使用send mail節點,但是可以使用Gmail節點,不過gmail節點同樣有他的限制。

  1. 使用OAuth2:
    可以使用OAuth2來當作認證的憑證,但是這個辦法有一個很明顯的缺陷,就是這個憑證會每隔一段時間(我實際經驗大概是3-5天)就會失效,所以我的訂閲系統常常就會失效。
  2. 使用Service Account:
    還有一個辦法就是可以在google cloud開啓Service Account,但是這個需要google workspace等級的賬號才能開啓,使用個人信箱的使用者是沒辦法使用這個google service Account的。

所以我決定將我的N8N的伺服器從HuggingFace Spaces 搬到我的主機上。

3. 將你的網域 DNS 設為由 Cloudflare 管理(免費)

爲什麽需要使用Cloudflare

如果你有要使用webhook節點了話,在本地的伺服器他預設的Webhook URL會是類似下面這種形式

http://localhost:5678/webhook-test/subscribe

如果你將網頁設在別人托管的伺服器了話,他根本不知道你的localhost:5678到底實際的位置在哪。
這個就像你問你朋友現在實際位置在哪,然後他跟你說在家一樣搞笑,所以需要一個方法讓外地的伺服器知道你實際的位置,那就會需要内網穿透成功畫面

  • 内網穿透
    内網穿透是一種網路技術,其主要目的是讓外部網路的用戶能夠連接和訪問位於內部私有網路(內網)中的設備或服務。通常內網中的設備使用的是私有IP地址,這些地址在公共互聯網上是無法直接訪問的,因為內網通常被防火牆和路由器保護著,只允許授權用戶從外網進入。

  • 內網穿透的基本原理

    1. 建立中轉服務器(穿透服務端):
      在公共網路(外網)架設一台中轉服務器,這台服務器具有公網 IP,可以被外部訪問。

    2. 內網設備啟動穿透客戶端:
      內網中的設備啟動穿透客戶端軟體,主動向中轉服務器建立連線。因為是內網發起連線,所以不會被防火牆阻擋。

    3. 建立安全通道(隧道):
      中轉服務器和內網客戶端間建立一條安全的隧道,當外部用戶訪問中轉服務器的指定端口或域名時,服務器會將請求通過隧道轉發到內網目標設備。

    4. 數據傳輸與回應:
      外部用戶透過中轉服務器發送的請求,經過隧道傳到內網設備,處理後的回應經由隧道返回給外部用戶。

這樣做的好處

  • 不用在路由器開放端口或配置複雜的轉發規則。

  • 不暴露真實的內網 IP,增強安全。

  • 可讓位於 NAT(網絡地址轉換)後的內網設備可被外部訪問。

簡單比喻
內網穿透就像是一條秘密通道,讓外面的人可以透過一條安全的地下通道進入你的內部房間,而不需要從正門(互聯網公開入口)走,只要能找到這條秘密通道,並且通道的兩端都有專人看守並加密溝通,外部世界就可以安全又方便地訪問內部。

實現步驟

先聲明,我是在namecheap租用我的網域名稱的,所以會需要下面的步驟,如果你在其他地方租用網域,操作方式或許會有點不同

  1. 先登入 Cloudflare,註冊帳號(免費)。
  2. 進入之後,點擊連結網域 成功畫面
  3. 點擊繼續 成功畫面
  4. 選擇免費 成功畫面
  5. 然後會出現以下畫面 成功畫面
  6. 登入namecheap
  7. 點擊MANAGE 成功畫面
  8. 點擊Advanced DNS,然後確定DNSSEC有關閉,像我這樣 成功畫面
  9. 點擊Domain,將Cloudflare提供的兩個DNS替換,點擊NameServes的DNS選項,選擇Custom DNS,將那兩個DNS複製貼上,然後記得點擊 ✔ 成功畫面
  10. 回到CloudFlare點擊繼續
  11. 完成的話會發送一封mail到你注冊的賬號裏面,收到就代表完成,可以進行下一步

三、安裝與設定 Cloudflare Tunnel

1. 安裝 cloudflared

2. 登入並建立 Tunnel

打開 PowerShell,執行:

cloudflared.exe login
  • 預設瀏覽器會跳出 Cloudflare 登入與授權頁面
  • 授權後會在 %USERPROFILE%\.cloudflared\ 產生授權憑證

3. 建立 Tunnel

建立 Tunnel(名稱自訂,如 n8n-tunnel):

cloudflared.exe tunnel create n8n-tunnel

4. DNS 綁定子域名

將你想要的子域名(比方說 webhook.yourdomain.com,請自行換成自己的)綁定到 Tunnel:

cloudflared.exe tunnel route dns n8n-tunnel webhook.yourdomain.com

這會自動在 Cloudflare DNS 承接 CNAME 記錄。

5. 編寫 cloudflared 設定檔 config.yml

%USERPROFILE%\.cloudflared\config.yml 建立或修改內容:

在同一個資料夾下,還有一個json檔,把這個名稱複製,接下來貼上。

tunnel:<YOUR-CREDENTIALS-FILENAME> # 在上面 create 指令有顯示
credentials-file: C:\Users\<YOUR-USERNAME>\.cloudflared\<YOUR-CREDENTIALS-FILENAME>.json

ingress:
  - hostname: webhook.yourdomain.com
    service: http://localhost:5678   # n8n 預設監聽本地端口
  - service: http_status:404        # fallback 回傳404

請替換 <> 及 Windows 用戶名和yourdomain成真實的名稱。

6. 啟動 Tunnel

cloudflared.exe tunnel run n8n-tunnel

此時 Cloudflare Tunnel 會將你本地的 5678 端口透過 webhook.yourdomain.com 對外公開。

四、n8n 中 Webhook 節點設定

  1. 在 n8n 的工作流中新增一個 Webhook 節點
  2. 設定 Path,例如填 success(不帶前綴斜線)
  3. 設定 HTTP Method (POST 或你需要的)
  4. 後續節點可以加入「Respond to Webhook」節點回應請求
  5. 啟用流程

五、修改以及呼叫你的 webhook

1. 在options選項新增Allowed Origins (CORS)

填入你的blog網址

2. 新增四個Response Headers

  • Access-Control-Allow-Origin
    Name: Access-Control-Allow-Origin
    Value: *(允許所有域名) 或 https://tommypan.dev (只允許您的網站)
  • Access-Control-Allow-Methods
    Name: Access-Control-Allow-Methods
    Value: GET, POST, PUT, DELETE, OPTIONS
  • Access-Control-Allow-Headers
    Name: Access-Control-Allow-Headers
    Value: Content-Type, Authorization
  • Content-Type
    Name: Content-Type
    Value: application/json

你本地 n8n 用 Cloudflare Tunnel 對外公開後,要呼叫的網址格式是:

https://webhook.yourdomain.com/webhook/<YOUR-WEBHOOK-PATH>

這裡 webhook.yourdomain.com 是你 Cloudflare DNS 指向 Tunnel 的子域名,<YOUR-WEBHOOK-PATH> 是你在 Webhook 節點設定的 path。

總結

透過本篇文章,我們完成了從零開始在本地端架設 n8n 伺服器並讓外網能夠訪問的完整流程。以下是整個過程的重點回顧:

🎯 主要目標達成

  • ✅ 成功在本地端部署 n8n 伺服器
  • ✅ 解決了 HuggingFace Spaces 的 SMTP 限制問題
  • ✅ 建立了穩定的外網訪問通道
  • ✅ 配置了正確的 CORS 設定

📋 關鍵步驟回顧

  1. 環境準備:安裝 Docker Desktop 並確認運行正常
  2. 本地部署:使用 Docker 容器運行 n8n 服務
  3. 域名管理:將 DNS 轉移到 Cloudflare 進行管理
  4. 隧道建立:使用 Cloudflare Tunnel 實現內網穿透
  5. Webhook 配置:設定正確的 CORS 響應頭

🔧 技術要點

  • Docker 容器化:確保 n8n 服務的穩定運行和易於管理
  • Cloudflare Tunnel:安全可靠的內網穿透解決方案
  • CORS 配置:解決跨域請求問題,確保 webhook 正常運作
  • DNS 管理:透過 Cloudflare 提供額外的安全性和效能優化

💡 為什麽選擇本地部署?

相比於 HuggingFace Spaces 等雲端平台,本地部署的優勢包括:

  • 無 SMTP 限制:可以正常使用郵件發送功能
  • 完全控制:資料和服務完全掌握在自己手中
  • 成本效益:長期使用成本更低
  • 穩定性:避免雲端平台的服務中斷影響

透過這個完整的部署流程,您現在擁有了一個功能完整、穩定可靠的 n8n 自動化平台,可以支援各種複雜的自動化需求,特別是像電子報訂閱系統這樣需要穩定郵件發送功能的應用場景。