简介
n8n 是一款开源的、基于节点的工作流自动化平台,它允许你通过拖放不同的“节点”来构建复杂的自动化流程,将各种应用程序和服务连接起来,无需编写大量代码即可实现任务自动化。
⚙️ n8n 是什么?
n8n(读作 "n-eight-n")是 “nodemation” 的简写,意为基于节点(node)的自动化(automation)。它的核心价值在于将重复性的手动操作转变为可视化、可管理的自动化工作流。
✨ 核心特点与优势
n8n 在自动化工具中脱颖而出,主要得益于以下几点:
- 开源与自托管:n8n 是开源的,你可以将其免费部署在自己的服务器上,从而完全掌控自己的数据,满足高标准的隐私和安全需求。
- 可视化低代码/无代码操作:通过直观的拖放界面连接节点来构建流程,大大降低了使用门槛。同时,它也支持通过 JavaScript 代码节点实现高度自定义逻辑,兼顾了灵活性与易用性。
- 丰富的集成能力:内置超过 300 种应用/服务的节点,涵盖常见的办公协作、社交媒体、数据库、云服务等(如 Slack、Google Sheets、Notion、MySQL)。对于未内置的服务,可以通过 HTTP Request 节点调用任何 API。
- 灵活的触发方式:工作流可以由多种方式触发,例如定时任务(Cron)、Webhook 回调、收到新邮件等,适应不同业务场景。
- 强大的社区支持:拥有活跃的开源社区,提供大量的社区贡献节点和问题解决方案。
🎯 主要应用场景
n8n 的应用范围非常广泛,几乎可以自动化任何涉及多个系统协作的任务:
- 营销自动化:如新邮件订阅者自动收到欢迎信,或监控社交媒体提及并自动通知。
- 数据同步与管理:在不同系统(如 CRM、数据库、云存储)间自动同步和备份数据。
- 客户服务:自动处理客户工单,并根据关键词将问题路由到正确的支持团队。
- 内部流程自动化:自动化报告生成与分发、审批流程管理等。
- 智能 AI 工作流:集成 OpenAI/Claude 等 AI 模型,实现文本摘要、情感分析、内容创作等智能流程。
Docker Compose 部署
直接部署
-
创建项目:
mkdir n8n && cd n8n -
编写相关配置文件:
# docker-compose.yml services: n8n: image: n8nio/n8n:latest # 生产环境建议固定版本号 container_name: n8n-production restart: unless-stopped ports: - "5678:5678" # 建议只绑定到本地回环,通过反向代理暴露 environment: # 基础配置 - TZ=Asia/Shanghai - GENERIC_TIMEZONE=Asia/Shanghai - N8N_DEFAULT_LOCALE=zh-CN - N8N_LANG=zh-CN - LC_ALL=zh_CN.UTF-8 - LANG=zh_CN.UTF-8 - LANGUAGE=zh_CN:zh # 数据库配置 - 使用PostgreSQL - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_DATABASE=n8ndb - DB_POSTGRESDB_USER=n8nuser - DB_POSTGRESDB_PASSWORD=${DB_PASSWORD} # 密码建议通过.env文件管理 # 安全配置(以下密钥必须更改!) #- N8N_ENCRYPTION_KEY=${ENCRYPTION_KEY} # 用于加密凭证,丢失将导致数据无法解密 #- N8N_BASIC_AUTH_ACTIVE=true # 启用基础认证 #- N8N_BASIC_AUTH_USER=${BASIC_AUTH_USER} #- N8N_BASIC_AUTH_PASSWORD=${BASIC_AUTH_PASSWORD} volumes: - n8n_data:/home/node/.n8n # 使用命名卷是更可靠的数据持久化方式 depends_on: postgres: condition: service_healthy # 等待数据库健康后再启动n8n healthcheck: # 健康检查 test: ["CMD", "wget", "--spider", "-q", "http://localhost:5678/healthz"] interval: 30s timeout: 10s retries: 3 # 可选:资源限制 #deploy: # resources: # limits: # cpus: '2' # memory: 4G postgres: image: postgres:16-alpine container_name: n8n-postgres restart: unless-stopped environment: - POSTGRES_USER=n8nuser - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=n8ndb volumes: - postgres_data:/var/lib/postgresql/data healthcheck: # 数据库健康检查 test: ["CMD-SHELL", "pg_isready -U n8nuser -d n8ndb"] interval: 10s timeout: 5s retries: 5 volumes: n8n_data: postgres_data:# .env # 数据库密码(PostgreSQL) DB_PASSWORD=superpass123 # n8n加密密钥(必须设置) ENCRYPTION_KEY=superpass123 -
运行:
docker compose up -d
中文版本
即便英语再好,也不如母语来的直接,所以还是使用中文更舒服一点;使用配置地区的操作,并不能直接转换为中文,使用 Docker 加插件的方法又很复杂,所以直接使用以下方法进行部署
-
拉取项目:
git clone https://ghfast.top/https://github.com/other-blowsnow/n8n-i18n-chinese cd n8n-i18n-chinese -
进入分支:目前最新版为 2.3.6,GitHub 中查询 tags:github.com/other-blows…
git checkout n8n@2.3.6 # 一些 git 操作常见语句: git status # 了解正处于什么位置;如果出现 HEAD detached at n8n@1.86.1,就确认了你正处于分离头指针状态 git switch main # 切换回 main 等其他分支 git switch -f main # 明确放弃当前所有未提交的修改 git stash # 修改未完成,只想临时保存以便切换分支处理其他事情 git commit # 修改已完成或达到一个可保存的节点,可以形成一个有意义的提交 git tag # 快速查看本地仓库中的所有标签名 git tag -n # 显示每个标签的简要说明 -
修改相关细节配置:
# docker-compose.yml services: n8ntest: image: n8nio/n8n:2.3.6 container_name: n8ntest ports: - "15678:5678" environment: - N8N_DEFAULT_LOCALE=zh-CN - N8N_SECURE_COOKIE=false - N8N_RUNNERS_ENABLED=true # 需要配置任务运行器 volumes: - ./editor-ui-dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist stdin_open: true tty: true restart: unless-stopped -
运行:
docker compose up -d # 注意访问地址为:http://localhost:15678;5678 为主分支运行端口 -
解决每次启动容器都需要重新注册的问题:修改相应的
docker-compose.yml-
添加数据持久化卷
-
使用PostgreSQL数据库
# docker-compose.yml services: n8ntest: image: n8nio/n8n:2.3.6 container_name: n8ntest ports: - "15678:5678" extra_hosts: - "host.docker.internal:host-gateway" environment: # 基础配置 - N8N_DEFAULT_LOCALE=zh-CN - N8N_SECURE_COOKIE=false - N8N_RUNNERS_ENABLED=true - N8N_ENCRYPTION_KEY=superpass123 # 建议使用强密码 # PostgreSQL数据库配置 - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=n8n_user - DB_POSTGRESDB_PASSWORD=superpass123 volumes: # 数据持久化卷(配置文件、自定义节点等) - ./n8n-data:/home/node/.n8n # 自定义UI(您原有的配置) - ./editor-ui-dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist depends_on: - postgres - n8n-runners stdin_open: true tty: true restart: unless-stopped # PostgreSQL数据库服务 postgres: image: postgres:15 container_name: n8n-postgres environment: - POSTGRES_DB=n8n - POSTGRES_USER=n8n_user - POSTGRES_PASSWORD=${DB_PASSWORD} volumes: # PostgreSQL数据持久化 - postgres_data:/var/lib/postgresql/data restart: unless-stopped volumes: postgres_data: -
为 n8n-data 目录添加权限:没有该目录就新建一个
sudo chown -R 1000:1000 ./n8n-data sudo chmod -R 755 ./n8n-data
-
连接 Ollama
-
修改 docker-compose.yml:在 n8n 服务的配置块中添加
extra_hosts参数,不进行配置会出现无法通过http://host.docker.internal:11434连接本地 Ollama 服务# docker-compose.yml services: n8ntest: image: n8nio/n8n:2.3.6 container_name: n8ntest ports: - "15678:5678" extra_hosts: - "host.docker.internal:host-gateway" # 这一行将主机名映射到宿主机的网关IP environment: - N8N_DEFAULT_LOCALE=zh-CN - N8N_SECURE_COOKIE=false - N8N_RUNNERS_ENABLED=true volumes: - ./editor-ui-dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist stdin_open: true tty: true restart: unless-stopped -
配置凭据:
-
添加本地 Ollama 的URL:
-
使用模型:
-
仅支持如下搜索引擎:相比于 Dify、Open WebUI 可以使用 SearXNG,就略有逊色