Appearance
💡 n8n 笔记
1. 什么是 n8n?
n8n 是一款基于节点(Node-based)的公平开源(Fair-code)工作流自动化工具。简单来说,它就像是一个可以自主掌控、无限扩展的“高级版 Zapier”。通过可视化的方式,把不同的应用、数据库和 API 像搭积木一样串联起来,实现全自动化的数据流转。
2. 概念速览
在 n8n 中,有三个高频概念需要牢记:
- Trigger(触发器): 工作流的起点。可以是“每隔一小时(定时)”、“收到一封新邮件(事件驱动)”或者“接收到一个 Webhook 请求”。
- Node(节点): 执行具体动作的单元。比如发送一条 Slack 消息、在 MySQL 插入一条数据、或者运行一段自定义的 JavaScript/Python 脚本。
- Data Structure(数据结构): 节点之间传递的数据一律是 JSON 数组。前一个节点的输出,就是后一个节点的输入。
3. 核心环境变量
在部署 n8n 时,强烈建议先配置以下两个至关重要的环境变量:
GENERIC_TIMEZONE=Asia/Shanghai:将全局时区设置为上海(北京时间),确保定时触发器(Cron)和时间节点符合本地时间,避免由于默认 UTC 时区导致的定时任务时差问题。N8N_SECURE_COOKIE=false:如果你在本地或测试环境中使用 HTTP 访问(没有配置 SSL/HTTPS 证书),必须将其设置为false。否则由于浏览器的安全 Cookie 策略,你将遇到登录后提示 Cookie 错误或无法保持登录状态的问题。
4. 多途径部署指南
途径 A:Docker 容器化部署(推荐)
使用 Docker 部署是最快、最干净的方式。通过 -e 参数可以直接将核心环境变量注入到容器中。
步骤 1:创建持久化数据目录
在宿主机上创建一个目录,用于存放 n8n 的工作流和配置数据,确保容器重启或更新时数据不丢失:
bash
mkdir -p /data/n8n步骤 2:运行 Docker 容器
执行以下命令启动容器,并将主机的 5678 端口映射出来:
bash
docker run -d \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE=Asia/Shanghai \
-e N8N_SECURE_COOKIE=false \
-v /data/n8n:/home/node/.n8n \
--restart always \
n8nio/n8n途径 B:Node.js 本地原生部署 (npm)
如果你不想使用容器,可以直接利用系统的 Node.js 环境进行全局安装和启动。
步骤 1:环境检查
确保系统已安装 Node.js(建议使用 Node.js v18 以上版本)和 npm:
bash
node -v
npm -v步骤 2:全局安装 n8n
使用 npm 将 n8n 核心包安装到全局环境:
bash
npm install n8n -g步骤 3:注入变量并启动
根据你的操作系统环境,选择对应的命令注入变量并启动 n8n:
Linux / macOS:
bashexport GENERIC_TIMEZONE=Asia/Shanghai export N8N_SECURE_COOKIE=false n8n startWindows (CMD):
cmdset GENERIC_TIMEZONE=Asia/Shanghai set N8N_SECURE_COOKIE=false n8n startWindows (PowerShell):
powershell$env:GENERIC_TIMEZONE="Asia/Shanghai" $env:N8N_SECURE_COOKIE="false" n8n start
5. 生产环境避坑建议
- 数据库切换: n8n 默认使用内置的 SQLite 数据库。如果是生产环境或高并发场景,强烈建议在启动时通过环境变量将后端数据库切换为 PostgreSQL,这样系统的稳定性和并发响应速度会得到质的飞跃。
- 后台常驻(针对 npm 部署): 如果使用 Node.js 部署在 Linux 服务器上,直接运行
n8n start会在关闭终端时退出。建议配合pm2进行后台常驻管理:bashnpm install pm2 -g pm2 start n8n -- start