这个教程解决什么问题
读完这篇你能做到三件事:说清楚 n8n 的 6 个核心概念,自己部署一个数据不丢的 n8n,并且搭出第一条”定时触发 → 调接口 → 按条件分支”的完整自动化。全程以点选节点为主,需要敲的命令只有两条。
先把 n8n 是什么说清楚:它是一个开源的工作流自动化工具,你可以把它理解成”自己搭的流水线车间”——左边放一个触发器,中间串起一串处理节点,右边落地到邮件、表格、数据库或者 IM 群机器人。它是 fair-code 模式:源码在 GitHub 公开,社区版可以自由自托管,数据不出自己的机器,这和把流程与数据交给第三方 SaaS 是本质区别。官方维护着数百个现成节点,从 HTTP 请求、各类数据库到主流 AI 模型 API 都有封装,绝大多数自动化场景不用写一行代码。
另一个新手高频疑问也在这回答掉:n8n 和 Dify 这类 LLM 应用平台不是同类工具。n8n 的核心是流程编排,AI 只是节点类型之一;选型对比属于另一篇文章的事,见文末相关阅读。资源方面不用担心,n8n 本体不重,1 核 2 GB 的机器就能稳跑入门负载。
环境与版本
两种起法任选其一,效果一致:
方式 A,Docker(推荐,升级和回滚都省心):
docker volume create n8n_data
docker run -d --name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE=Asia/Shanghai \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
方式 B,npm 直装(本机快速试用,需要先装 Node.js,版本要求【待补:官方文档当前要求的 Node.js 最低版本】):
npx n8n
npx 会自动下载并启动,浏览器打开 http://localhost:5678 就能看到界面。三个通用事实先记住,后面处处用到:官方镜像地址是 docker.n8n.io/n8nio/n8n;服务默认监听 5678 端口;所有数据(工作流、凭据、执行记录)都落在容器内 /home/node/.n8n 目录,Docker 方式靠挂载卷持久化,npm 方式落在用户主目录的 .n8n 文件夹。首次访问会让你创建 owner 账号,它是你自己这套实例的管理员,与 n8n 官方云服务无关。
【待补:本文验证所用 n8n 版本号与部署环境(本机/服务器、Docker 版本)】
先搞懂 6 个核心概念
n8n 界面上出现的所有名词都能归进下面 6 个概念,按依赖顺序讲:
- Workflow(工作流):画布上的一张完整流程图,一个自动化对应一条。保存后注意右上角的 Active 开关——打开它,工作流才会按触发条件自动运行。
- Node(节点):画布上的一个方块,只干一件具体的事。分三类记:触发节点管”什么时候开始”(Schedule Trigger 定时、Webhook 收回调),动作节点管”做什么”(HTTP Request 发请求、Edit Fields 改字段、Code 写脚本),逻辑节点管”怎么走”(IF 分支、Merge 合并、Split Out 拆分)。
- Trigger(触发器):每条工作流必须有且只有一个起点。定时、收到 Webhook、手动点 Execute Workflow,都是触发方式。
- Credentials(凭据):API key、账号密码这类敏感信息单独存放,加密保存在实例里。关键规则:导出的工作流 JSON 不包含凭据,所以导入别人的模板后必须重新配凭据——这是设计,不是 bug。
- Expression(表达式):节点参数里引用上游数据的语法。参数框切到 Expression 模式,用双层花括号包住 $json.字段名,就能取到上一节点输出 JSON 里的对应字段。这是 n8n 里使用频率最高的操作,练熟它才算真正入门。
- Execution(执行记录):左侧 Executions 页面保留每次运行的输入输出与报错。排障第一现场在这里,别盯着画布干猜。
串起来记:凭据挂在节点上,节点连成工作流,触发器拉起运行,节点间靠表达式传数据,运行结果进执行记录。
分步骤:搭出第一个自动化
目标效果:每 60 分钟请求一个公开 API,抽出关键字段,数值超阈值就走告警分支。三步搭完。
第一步,放触发器。 画布点加号,搜 Schedule Trigger,间隔设为 60 分钟。它是整条链的起点,没有上游。
第二步,加 HTTP Request 节点。 Method 选 GET,URL 填一个无需鉴权的公开接口(天气、汇率类接口都行)。点 Execute Workflow 手动跑一次,节点右上角出现绿色标记,展开能看到返回的 JSON 结构——记住这一步看到的字段名和层级,下一步要用。
第三步,加 IF 节点做分支。 条件里切 Expression 模式,引用上一步 JSON 里的数值字段(写成 $json.温度 这类,外面包双层花括号),大于 30 走 true 分支。true 后面挂你最常用的通知节点(邮件、IM 机器人都行),false 分支留空即可。
保存,打开 Active 开关,第一条自动化就上线了。想直接从成品学起,n8n 支持导入工作流 JSON,下面是最小骨架的样子:
{
"name": "定时取数告警",
"nodes": [
{ "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger" },
{ "name": "HTTP Request", "type": "n8n-nodes-base.httpRequest" },
{ "name": "IF", "type": "n8n-nodes-base.if" }
],
"connections": {
"Schedule Trigger": { "main": [[{ "node": "HTTP Request" }]] },
"HTTP Request": { "main": [[{ "node": "IF" }]] }
}
}
实际导出的 JSON 比这长得多,上面只保留骨架帮你认结构:nodes 数组放节点定义,connections 描述节点间的连线关系。导入后补上凭据和参数即可运行。
常见坑
坑 1:定时任务触发时间不对
n8n 的默认时区不是北京时间,Schedule Trigger 会按实例默认时区整点错位。解法在启动命令里加 GENERIC_TIMEZONE=Asia/Shanghai(上文命令已带),改完要重建容器才生效。验证办法:跑一条每分钟触发的工作流,去 Executions 看时间戳与本地时间是否一致。
坑 2:手动能跑,自动从来不跑
Execute Workflow 只验证逻辑,Active 开关不开就永远不会自动触发。打开开关后触发器状态点会变化;如果是 Webhook 触发,还会切换出生产环境 URL——测试地址和生产地址是两个 URL,外部系统要接的永远是后者,这块容易混淆,Webhook 实战文见相关阅读。
坑 3:表达式取值报 undefined
九成是字段层级写错。接口返回的数据往往包在 data、body 之类的外层里,正确做法是展开上一节点的输出 JSON,一层层确认真实路径,而不是凭感觉猜;上游是数组的场合,还要先指定下标或用循环节点拆条,再逐条引用。
坑 4:重建容器后工作流全没了
没挂数据卷。/home/node/.n8n 就是数据库所在地,Docker 方式必须用 -v 挂出来;npm 方式的数据在用户目录 .n8n 文件夹,清理磁盘时别顺手删掉。验证挂载:docker volume inspect n8n_data 能看到挂载点即正常。
最终效果与验证
上线后满足三点即合格:Executions 里每隔 60 分钟出现一条绿色成功记录;数值超限时正确走告警分支;重启容器后工作流、凭据、执行历史完好(数据卷生效的最终验证)。做到这里,n8n 的核心循环——搭流程、看数据、排错误——你已经完整走了一遍,后面就是照着这个骨架往画布上加节点,80% 的日常自动化都是这四类节点(触发、取数、处理、分支)的排列组合。

【待补:工作流画布与 Executions 页面截图】