n8n 实战:开源工作流自动化编排

n8n 是一款开源的可视化工作流自动化工具,能像搭积木一样把 API、数据库、定时任务和 AI 模型串成自动化流水线。相比 Zapier 这类 SaaS,n8n 可以私有化部署、节点无限、数据不出内网,特别适合想把重复劳动自动化的开发者与团队。本文从部署到实战,带你跑通第一条工作流。

一、什么是 n8n,解决了什么问题

n8n(读作 “n-eight-n”)用「节点(Node)」表示每一步操作,节点之间用连线传递数据。你不需要为每个平台写一整套集成代码,只要在画布上拖出 HTTP Request、Schedule、Code、IF 等节点,配置参数即可。它内置 400+ 官方节点(GitHub、Slack、MySQL、OpenAI 等),也支持用 JavaScript / Python 写自定义逻辑。

对开发者来说,n8n 的核心价值在于:把”每天手动做的杂事”变成”服务器按时跑的流水线”,而且全程数据可控、可审计、可迁移。

二、Docker 一键部署(推荐)

最省心的方式是用 Docker Compose 起一个 n8n 实例。注意把数据目录挂载出来,并设好基础 URL 与加密密钥,否则重启后工作流配置会丢。需要先准备好 Docker 环境(参见站内 Docker Compose 实战)。

version: "3.8"
services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=改成强密码
      - N8N_PROTOCOL=http
      - N8N_HOST=127.0.0.1
      - N8N_PORT=5678
      - N8N_ENCRYPTION_KEY=生成一个32位以上随机串
      - GENERIC_TIMEZONE=Asia/Shanghai
    volumes:
      - ./n8n-data:/home/node/.n8n
    networks:
      - n8n-net
networks:
  n8n-net:
    driver: bridge

启动命令:docker compose up -d,浏览器访问 http://<服务器IP>:5678 即可进入编辑器。生产环境建议用 Nginx 反代并配 HTTPS(参见站内 Nginx 反向代理实战),不要让 5678 端口裸奔公网。

三、核心概念:节点、触发器与凭证

  • 触发器(Trigger):工作流的起点,如 Schedule(定时)、Webhook(收到 HTTP 请求)、Manual(手动)。
  • 节点(Node):每个处理单元,如 HTTP Request 调接口、Set 改字段、Code 写脚本、IF 做分支。
  • 凭证(Credential):统一管理各平台的 Token / 密钥,n8n 会加密存储,避免在节点里明文写密码。
  • 表达式(Expression):用 {{ $json.xxx }} 引用上一步的输出,是串联数据的关键。

四、实战:RSS 定时抓取 → AI 总结 → 推送到企业微信

一个很实用的场景:每天早上自动抓取几个技术博客的 RSS,用大模型生成摘要,再推到群里。工作流编排如下:

  1. Schedule 节点设 0 9 * * *(每天 9 点触发)。
  2. RSS Read 节点填订阅源地址,拉取最新文章。
  3. Code 节点把标题 + 链接拼成提示词。
  4. HTTP Request 节点调用大模型(或直接接 Dify / Ollama 服务,见站内 Dify+Ollama 部署实战)生成一句话总结。
  5. HTTP Request 节点把结果 POST 到企业微信机器人 Webhook。

下面这段 Code 节点(JavaScript)把多篇 RSS 条目合并成待总结文本:

// 输入: items 为 RSS 条目数组,每个含 title / link
const items = $input.all();
const lines = items.map(it => `- ${it.json.title}  ${it.json.link}`);
return [{
  json: {
    prompt: "用一句话总结以下技术文章,并给出是否值得精读的判断:\n" + lines.join("\n")
  }
}];

五、实战:Webhook 接收表单 → 落库 + 通知

用 n8n 做轻量后端也很顺手。Webhook 节点暴露一个 URL,前端表单提交后:

  1. Webhook 收到 JSON(如姓名、邮箱、留言)。
  2. IF 节点校验必填字段,缺失则走”返回 400″分支。
  3. PostgreSQL / MySQL 节点执行 INSERT 入库。
  4. 邮件节点发通知给管理员。

本地测试用一条 curl 即可:

curl -X POST http://127.0.0.1:5678/webhook/contact \
  -H "Content-Type: application/json" \
  -d '{"name":"小明","email":"a@b.com","msg":"想合作"}'

六、n8n 与 Zapier / Make 怎么选

维度n8nZapierMake
部署方式可自托管云 SaaS云 SaaS
价格开源免费按任务计费,偏贵中等
数据主权数据留在内网出境出境
自定义代码原生 JS / Python有限有限
适用规模中大型 / 技术团队小团队小团队

七、与大模型联动:把 AI 嵌进流水线

n8n 很适合充当”AI Agent 的触发器与执行器”。你可以把 Dify 部署的私有大模型通过 HTTP Request 节点调用,让 n8n 负责调度、取数、落库,Dify 负责推理。配合 GitHub Actions 还能把”文档变更 → 自动重新生成知识库”做成 CI 流水线(参见站内 GitHub Actions 实战)。

八、生产环境建议

  • 凭证集中管理,启用 n8n 的加密密钥,切勿把 Token 写进节点表达式明文。
  • 给关键节点开”错误触发(Error Trigger)”,失败自动告警。
  • 定时备份 ./n8n-data 卷,所有工作流配置都在里面。
  • 用 Nginx 反代 + HTTPS,关闭公网裸端口。
  • 资源有限时把大模型推理放到单独机器,n8n 本身很轻量。

九、小结

n8n 把”自动化”从昂贵的 SaaS 变成可自托管的开源能力。从 RSS 汇总到表单落库,再到 AI 流水线编排,它都能胜任。把重复劳动交给它,你只管做真正需要创造力的事。

上一篇 Supervisor 实战:进程守护与后台服务保活
下一篇 Tailwind CSS 实战:原子化 CSS 与工程化落地
最新评论
Docker 网络模式详解:bridge/host 生产选型 - FSData
Docker 网络模式详解:bridge/host 生产选型 - FSData
8月20日
[…] 注意最后那条:把端口绑定到 127.0.0.1,再由宿主机上的 Nginx 反代进来,比直接 -p 80:80 暴露安全得多,也方便统一做
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
8月20日
[…] Pinia 的工程化用法,可以参考我们之前的实战文章 《Vue3 组合式 API + Pinia:状态管理从入门到实战》,那里覆盖了 Sto
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
8月19日
[…] 状态,点一下就能起停容器,配合我们讲过的 Docker Compose 编排 […]
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
8月19日
[…] 缓存三大坑的本质都是”缓存失效导致请求穿透到数据库”。记住口诀:穿透用布隆、击穿用锁、雪崩用错峰。配合合理的过期策略
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
8月19日
[…] Docker 镜像部署。结合我们之前写的 Docker Compose 一键编排实战,可以在 CI […]