n8n 是一个开源的自动化工具(也称为工作流自动化平台),专门用于连接不同的应用程序和服务,以实现流程自动化。
你可以把它理解为一个“无需编程技能”的自动化连接器,允许用户:
通过图形化界面轻松创建自动化工作流程(Workflow)。
将不同的 SaaS 服务(如 Slack、Notion、GitHub、邮件服务等)整合到一起,实现数据的自动流转。
灵活地配置数据处理逻辑,比如条件判断、数据转换、定时任务等。
n8n 的核心优势:
开源免费:
用户可以自行托管,保证数据隐私,避免高昂订阅成本。节点化设计:
提供数百个预制节点(Nodes),支持绝大多数主流 SaaS 服务和系统,拖拽即可构建复杂自动化流程。易于扩展:
支持自定义节点和调用 API,能灵活扩展到几乎所有的应用场景。直观界面:
可视化的拖拽界面,无需编程基础也能快速搭建工作流。灵活部署:
可以本地、云端、Docker 等多种方式部署。
常见应用场景:
市场营销:
自动化邮件发送、数据追踪、用户反馈分析等。DevOps 流程:
自动化构建与部署、服务器监控告警、任务调度管理等。销售与客户关系管理:
自动化客户信息同步、线索管理与跟进。个人效率提升:
自动备份文件、每日任务提醒、通知推送。内容运营:
自动化发布内容到社交媒体平台,自动化内容抓取和分发。
简单示例:
比如,有一个常见的自动化场景:
当你收到特定主题的邮件时,自动在 Slack 上通知你的团队,并把邮件的内容自动记录到 Notion 或者 Google Sheets 里。
通过 n8n,仅需几分钟就可以用几个拖拽节点轻松实现上述自动化。
本地mac部署N8N
📌 一、安装前准备
确保你的 Mac 已安装了以下环境:
Homebrew
Node.js(推荐 18.x 或更高版本)
如果没有安装,可以参考下面步骤:
🔹 安装 Homebrew(如已安装跳过)
打开终端,执行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
🔹 安装 Node.js 和 npm(如已安装跳过)
brew install node
检查版本:
node -v
npm -v
📌 二、安装与启动 n8n
🔹 安装 n8n
建议全局安装:
npm install n8n -g
安装完成后检查 n8n 版本:
n8n -v
🔹 首次启动 n8n
在终端直接运行:
n8n
默认情况下,n8n 启动后,数据将存储在你当前用户的主目录下的隐藏文件夹:
~/.n8n
📌 三、访问 n8n 界面
启动后,终端会显示类似:
Editor is now accessible via:
http://localhost:5678/
在浏览器打开地址:
现在即可进入 n8n 的可视化编辑器 🎉
📌 四、通过 Docker 部署(推荐方式)
如果你习惯使用 Docker,也推荐使用 Docker 方式运行 n8n:
🔹 安装 Docker Desktop(如已安装跳过)
访问 Docker 官网 下载并安装 Docker Desktop for Mac。
检查 Docker 是否安装成功:
docker -v
🔹 启动 n8n Docker 容器
打开终端执行:
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
说明:
-p 5678:5678
:映射 n8n 默认端口 5678。-v ~/.n8n:/home/node/.n8n
:数据持久化存储到你的本机目录。
启动后同样在浏览器打开:
📌 五、设置 n8n 为开机自启动(进阶,非必需)
你可能希望 n8n 在系统启动时自动启动:
🔹 使用 PM2 进程管理工具
安装 PM2:
npm install pm2 -g
用 PM2 启动 n8n:
pm2 start n8n --cron-restart="0 4 * * *" -- start
保存当前的进程列表,并开机自动启动:
pm2 save
pm2 startup
PM2 会提供一段命令(带有 sudo),根据提示复制粘贴执行即可。
以后你就不用每次重启电脑都手动启动 n8n 了。
📌 六、常见问题与解决方案
端口冲突
如果你本地 5678 端口被占用,可以指定不同端口启动:
n8n start --port=8080
或者 Docker 指定端口:
docker run -it --rm \
--name n8n \
-p 8080:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
访问外部 API 时遇到 SSL 问题
可以尝试增加环境变量跳过 SSL 验证:
export NODE_TLS_REJECT_UNAUTHORIZED=0
n8n
(仅开发环境建议)