在 Azure App Service 部署 n8n:容器化安裝與資料持久化設定

  • 692
  • 0

因為 LLM 的發展,讓很多自動化流程的工具可以整合 AI 來完成我們的自動化流程的任務,其中開源的 n8n 就獲得很多的關注,網路上可以找到很多社群分享的流程跟經驗,而 n8n 可以選擇 Saas 的服務也可以自己架設,所以本文就來介紹如何透過 Azure App Service 來部署環境,以及如何設定容器儲存檔案的位置和方式,避免容器重啟之後檔案遺失。

實做

首先來建立一個 Web 應用程式,基本設定的部分要注意發佈要選擇容器,作業系統建議 Linux,畢竟要跑容器還是 Linux 會穩定一點,而方案建議至少要 B1,免費方案會跑不動或一下子就超過運算資源限制。

接下來針對容器的來源作設定,選擇其他容器登入,然後輸入 docker 的位置 https://docker.n8n.ioimage n8nio/n8n:latest

其他分頁選項就按照需求設定了,沒有特別需要說明的部分,都設定好之後就可以開始部署了。

部署好之後第一次透過網址來連到站台就會開始觸發拉 image 跟執行容器,而我們可以在部署中心來察看執行的 Log,如果網站沒有如預期成功執行就可以來確認是否有錯誤發生。

跑一下之後就可以看到第一次執行的設定畫面了。

不過我們還有些設定還沒完成,如果沒有設定的話就會導致重啟站台所有資料就會消失,因為是用容器的方式執行,所以要另外設定建立的檔案會存在外部的儲存位置而不是容器裡面,接下來說明兩種設定的方式,可以按照需求來自行選擇。

方法一

點選環境變數,預設應該可以看到 WEBSITES_ENABLE_APP_SERVICE_STORAGE 這個變數,預設值會是 false,把它改成 true 之後存檔,網站重啟之後我們設定的資料就會存在 App Service 的儲存空間上了。

我們可以透過進階工具來找到檔案儲存的位置。

在進階工具點選 Bash,檔案儲存的路徑會是在 /home/node/.n8n,如果需要編輯或處理一些檔案就可以在這邊找到檔案,這個方法因為是把檔案儲存在 App Service 的空間,所以不會產生額外的費用,但是 App Service 會根據方案有不同的儲存空間大小,如果正式環境使用就不建議透過這方式來使用,因為可能會有上傳大量的檔案,會導致空間不足。

方法二

第二個方式是透過 Azure File 來儲存相關的檔案,首先來建立一個儲存體帳戶,主要服務可以選擇檔案儲存體,其他設定像是備援方式就根據需求設定其他頁籤的資料。

建立好之後點選檔案共用來新增設定。

輸入名字跟選取存取層。

根據區求看是否啟用備份,建議正式環境可以啟用,在檔案出問題時候就可以從備份的資料救回來。

接下來回到 App Service 的組態設定來把儲存體掛載上去。

輸入名稱和選擇通訊協定,並輸入掛接的路徑 /home/node

最後記得按儲存,不然設定不會生效,點選儲存也會觸發重啟網站。

網站重啟好之後儲存的資料就可以在檔案共用瀏覽到儲存的檔案了。

設定 Webhook Url

最後還有一個參數需要設定的,如果我們要透過網址來觸發自動化流程,這時候會發現網址會是 localhost,這樣我們會無法從外部來觸發。

這時候可以到環境變數來新增 WEBHOOK_URL 這個參數,值就輸入網站的網址,如果有綁自訂網域的話就可以輸入自己的網域。

套用之後就可以看到 Webhook 的網址不再是 localhost 了,我們就可以從外部透過網址來觸發我們的自動化流程了。

結論

本文介紹了如何透過 App Service 執行容器的方式來部署 n8n,也介紹了兩個方式來儲存容器執行產生的檔案,避免網站重啟之後檔案就不見了,而第一種方式建議只使用在測試或是開發環境,也要注意檔案的儲存空間上限,而第二種方式就建議在正式環境使用了,不僅可以更方便的管理和下載檔案,也可以在重新部署站台時候重新掛載回去就會有原本的設定了,更可以透過備份功能來備份我們的檔案,讓檔案可以更加的安全。

參考資料