Hello,我是 KK,今年的鐵人賽,想跟大家分享架設 n8n 遇到的一些挑戰跟意外,就讓我們一起學習吧。
上一篇 [[鐵人賽 day15 - workflow 的建立與匯出]] 我們建立了一個非常非常簡單的 workflow,包含了一個 telegram 的 credential,並且 download 成一個 json 檔儲存起來。
現在讓我們回到搬遷的話題了,我們要怎麼將舊 n8n 上的 workflow 都轉移到 新 n8n 上呢?
現在在新的 n8n 內,建立一個新的空白 workflow。然後一樣點右上的…
只是這一次,我們點 Import from File...
,然後選取之前存下來的 json 檔。神奇的事情發生了,一模一樣的 node 出現在這個空白 workflow 內。
但是...好像哪裡怪怪的,Telegarm 的 Send a text message
好像不能使用。點進去看,你會發現 Credential 消失了。
這是為什麼呢?
如果你點開 json 檔,會看到一段類似下方的區塊:
{
"parameters": {
"chatId": "123",
"text": "Hello World",
"additionalFields": {}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
208,
0
],
"id": "82b0b565-2d13-4942-9e49-5836dfa28397",
"name": "Send a text message",
"webhookId": "65769420-5a5f-4fc6-92fa-bad2e432d064",
"credentials": {
"telegramApi": {
"id": "u9L7A5iozh9jPIRf",
"name": "Telegram account"
}
}
}
這是 Telegarm 的 node 匯出成 json 的內容,你能在這裡看到 credential 的資訊。但是為什麼我們匯入後卻還要重設?
這是因為不同機器上建立的 Credential 對應的 id 並不相同,所以在轉移之後,還得要手動再設定一次正確的 credential,因為在匯入時會找不到相同 id。
當然,如果你純粹是在做一次備份,在同一台機器上重新匯入的話,是不會出現這個問題的。
當然對工程師而言,我們不見得要用這種低效的 UI 操作。官方也是有提供 command 的[^1],只要我們進入 docker container 內,下這段指令:
n8n export:workflow --all
我們就能一次匯出所有的 workflow 成一份 JSON 檔,再將匯出的 json 檔傳送到新的機器去,再下這個指令
n8n import:workflow --input=file.json
喔耶,我們的 workflow 就一口氣回來了。
還記得在 [[鐵人賽 day7 - HuggingFace Space 的坑#不提供 ssh 連線]] 不提供 ssh 連線的問題嗎?所以這招是無法在 HuggingFace 使用的,因為從一開始就沒辦法進去下指令。
至於 Credential,commands 下也有對應的指令可以下,倒是能避免手動匯入的 credential 無法對應的問題。
今天我們講了 workflow 的匯入方式,讓使用者能跟著操作一次轉移要做的事。
明天,我要分享 [[鐵人賽 day17 - 硬幹 n8n db 的下場]],看看我為了轉移 HuggingFace workflows 所做的蠢事。
[^1]: CLI commands | n8n Docs