周末在家里鼓捣 n8n 工作流,发现 n8n 大更新,可以直接在节点选择区域选择社区节点。
n8n 社区节点是收集应用商店里的 app,集成了来自全球各地的开发者提供的 n8n 平台和插件,可以连接各种官方来不及开发的平台和服务。
原来的社区节点安装非常麻烦,得到setting 区域,点开 community nodes,输入需要安装的社区节点名称,完成安装后,才能在工作流编排区域使用到。
这次新的版本升级,官方给了社区节点平等的位置,直接在节点选择区域,直接使用社区节点。
例如下图的 AI Scraper ,右上角有一个打勾标识,代表着这是一个官方审核通过的社区节点。
然而,这并不是我这次文章想要聊的内容。
因为我这次升级,没有做好原来 n8n 平台的工作流数据备份,我所有的工作流和认证信息,全丢了😭。
咋整?吸取教训,定时备份!
整体思路很简单,用魔法打败魔法,在 n8n 上创建定时备份的工作流,把 n8n 上左右的工作流和配置文件同步到个人 Github 上。
一、方案思路
n8n 定时触发器:每天定时启动备份流程。 2. 2. 执行 Shell 脚本:用 n8n 的“Execute Command”节点,打包 .n8n 目录。
推送到 GitHub:用“Execute Command”节点执行 git 命令,把备份文件推送到你的 GitHub 仓库。
二、详细步骤
1. 准备工作
1.1 在 GitHub 上新建一个私有仓库(比如叫 n8n-backup)
GitHub地址:https://github.com/。没有账号的同学,可以注册一个。
进入到首页后,点击左侧的绿色按钮 New,就可以进入到创建页面。
设置的时候,需要设定仓库名字、描述等信息。如果这个工作流数据是要保密的,记得勾选 Private。
1.2 创建 GitHub 密钥
进入 setting 页面里的 DeveloperSetting 页面,选择 Fine-grained tokens,创建 token。
接下来,设置 Token 名字和过期时间。因为这个是要长期有效的,所以可以选择永不过期。
token 的权限需要严格控制,接下来,在 Repository access 区域选择 only select repositories,然后,输入我们创建的仓库名 n8n-backup。
还要设置这个仓库的权限内容,配置流程和内容的读写权限。
最后,把 token 复制下来。
n8n工作流
这个工作流用的是社区大神贡献的节点。
但是,这里有一些节点不适合国内的宝宝使用,我针对国内的情况进行了改造。需要的宝宝可以后台留言 n8n工作流自动备份,分享给您。
这个工作流有两个大的部分:
1-使用公共 API,通过 n8n 节点导出所有工作流数据。
2-遍历数据,检查 Github 中是否存在一个使用工作流名称的文件。一旦检查完毕,如果该文件存在,它将更新 Github 上的文件;如果不存在,则创建一个新文件;如果相同,则忽略该文件。
我们先看第一部分,主工作流(Main workflow loop)
- 触发器(手动或定时)
- n8n 节点(getAll: workflow):获取所有需要备份的 workflow 列表
- Loop Over Items:循环处理每一个 workflow
- Execute Workflow:调用子工作流(subworkflow),对每个 workflow 进行备份
n8n 凭证创建
配置 n8n 节点,获取所有的工作流,需要先配置 APIKey。
创建 n8n api key。进入到 Setting 页面,选择n8n API。填入标签,n8n-backup。
拷贝和记录 api key 值。
确认配置,还剩最后一步。添加 BaseURL,官方给的 url 地址是:https://
.app.n8n.cloud/api/v1。
如果我们的 n8n 是通过 docker 安装到本地的。需要把地址改成:http://localhost:5678/api/v1。
ok,调整完成后,看到上方的绿色Connection tested successfully 则代表配置成功!
完成后,点击测试,可以看到右侧只有三条工作流。
第二部分,判断工作流情况
这个部分是一个子工作流,可以看到,当前的子工作流中,有GitHub 标识。我们需要配置GitHub 信息。
- 负责单个 workflow 的备份逻辑,包括:
- 检查 GitHub 上是否已有备份
- 判断内容是否有变化
- 新建/更新/跳过文件
填写Sub-workflow的 ID,这个很简单,在 sub-workflow 的页面 url 上,最后一串就是 ID。
回到主工作流,
点开配置,创建凭证这里,需要依次填入 User 账号(GitHub 账号)和 AccessToken。其中,AccessToken 就在我们前半部分介绍过了。
看到绿色的连接成功提醒,代表配置成功。
接下来,还需要配置 GitHub 信息,包含:
repo_owner - Github 所有者
repo_name - Github 仓库名称
repo_path - Github 仓库内的路径
配置起来很简单,需要依次填入:
- repo_owner:GitHub 用户名 或 组织名
例如:ncandyaoe
- repo_name:GitHub 仓库名
例如:n8n-backup(在 GitHub 上创建的仓库的名字)
- repo_path:你想在仓库里保存文件的路径
例如:backups/(表示存到仓库的 backups 文件夹下;如果放根目录就写 . 或留空)
但是运行的时候遭遇报错
仔细看一下报错信息:
Error code:404
Full message
{ "message": "Not Found", "documentation\_url": "https://docs.github.com/rest", "status": "404" }
咨询了一下 AI,原因是因为我的GitHub 仓库还未完成初始化。仓库没有任何 commit(完全空仓库),GitHub API 不能直接创建文件。
需要先在 GitHub 网页端手动创建一个 README.md 或任意文件,完成一次 commit。
简单一些,写一个 readme.md文档就好了。
再试一下:
到GitHub 再看一下,好的搞定了。
测试一下修改是否能正常同步,我对其中两个工作流的细节做了调整,重新同步后发现,update 的时间变成了 now,这代表工作流变动也是能正常同步的。
ok,今天的分享到这里,感兴趣的小伙伴们可以后台留言,分享 n8n 工作流给您。