N8N是一个开源的工作流自动化平台,你可以把它理解为“可以自己部署的Zapier”。它通过可视化的拖拽界面,让你轻松连接各种应用和服务,实现业务流程的自动化。
我的N8N实例大部分是部署运行在云服务器上,偶尔会在本地电脑使用,在使用N8N的时候,一直有工作流数据丢失和数据同步的焦虑,中间尝试使用过很多备份工作流的方式。
从最初手动导出JSON文件存到本地文件夹,到后来用工作流定时获取Workflow内容备份到Github,看似解决了工作流备份的问题,其实这两种方式都有很大的弊端,首先是工作流维护起来太麻烦,上传和下载还需要考虑工作流冲突问题,其次这种方式不太适合多个N8N实例上传和同步。
其实N8N开源版本是保留有工作流、凭证的备份和恢复功能的,只不过代码被屏蔽了,所以我就通过下载N8N的源码,在不影响原有功能的前提下,修改代码放开限制,解锁了企业版功能。
解锁企业版功能需要修改代码,所以N8N官方代码更新后需要检查企业版功能相关代码是否有新的改动,需要重新打包,正常官方更新之后,我这边也会立刻更新。感兴趣的可以查看我的代码改动,仓库地址:https://github.com/funcodingdev/n8n/tree/release/2.0.3-mock
最终实现效果如下:
N8N官方语言虽然不支持中文,但是其 editor-ui 组件内置了 i18n 插件,可通过文件注入的方式替换掉英文文案。基于这个原理,Github上有个大佬写了一个自动化脚本,仓库地址:
https://github.com/other-blowsnow/n8n-i18n-chinese
,通过监听N8N的最新发布版本,自动翻译打包成语言包,可在不修改代码的情况下,通过官方镜像部署N8N中文版。
为了方便我个人平常使用,我fork了大佬的仓库,我的仓库地址:https://github.com/funcodingdev/n8n-i18n-chinese,并添加了个人的自动打包上传Docker的中文镜像和企业版镜像的脚本,整个代码修改,几乎对原有代码无任何影响,接下来我将会通过官方镜像和自定义镜像两种方式演示如何部署N8N中文版+企业版。
官方镜像部署和个人镜像部署的方式基本是一样的,略微有一些参数的差别。相对来说我推荐使用个人镜像部署,会简单一些。
• 挂载目录
# 创建必要目录
mkdir n8n_data
mkdir n8n_editor_ui
# 挂载目录
docker volume create n8n_data
docker volume create n8n_editor_ui其中n8n_data为N8N数据目录,n8n_editor_ui
为汉化包目录,汉化包文件从仓库地址 https://github.com/other-blowsnow/n8n-i18n-chinese 下载,下载后解压至本地的n8n_editor_ui目录,最后目录结构为:
.
├── n8n_data
└── n8n_editor_ui
└── dist
├── assets
├── favicon.ico
├── index.html
├── static
├── tree-sitter-bash.wasm
└── tree-sitter.wasm• 运行服务
docker run -it --rm --name n8n-chinese \
-p 5678:5678 \
-v ./n8n_data:/home/node/.n8n \
-v ./n8n_editor_ui/dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist \
-e N8N_DEFAULT_LOCALE=zh-CN \
-e N8N_SECURE_COOKIE=false \
docker.n8n.io/n8nio/n8n• 挂载目录
# 创建必要目录
mkdir n8n_data
mkdir n8n_editor_ui
mkdir n8n_commands
# 挂载目录
docker volume create n8n_data
docker volume create n8n_editor_ui
docker volume create n8n_commands其中n8n_data为N8N数据目录,n8n_editor_ui
为汉化包目录,汉化包文件从仓库地址 https://github.com/other-blowsnow/n8n-i18n-chinese 下载,下载后解压至本地的n8n_editor_ui目录,n8n_commands
为企业版解锁文件目录,需要下载解锁文件放在这个目录,下载地址为:https://github.com/funcodingdev/n8n-i18n-chinese/tree/main/script
最后目录结构为:
.
├── n8n_data
├── n8n_commands
│ └── base-command.js
└── n8n_editor_ui
└── dist
├── assets
├── favicon.ico
├── index.html
├── static
├── tree-sitter-bash.wasm
└── tree-sitter.wasm• 运行服务
docker run -it --rm --name n8n-chinese-mock \
-p 5678:5678 \
-v ./n8n_data:/home/node/.n8n \
-v ./n8n_editor_ui/dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist \
-v ./n8n_commands/base-command.js:/usr/local/lib/node_modules/n8n/dist/commands/base-command.js \
-e N8N_DEFAULT_LOCALE=zh-CN \
-e N8N_SECURE_COOKIE=false \
docker.n8n.io/n8nio/n8n• 挂载目录
# 创建必要目录
mkdir n8n_data
# 挂载目录
docker volume create n8n_data• 运行服务
docker run -it --rm --name n8n-chinese \
-p 5678:5678 \
-v ./n8n_data:/home/node/.n8n \
-e N8N_SECURE_COOKIE=false \
funcodingdev/n8n-chinese• 挂载目录
# 创建必要目录
mkdir n8n_data
# 挂载目录
docker volume create n8n_data• 运行服务
docker run -it --rm --name n8n-chinese-mock \
-p 5678:5678 \
-v ./n8n_data:/home/node/.n8n \
-e N8N_SECURE_COOKIE=false \
funcodingdev/n8n-chinese-mock运行成功后的效果图如下:
现在只需要创建一个空的 Git 仓库,N8N 内配置好仓库地址和分支,后续工作流和凭证列表都支持备份至 Github,支持 Github 恢复至 N8N。
这就是整个部署的流程,如果大家中间有遇到什么问题,可以评论区留言,或者添加我的微信:funcoding_ai。
基于我自己的需求,我还开发了一个企业微信社区节点:https://www.npmjs.com/package/n8n-nodes-wecom,几乎包含了企业微信所有的 API 接口,支持企业微信消息收发,支持企业微信客服号连接微信等,走的官方 API,安全不封号。
关注我,后续我会分享我基于企业微信开发的一些 N8N 工作流。