n8n:工作流自动化
n8n 是一款功能强大的工作流程自动化工具,可以自行托管,并允许用户添加自定义函数、逻辑和应用程序。n8n 社区提供了丰富的第三方 API 节点,方便用户连接和使用主流的海外服务。本文将详细介绍 n8n 的部署流程、核心功能及实用技巧,旨在帮助读者有效地掌握并应用这一工具,无论是对于自动化工作流程的新手还是有经验的专业人士。
对于初学者,建议先跟随教程 基于 n8n 的开源自动化:以滴答清单同步 Notion 为例 来熟悉 n8n 的基本操作和广泛应用。此外,更多关于 n8n 的使用案例和详细介绍,可以参考 使用自动化工作流聚合信息摄入和输出 和 开源工作流自动化神器 n8n。
n8n 的部署步骤
在桌面终端运行
git clone https://github.com/n8n-io/n8n-hosting.git
命令,下载 n8n-hosting 仓库中的 withPostgres 文件夹。将上方的 withPostgres 目录复制到 NAS,并切换到该路径
cd /volume1/docker/n8n/withPostgres
。在该目录下编辑
docker-compose.yml
文件,内容如下:# https://github.com/n8n-io/n8n-hosting/tree/main/docker-compose/withPostgres # https://docs.n8n.io/hosting/installation/server-setups/docker-compose/#5-create-docker-compose-file version: "3.8" services: n8n-postgres: image: postgres:16 container_name: n8n-postgres restart: always environment: - POSTGRES_USER - POSTGRES_PASSWORD - POSTGRES_DB - POSTGRES_NON_ROOT_USER - POSTGRES_NON_ROOT_PASSWORD volumes: - /volume1/docker/n8n/db:/var/lib/postgresql/data - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh healthcheck: test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}'] interval: 5s timeout: 5s retries: 10 n8n: image: docker.n8n.io/n8nio/n8n container_name: n8n restart: always environment: - N8N_HOST=${N8N_HOST} - NODE_ENV=production - N8N_EDITOR_BASE_URL=${N8N_EDITOR_BASE_URL} - VUE_APP_URL_BASE_API=${N8N_EDITOR_BASE_URL} - WEBHOOK_URL=${N8N_EDITOR_BASE_URL} - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=n8n-postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=${POSTGRES_DB} - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER} - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD} - TZ=Asia/Shanghai ports: - 5720:5678 links: - n8n-postgres volumes: - /volume1/docker/n8n/storage:/home/node/.n8n depends_on: n8n-postgres: condition: service_healthy
修改 withPostgres 目录的
.env
文件中,可以更改 PostgreSQL 的默认数据库名称、用户和密码。N8N_HOST
和N8N_EDITOR_BASE_URL
用于第三方 API 的回调访问。如果你启用了外网调用 n8n 的访问权限,建议开启 Two-factor authentication (2FA),以防止 API 信息泄露。不建议将N8N_HOST
设为内部域名,否则在后续设置中可能会出现Bad Request: bad webhook: An HTTPS URL must be provided for webhook
错误。N8N_HOST=yoursite.com N8N_EDITOR_BASE_URL=http://yoursite.com:5720/ POSTGRES_USER=changeUser POSTGRES_PASSWORD=changePassword POSTGRES_DB=n8n POSTGRES_NON_ROOT_USER=changeUser POSTGRES_NON_ROOT_PASSWORD=changePassword
运行
sudo docker-compose up -d
命令进行部署。
部署完成后,通过浏览器访问 http://<你的服务器IP或域名>:5720
即可实现 n8n 自动化。
在初次部署时,可能会遇到 for n8n Container "5a6edd16e779" is unhealthy.
的提示,这时只需忽略该提示,再次运行 sudo docker-compose up -d
命令即可解决问题。如果在更新 git 仓库文件后重新部署时遇到提示无需更新的情况,你可以先删除容器,然后重新部署。
另外,docker-compose.yml
文件中的 /volume1/docker/n8n
是 n8n 的配置目录,你需要确保 n8n 有该路径的读写权限,否则项目可能会在启动时报错。
节点介绍
HTTP Request
HTTP Request 节点允许你使用 REST API 发出 HTTP 请求,从任何应用程序或服务中查询数据。本节点可用于定制 webhook 触发。
在使用过程中,如果遇到网页端连接不稳定的问题,可以在节点设置中的 On Error 选项选择 Continue,并在 Options 中添加超时选项,例如 Timeout 10000 ms。
IF
IF 节点允许你根据比较操作有条件地分割工作流。注意,布尔值的 true 和 false 需要使用双重花括号 {{}}
包围。
Github Trigger
Github Trigger 节点可以通过在 Github 上设置 Webhook 来获得推送通知。
如果遇到 Workflow could not be activated: A webhook with the identical URL probably exists already. Please delete it manually on Github!
的错误提示,通常是因为在仓库中存在多个相同的 Webhook 地址。你可以进入 repo 仓库,选择 Settings > Code and automation > Webhooks
,手动删除重复的 Webhook 地址来解决这个问题。
使用 Tips
变量路径
对于一些复杂的输入变量,你可以直接使用 n8n 自带的工具来复制路径。在 INPUT 区域选择 JSON,点击要选择的参数,然后点击 INPUT 右上角的复制按钮,选择 Copy Parameter Path
。
其他操作记录
数据库升级
旧版本 n8n 使用的是 PostgreSQL 11 数据库,而新配置已升级至 PostgreSQL 16。建议使用 pgautoupgrade 工具来完成升级过程。
Discord OAuth2
在 Discord Applications 中新建应用,然后在 OAuth2 > General > Redirects 中添加回调地址。
接着,将 CLIENT ID 和 CLIENT SECRET 添加到 n8n 中即可。
通过上述步骤,你可以灵活地使用 n8n 来构建自动化工作流,实现数据的聚合、管理和分析。希望这些信息能够帮助你高效地使用 n8n,使你的工作和生活更加自动化和便捷。如果你在使用过程中遇到任何问题或有更多的经验分享,请在评论区留言,我们可以一起讨论和解决。
- 0
- 0
- 0
- 0
- 0