进阶技巧

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

飞牛NAS(fnOS)作为一款面向个人与家庭用户的国产NAS系统,凭借其优秀的Docker兼容性和简洁的WebUI,正在成为极客们搭建家庭自动化中心的首选平台。今天,我们不聊影音下载,而是聚焦于一个能极大提升效率的场景:利用 n8n 在飞牛NAS上搭建属于自己的自动化工作流引擎。

n8n 是一款开源、可自托管的自动化工具,被誉为“自托管界的Zapier”。它采用节点式可视化编排,能轻松连接数百个应用(如Telegram、Gmail、飞书、数据库、Webhook等),且数据完全掌控在自己的NAS中,隐私与安全性极佳。

本文将手把手演示如何在飞牛NAS的Docker环境中部署 n8n,并配置一个简单的自动化示例,帮助你快速上手。

为什么选择在飞牛NAS上跑 n8n?

飞牛NAS的系统底层基于Debian Linux,内置了完整的Docker引擎,且通过 App 中心可以一键安装 Portainer 等管理工具。相比云服务器,NAS 部署 n8n 的优势在于:

  • 数据不出内网,敏感信息(如API密钥、数据库凭证)本地存储。
  • 功耗低,7x24小时待命,适合长期运行定时任务。
  • 与 NAS 上的其他服务(如 qBittorrent、Jellyfin)内网互通,延迟极低。

部署准备:创建持久化目录

在飞牛NAS的“文件管理”中,建议为 n8n 单独建立数据目录。路径可参考 /vol1/1000/docker/n8n(实际卷号以你NAS为准)。这个目录将存放 n8n 的数据库(SQLite)和用户工作流文件,避免容器重建时数据丢失。

方案一:使用飞牛NAS的Docker图形界面部署

飞牛NAS 的“Docker”应用提供了可视化的容器管理界面,适合不熟悉命令行的用户。

  1. 在飞牛桌面打开“Docker”应用,进入“镜像”页面,点击“拉取镜像”。
  2. 在搜索框中输入 n8nio/n8n,选择最新标签(通常为 latest),点击拉取。
  3. 拉取完成后,进入“容器”页面,点击“创建容器”。
  4. 按以下配置填写:

  5. 容器名称:n8n

  6. 镜像:选择已拉取的 n8nio/n8n
  7. 启用“高级模式”或“端口映射”,将容器端口 5678 映射到 NAS 的任意空闲端口(如 5678)。建议使用默认端口,方便记忆。
  8. 存储空间映射:点击“添加目录”,将本地路径 /vol1/1000/docker/n8n 挂载到容器路径 /.n8n
  9. 环境变量(可选):添加 TZ=Asia/Shanghai(时区),以及 N8N_SECURE_COOKIE=false(如果不打算用HTTPS,避免登录后跳转异常)。

  10. 点击“创建”并启动容器。

方案二:SSH命令行部署(进阶推荐)

如果你更习惯命令行,或者需要更精细的参数控制,SSH 是最佳选择。通过飞牛NAS的“终端”或你的SSH工具连接上NAS,执行以下命令:

docker run -d \
  --name n8n \
  --restart unless-stopped \
  -p 5678:5678 \
  -v /vol1/1000/docker/n8n:/home/node/.n8n \
  -e TZ=Asia/Shanghai \
  -e N8N_SECURE_COOKIE=false \
  n8nio/n8n:latest

参数说明:

  • -d 后台运行。
  • --restart unless-stopped 确保NAS重启或Docker服务异常时自动拉起容器。
  • -v 持久化数据目录,注意冒号前是NAS本地路径,冒号后是容器内路径。
  • -e 设置环境变量。这里关闭了安全Cookie,因为飞牛NAS默认使用IP+端口访问,如果不关闭会导致登录后无法保存工作流。

命令执行后,输入 docker ps 查看容器状态,如果显示 Up 且端口映射正确,则部署成功。

初始化与基础配置

打开浏览器,访问 http://你的NAS_IP:5678。首次访问会要求创建管理员账号。按照提示设置邮箱和密码即可。登录后,n8n 会引导你选择使用场景,这里直接点击“跳过”或“暂不”,进入主界面。

需要注意,n8n 默认是英文界面。若想使用中文,可以点击右上角头像 -> Settings -> Personalization,将 Language 改为 “Chinese (Simplified)”。界面汉化程度较高,不影响使用。

实战演练:构建一个“NAS下载通知”自动化

为了验证工作流是否正常运行,我们来搭建一个最简单的自动化:当飞牛NAS的下载目录新增文件时,n8n 自动通过 Webhook 发送通知到你的 Telegram(或飞书)。

这里我们使用 n8n 内置的 WebhookHTTP Request 节点,避免复杂的外部触发器配置。

  1. 点击左侧“工作流”,创建一个新工作流,命名为“NAS下载通知”。
  2. 从右侧节点库中搜索并拖入 Webhook 节点。点击该节点,在“HTTP Method”选择 POST,路径填写 notification。点击“Listen for test event”按钮,此时节点会生成一个测试URL。
  3. 再拖入一个 HTTP Request 节点,连接到 Webhook 节点之后。在HTTP Request节点的配置中:
  4. Method 选择 POST
  5. URL 填写你 Telegram Bot 的 API 地址(格式:https://api.telegram.org/bot<你的BOT_TOKEN>/sendMessage
  6. 在“Body Content Type”选择 JSON
  7. 在“JSON Body”中使用表达式引用 Webhook 传入的数据,例如: json { "chat_id": "<你的聊天ID>", "text": "{{ $json.body.message }}" }
  8. 点击页面右上角“执行工作流”按钮,然后回到 Webhook 节点,复制测试URL,在浏览器或curl中发送一个POST请求: bash curl -X POST http://你的NAS_IP:5678/webhook-test/notification -H "Content-Type: application/json" -d '{"message":"新电影已下载完成"}'
  9. 如果配置正确,你的 Telegram 会立即收到这条消息。测试成功后,点击 Webhook 节点右上角的“激活”开关,然后点击工作流右上角的“Active”按钮,使整个流程生效。

这样,任何能向该Webhook发送POST请求的客户端(比如你自定义的下载脚本、或者飞牛NAS的“文件变动通知”脚本)都能触发通知。

进阶优化:使用定时任务与表达式

n8n 的强大之处在于它的 Schedule Trigger 节点。你可以创建一个每天早晨9点自动汇总NAS存储状态并发送邮件的流程。拖入 Schedule Trigger,设置 Cron 表达式为 0 9 * * *,后面连接 System Info 节点(获取CPU/内存/磁盘),再连接 Email Send 节点。这样,一个无人值守的运维日报就完成了。

此外,n8n 支持复杂的表达式(基于JavaScript),你可以在字段中使用 {{ $json.someField }} 动态提取数据,甚至编写简单的函数,实现数据格式化、数组遍历等操作,极大提升了灵活性。

安全与维护建议

  • 修改默认端口:在 Docker 映射时,将 5678 映射为其他随机高位端口,减少被扫描攻击的风险。
  • 启用HTTPS:如果通过公网访问,建议在飞牛NAS的“网络设置”中配置反向代理,并挂载SSL证书。n8n 环境变量中设置 N8N_PROTOCOL=httpsN8N_HOST=你的域名
  • 定期备份:由于 n8n 的数据存储在 /.n8n 目录中,只需定期打包该目录即可完成备份。你也可以在飞牛NAS的“定时任务”中设置脚本自动备份。

总结

通过 Docker 在飞牛NAS上部署 n8n,三步即可完成:拉取镜像、映射目录、设置端口。n8n 的节点式编排让非程序员也能轻松创建强大的自动化流程。无论是连接家庭智能设备、定时抓取RSS,还是与 NAS 自身的下载任务联动,n8n 都能成为你的效率中枢。

建议你从今天开始,从最简单的 Webhook 通知入手,逐渐熟悉 n8n 的逻辑,然后尝试接入你常用的 API,你会发现,原本需要手动操作的琐碎事情,现在都能在飞牛NAS上静默运行,自动完成。这,才是自建NAS的真正乐趣。

💬 评论区
发表评论

暂无评论,来说两句吧