进阶技巧

飞牛NAS搭建自动化工作流:n8n部署教程

在 NAS 的世界里,存储只是起点。当你的飞牛NAS 跑起来后,如何让它从“数据仓库”进化为“自动化中枢”,才是真正拉开差距的地方。今天,我们就把目光投向一个强大的开源工具——n8n。它是一款可视化、可自托管的自动化工作流引擎,能像乐高一样把各种应用(邮件、API、数据库、AI模型)拼接起来。本文将带你从零开始在飞牛NAS上部署 n8n,并完成第一个实用工作流。

为什么选择 n8n 而非其他工具?

如果你接触过 IFTTT 或 Zapier,会发现它们虽然简单,但受限于平台规则,且数据都过境第三方。n8n 的核心优势在于:

  • 数据私有:所有数据流都在你的 NAS 本地处理,敏感信息不落云端。
  • 代码与可视化并存:既支持拖拽节点,也支持插入 JavaScript 或 Python 代码片段,灵活性极高。
  • 触发方式多样:支持 Webhook、定时、轮询、甚至监听数据库变更。
  • 零成本:社区版免费,无节点数限制,只受限于 NAS 自身性能。

在飞牛NAS 上部署 n8n,我们推荐使用 Docker Compose 方式,方便管理配置和升级。

第一步:准备环境

确保你的飞牛NAS 系统版本支持 Docker(fnOS 内置了 Docker 管理界面,但为了配置精确,我们直接使用命令行)。先通过 SSH 登录 NAS,或使用飞牛自带的「终端」应用。

创建专属目录,避免文件散落各处:

mkdir -p /vol1/docker/n8n
cd /vol1/docker/n8n

如果你的存储路径不是 /vol1,请根据飞牛文件管理器中的实际路径修改。

第二步:编写 docker-compose.yml

n8n 官方推荐使用外部数据库(如 PostgreSQL)来存储工作流和凭证,这样可以避免 SQLite 在并发高时锁库。我们也在 compose 中包含数据库容器。

创建一个名为 docker-compose.yml 的文件:

version: '3.8'

services:
  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=your_strong_password
      - POSTGRES_DB=n8n
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U n8n"]
      interval: 10s
      timeout: 5s
      retries: 5

  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=your-nas-ip或域名
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=your_strong_password
      - GENERIC_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
    volumes:
      - ./n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy
    command: start

注意替换 your_strong_password 为强密码。N8N_HOST 请填写你访问飞牛NAS 的 IP 或已解析的域名。如果你打算后续通过飞牛的反代或 HTTPS 访问,需要在这里提前规划协议。

第三步:启动服务

在目录下执行:

docker-compose up -d

首次运行需要拉取镜像,等待片刻。完成后检查状态:

docker-compose ps

看到两个容器均为 Up 且健康,说明启动成功。现在打开浏览器,访问 http://你的NASIP:5678,你应该能看到 n8n 的欢迎界面。注册一个管理员账号(该账号仅用于本地登录,数据保存在 NAS 上)。

第四步:打造第一个自动化工作流——邮件提醒与 AI 摘要

为了让你快速体验 n8n 的威力,我们做一个实用的场景:当指定邮箱收到新邮件时,自动提取正文,调用免费 AI 接口生成摘要,然后推送到飞牛NAS 的 Webhook(或你自己的企业微信机器人)。

4.1 创建基础触发节点

在 n8n 界面中,点击右上角「+」新建工作流。从左侧节点面板拖入一个「Email Trigger (IMAP)」节点。

  • 配置你的邮箱服务器(例如 QQ 邮箱的 IMAP 地址为 imap.qq.com,端口 993,需要开启 SSL)。
  • 填入邮箱账号和授权码(非登录密码)。
  • 轮询间隔设为 1 分钟。

4.2 添加数据处理节点

拖入一个「Code」节点(在 Function 分类下)。双击节点,输入以下代码,用于清洗邮件正文并提取前 500 字:

const emailData = $input.first().json;
const rawBody = emailData.text || emailData.html || '';
// 简单去除HTML标签
const plainText = rawBody.replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();
const summary = plainText.substring(0, 500);
return { summary, subject: emailData.subject, from: emailData.from };

4.3 调用 AI 接口(可选)

如果你有 OpenAI 或本地 Ollama 的 API,可以拖入一个「HTTP Request」节点。这里以通用的 Ollama 本地模型为例(需先在 NAS 上跑 Ollama):

  • Method: POST
  • URL: http://你的NASIP:11434/api/generate
  • Body (JSON):
{
  "model": "qwen2.5:7b",
  "prompt": "请用50字以内总结这封邮件,不要客套话:{{ $json.summary }}",
  "stream": false
}

返回结果中提取 response 字段作为最终摘要。

4.4 通知到手机(飞书/企业微信机器人)

最后拖入一个「Webhook」节点,方式为 POST,URL 填你在飞书或企业微信群里创建的机器人地址。Body 中构造 JSON:

{
  "msg_type": "text",
  "content": {
    "text": "新邮件:{{ $json.subject }}\n来自:{{ $json.from }}\n摘要:{{ $json.response }}"
  }
}

保存工作流,点击「Execute Workflow」测试一次。如果一切正常,你的手机马上会收到推送。

第五步:进阶优化与安全建议

  • 开机自启:我们已经在 compose 中设置了 restart: unless-stopped,NAS 重启后 n8n 会自动拉起。
  • 反向代理:如果你有域名,建议在飞牛NAS 的「网关」或 Nginx Proxy Manager 中为 n8n 配置 SSL,并在 N8N_PROTOCOL=httpsN8N_HOST=你的域名 下重启容器,这样浏览器不会报不安全。
  • 备份n8n_datapostgres_data 两个目录是核心数据,建议在飞牛定时备份任务中单独勾选。
  • 资源限制:如果 NAS 配置不高,可以在 compose 中给 n8n 添加 mem_limit: 1g 防止内存溢出。

总结

通过这套部署,你的飞牛NAS 已经从一个被动的存储设备,升级为主动的自动化枢纽。n8n 的潜力远不止邮件通知,你可以连接 NAS 上的下载工具、相册应用、甚至执行 SSH 命令来控制其他设备。关键在于先跑通一个简单流程,然后逐步叠加你的想象力。本文的 compose 文件也已为你准备好,复制即用。如果在部署中遇到端口冲突或路径问题,欢迎在评论区留言,我们下期见。

💬 评论区
发表评论

暂无评论,来说两句吧