n8n + Notion
摘要
本笔记旨在提供一个从零开始部署、配置并使用自托管 n8n 的完整指南。内容涵盖了两种主流的安装方式(Node.js 与 Docker)、首次启动设置、一个从 RSS 订阅同步数据至 Notion 的实战工作流,并最终解决了在中国大陆环境下使用 AI 节点时最关键的网络代理配置问题。
1. n8n 的安装:两种核心方式
选择合适的安装方式是稳定使用 n8n 的第一步。
方式一:使用 Node.js (npm) 安装 (适合快速体验)
这种方式最直接,适合想快速在本地电脑上体验 n8n 功能的场景。
-
前置要求:
- 已安装 Node.js (建议使用 LTS 版本)。
-
安装命令: 打开您的终端 (Terminal / CMD / PowerShell),运行以下命令进行全局安装:
Terminal window npm install -g n8n -
启动命令: 安装完成后,直接在终端中运行:
Terminal window n8n
NOTE优点: 安装简单快捷,无需额外软件。
缺点: n8n 进程会与您的本地环境耦合,且关闭终端窗口通常会中止 n8n 服务。不适合作为长期运行的生产服务。
方式二:使用 Docker 安装 (推荐用于长期稳定运行)
Docker 提供了一个隔离、可移植的环境,是自托管 n8n 的最佳实践。它能确保 n8n 及其依赖项独立运行,并且便于管理和数据持久化。
- 前置要求:
- 已安装 Docker 和 Docker Compose。
方法一:使用 Docker Run 命令
-
打开命令提示符或 PowerShell:
您可以在开始菜单中搜索 “Command Prompt” 或 “PowerShell” 并打开它。 -
执行以下命令来启动 n8n 容器:
docker run -it --rm --name n8n -p 5678:5678 n8nio/n8n- 访问 n8n:
当您在命令行中看到类似 “Editor is now accessible” 的消息时,说明 n8n 已经成功启动。打开您的浏览器并访问 http://localhost:5678 即可开始使用。
方法二:使用 Docker Compose
-
配置
docker-compose.yml:- 在您希望存放 n8n 数据的文件夹中,创建一个名为
docker-compose.yml的文件。 - 将以下内容粘贴到文件中:
version: '3.7'services:n8n:image: docker.n8n.io/n8nio/n8nrestart: alwaysports:# 将 n8n 的 5678 端口映射到您电脑的 5678 端口- "127.0.0.1:5678:5678"volumes:# 将 n8n 的数据持久化到本地,防止容器重启后数据丢失- n8n_data:/home/node/.n8nenvironment:# 设置时区,避免时间错乱问题- GENERIC_TIMEZONE=Asia/Shanghaivolumes:n8n_data: - 在您希望存放 n8n 数据的文件夹中,创建一个名为
-
启动命令: 在存放
docker-compose.yml文件的目录下,打开终端并运行:Terminal window docker-compose up -dn8n 将会在后台稳定运行。
TIP数据持久化:
volumes的配置至关重要,它将 n8n 的所有工作流、凭证等数据保存在您电脑的一个 Docker 数据卷中,名为n8n_data。
2. 首次启动与设置
无论使用哪种方式启动,后续步骤都是相同的。
- 访问 n8n: 打开浏览器,访问
http://localhost:5678。 - 创建所有者账户: 您会看到一个欢迎页面,引导您创建第一个用户。这个用户是该 n8n 实例的所有者 (Owner),拥有最高权限。
- 填写信息: 按照提示填写您的姓名、邮箱和密码。
- 登录: 完成注册后,系统将自动登录,您会进入 n8n 的主仪表盘,准备好创建您的第一个工作流。
3. 创建第一个工作流:RSS 订阅同步至 Notion
这是一个经典的自动化场景,我们将从 RSS 源获取文章,并将其关键信息存入一个 Notion 数据库。
- 准备工作:
- 一个 RSS 订阅链接 (例如:
http://arxiv.org/rss/cs.AI)。 - 在 Notion 中创建一个数据库,并包含以下属性:
Title(标题)Link(URL)Published Date(日期)
- 一个 RSS 订阅链接 (例如:
步骤一:创建工作流与 RSS 读取节点
- 在 n8n 仪表盘,点击 “Add workflow”,创建一个空白画布。
- 点击 + 号,搜索并添加 RSS Read 节点。
- 在右侧配置面板的 URL 字段中,粘贴您的 RSS 订阅链接。
- 点击右下角的 Test workflow,n8n 会抓取最新的几条 RSS 条目,您可以在输出中看到数据。
步骤二:数据处理 (Set 节点)
RSS 返回的数据字段可能不规整,我们需要用 Set 节点进行格式化和映射。
- 点击 RSS Read 节点右侧的 + 号,添加 Set 节点。
- 开启 “Keep Only Set” 选项,以保持数据流的干净。
- 点击 Add Value 添加以下值:
- Value 1:
- Name:
notion_title - Value (表达式):
{{ $json.title }}
- Name:
- Value 2:
- Name:
notion_link - Value (表达式):
{{ $json.link }}
- Name:
- Value 3 (日期格式化):
- Name:
notion_date - Value (表达式):
{{ DateTime.fromRFC2822($json.pubDate).toISO() }}
- Name:
- Value 1:
NOTE
pubDate的原始格式 Notion 不识别,DateTime.fromRFC2822(...).toISO()表达式使用 n8n 内置的 Luxon 库将其转换为 Notion 接受的标准 ISO 格式。
步骤三:写入 Notion (Notion 节点)
- 点击 Set 节点后的 + 号,添加 Notion 节点。
- 配置凭证: 首次使用需点击 “Credential” > “Create New”,按照指引完成对 Notion 的授权。
- 配置节点:
- Resource:
Database/Page - Operation:
Append - Database ID: 填入您 Notion 数据库的 ID。
- Properties: 点击 Add Property,将数据库属性与 Set 节点的输出进行映射:
Title->{{ $json.notion_title }}Link->{{ $json.notion_link }}Published Date->{{ $json.notion_date }}
- Resource:
步骤四:测试与激活
- 再次点击 Test workflow,整个流程会完整运行一遍。
- 检查您的 Notion 数据库,确认新条目已成功写入。
- 点击右上角的开关将其从 Inactive 切换为 Active,工作流将根据您的触发器设置自动运行。
4. 关键技巧:为 n8n 配置网络代理
当您的工作流需要访问如 OpenAI、Gemini 等在中国大陆无法直接访问的 API 时,必须为 n8n 本身配置网络代理。
为什么需要配置代理?
n8n 是一个后端服务,它独立于您的浏览器运行。您为浏览器或系统设置的“科学上网”代理,n8n 默认是无法使用的。因此,我们会收到 timeout (连接超时) 错误。解决方案是通过环境变量,明确告知 n8n 使用您的代理服务。
核心:找到你的代理地址
首先,在您的代理软件 (Clash, V2RayN 等) 中找到其提供的 HTTP 代理端口。
- 常见地址:
127.0.0.1 - 常见端口:
7890,10809,1080等。
本文假设您的代理地址为 http://127.0.0.1:7890。
配置方法:根据你的安装方式选择
针对 Node.js / npm 安装
您需要在启动 n8n 的同一个终端窗口中,先设置环境变量,再启动服务。
Windows (PowerShell):
# 在 PowerShell 中$env:HTTPS_PROXY="http://127.0.0.1:7890"$env:HTTP_PROXY="http://127.0.0.1:7890"
# 或者在 CMD 中set HTTPS_PROXY=http://127.0.0.1:7897set HTTP_PROXY=http://127.0.0.1:7897macOS / Linux:
export HTTPS_PROXY="http://127.0.0.1:7890"export HTTP_PROXY="http://127.0.0.1:7890"WARNING这种方式设置的环境变量仅对当前终端会话有效。关闭窗口后需重新设置。
针对 Docker 安装
这是更稳定、一劳永逸的方法。我们需要修改 docker-compose.yml 文件。
- 打开
docker-compose.yml文件。 - 在
n8n服务的environment部分添加代理变量。
version: '3.7'
services: n8n: image: docker.n8n.io/n8nio/n8n restart: always ports: - "127.0.0.1:5678:5678" environment: # --- 在这里添加代理配置 --- - HTTPS_PROXY=http://host.docker.internal:7890 - HTTP_PROXY=http://host.docker.internal:7890 # --- 其他环境变量 --- - GENERIC_TIMEZONE=Asia/Shanghai volumes: - n8n_data:/home/node/.n8n
volumes: n8n_data:WARNING为什么使用
host.docker.internal? 在 Docker 容器内部,127.0.0.1指的是容器自身,而不是您的宿主机(电脑)。host.docker.internal是一个特殊的 DNS 名称,它会正确地指向您的电脑 IP,从而让容器内的 n8n 能够找到并使用您在电脑上运行的代理服务。
- 保存文件后,在终端中重启 n8n 容器以使配置生效:
Terminal window docker-compose down && docker-compose up -d
完成代理配置后,您的 n8n 工作流中的 AI 节点或其他需要代理的节点就能正常工作了。
❯