Hello,我是 KK,今年的鐵人賽,想跟大家分享架設 n8n 遇到的一些挑戰跟意外,就讓我們一起學習吧。
前一天的文章 [[鐵人賽 day3 - 怎麼在本地架設 n8n]] 裡,我們試著依照官網的範例架起來 n8n (希望你有),但我大膽的推測,你應該很快就會遇到一些問題,至少我當初是這樣。
我會將我自己遇到的問題列出來,並告訴你解法。如果你有不同的環境架設問題,也歡迎留言告訴我。
由於前一篇文章有提到,使用 docker 安裝的好處較多,所以以下我都是假設 docker 下的狀況。
我們再看一次官網給的 docker command
docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
你下完這段指令後,打開瀏覽器輸入 localhost:5678
,應該就能看到 n8n 的網頁,會提示你輸入帳號密碼來註冊。這部份我們留到 [[鐵人賽 dayN - 初次見面,n8n ]] 再多說明吧。
在 [[鐵人賽 day3 - 怎麼在本地架設 n8n#^2b13bc]] 我有提到重開機後會消失的問題,這是因為官網給的指令包含 --rm
參數,這個參數的意思是「當 container 關閉後就自動刪除」。那理所當然重開機導致 container 被關閉,它自然就會消失了,此時再開啟一次 localhost:5678
就什麼都看不到了。
所以處理起來也很簡單,就是把 --rm
刪除,這樣原本的 container 就會保留。
不過如果你是 windows 安裝 docker desktop 的話,預設重開機後是不會啟動的,所以記得要打開 desktop,或是設定開機後自動啟動。
簡單來說,就是從設定 -> General -> [ ] Start Docker Desktop when you sign in to your computer ,開啟這個功能。
雖然 n8n 大部份功能都是呼叫外部服務為主,但有時候我們想要的功能會用到 webhook ,讓外部服務能呼叫 n8n。一個常見的例子是 Telegram 的對話監聽,背後的機制就是用 Telegram 的 setWebhook。
簡單來說,webhook 讓外部服務能連回你主機上運行的 n8n。由於現代的作業系統通常都會預設開啟防火牆,因此首先我們需要調整防火牆設定。
以 Windows 11 為例:
系統 -> 隱私權與安全性 -> Windows 安全性 -> 防火牆與網路防護
進入 Windows 安全性,並選擇防火牆與網路防護,然後關閉防火牆
將防火牆關閉只是第一步,第二步則是最好要有一個固定 IP,不然重開機後你的 IP 被換掉,webhook 很有可能需要重新設定。
不過固定 IP 以台灣來說,要看自家的網路提供商,如果沒有的話怎麼辦呢?
這時候我們就需要藉助像 ngrok
這樣的服務來解決這個問題了。ngrok
能夠為我們的主機建立一個固定的外部網址,即使我們的 IP 位址更換了,也能讓外部服務順利找到 n8n
。
讓我們在下一篇 [[鐵人賽 day5 - 架設 n8n 的好朋友 ngrok]] 來好好聊聊吧。 ^4a414f