每天有好多重复的事情要做:微信上收到同事发来的文件要手动存到 NAS 对应文件夹、看到好文章要复制粘贴到剪藏工具、天气预报变了要自己检查带伞、家里 NAS 的备份状态总得隔几天去瞅一眼……这些事情说大不大,说小不小,但积累起来,每天至少花掉我半小时。我试过 Zapier 和 IFTTT,但要么免费额度太少,要么不支持我 NAS 上的自建服务,数据还要经过第三方服务器,心里总有点不踏实。

后来我找到了一个能完全自托管的免费方案,把这些重复操作一个个接走了。今天就把我的完整搭建过程分享出来。

为什么我选择自己搭,而不是用云服务

我一开始也图省事,注册了 Zapier 和 IFTTT。用了几个月发现几个痛点:

  • 免费额度极其有限

    :Zapier 免费版每月只有 100 次任务,稍微多几个流程就超了。

  • 数据走第三方

    :我的文件在 NAS 和云服务之间流转,要经过 Zapier 的服务器,虽然他们说加密,但数据毕竟不在自己手里。

  • 不支持内网服务

    :我的 NAS 上的很多应用没有公网 API,Zapier 根本连不上。

我需要的是一款能跑在我自己 NAS 上、完全离线可控、支持各种自建服务接口的自动化工具。这就是我最终选择 n8n 的原因。

n8n 是什么

n8n 是一个免费的工作流自动化工具,代码完全开放(采用 fair-code 模式的 Sustainable Use License),GitHub 上已经有 20 多万个星标。它就像一个存在你自己服务器上的 Zapier,内置 400 多个官方节点——Webhook、邮件、数据库、HTTP 请求、AI 接口、文件操作、定时触发等等,加上社区节点能对接的服务超过 1500 种。

它的核心特点是:

  • 源码开放

    :采用 Sustainable Use License,个人自用完全免费,没有任务数限制,也不会像 Zapier 那样卡额度

  • 可视化拖拽编辑

    :不需要写代码,拖拽节点就能搭出工作流

  • 自托管

    :跑在你自己的 NAS 上,数据不出内网

  • 400+ 内置节点

    :覆盖主流服务,还支持自定义 HTTP 请求和代码节点,几乎什么都能接

打开网易新闻 查看精彩图片

我的搭建环境

我用的是一台入门级 NAS(Intel N100 处理器,8GB 内存),日常跑着 Docker 和十来个小服务。n8n 本体空闲时只占 100 多 MB 内存,加上 PostgreSQL 和跑工作流时的峰值,总共 300-500MB 左右,对 8GB 内存的 NAS 来说毫无压力。

完整搭建步骤 第一步:准备目录结构

我在 NAS 上先建好 n8n 的数据目录:

/nas/docker/n8n/
├── docker-compose.yml
├── data/ # n8n 工作流数据
└── pgdata/ # PostgreSQL 数据库数据
第二步:编写 docker-compose.yml

生产环境建议用 PostgreSQL 数据库,SQLite 虽然也能用,但并发和稳定性差不少。下面是完整的 docker-compose.yml,包含 n8n 和 PostgreSQL 两个服务:

version: "3.8"

services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=请替换成你的密码
- POSTGRES_DB=n8n
volumes:
- ./pgdata:/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:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=请替换成你的密码
- N8N_SECURE_COOKIE=false
- GENERIC_TIMEZONE=Asia/Shanghai
- TZ=Asia/Shanghai
volumes:
- ./data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
注意:把 POSTGRES_PASSWORD 和 DB_POSTGRESDB_PASSWORD 中的密码替换成你自己设置的强密码。 GENERIC_TIMEZONE 和 TZ 必须设置成东八区,否则定时触发的工作流会按 UTC 时间执行,早上 8 点的任务会跑到下午 4 点。如果通过反代对外暴露,记得把 N8N_SECURE_COOKIE 设为 true 并配置 HTTPS。
第三步:启动服务

把 docker-compose.yml 放到刚才建的目录里,然后执行:

docker compose up -d

等待几十秒,等 PostgreSQL 初始化完成,n8n 就会自动启动。访问 http://NAS 的 IP:5678 就能看到 n8n 的启动页面:

打开网易新闻 查看精彩图片

首次启动因为 PostgreSQL 初始化数据库和 n8n 运行迁移脚本,会慢一些,屏幕上会显示 「n8n is starting up. Please wait」。这时候可以用 docker compose logs -f 查看后台进度:

docker compose logs -f

看到日志中出现 n8n ready on 0.0.0.0, port 5678 ,刷新页面就能进入注册页面了。

注册一个账号后,就进入了可视化工作流编辑器界面。

 第四步:配置反代和域名(可选)
打开网易新闻 查看精彩图片
第四步:配置反代和域名(可选)

如果我想在外网访问 n8n,我一般会在反向代理(比如 Nginx Proxy Manager)里添加一条规则,把 n8n.我的域名.com 指向 http://localhost:5678 ,再配上 SSL 证书。这样在外面也能随时查看和管理工作流了。

 1. 微信文件自动归档
打开网易新闻 查看精彩图片
1. 微信文件自动归档

我每天都会在微信上收到大量文件——同事发的项目文档、客户发来的合同扫描件、群里分享的参考资料。手动下载再存到 NAS 的不同文件夹,非常繁琐。

个人微信没有开放接口,没法直接把文件推给 Webhook,我的做法是用 文件夹监听的思路 :在微信电脑版设置里把文件保存目录指向 NAS 的同步文件夹,然后在 n8n 里用本地文件触发节点(Local File Trigger)盯着这个目录——新文件一进来,就按文件类型自动归档:

  • 合同类 → NAS/业务/合同/

  • 设计稿 → NAS/项目/设计资源/

  • 会议记录 → NAS/团队/会议纪要/

这个流程跑起来之后,我再也没手动整理过微信文件。(补充:如果你用的是企业微信,n8n 社区有对接企业微信 API 的节点,可以直接走回调接收文件消息,比文件夹监听更实时。)

2. NAS 备份状态日报

我的 NAS 上跑着几个重要数据的备份任务(重要文档、照片库、Docker 配置),以前我每周登录检查一次,总担心哪次备份失败了没发现。

现在我用 n8n 的定时触发器,每天早上 8 点执行一个工作流:

  1. 连接备份脚本写入状态的数据库,查询上次备份结果

  2. 如果有备份失败记录,通过 Webhook 推送到手机通知

  3. 如果全部成功,只发一条简单汇总

这样每天起床看一眼手机,就知道备份是否正常,心里踏实多了。

3. RSS 订阅精华自动汇总

我订阅了几十个技术博客和新闻源的 RSS,每天信息量很大。我写了一个 n8n 工作流:

  1. 每小时抓取 RSS feed 的新文章

  2. 用 AI 节点提取摘要并打标签

  3. 将摘要推送到我的笔记工具

这样我每天只需要花 10 分钟浏览摘要,感兴趣的再点开全文,阅读效率提高了不少。

4. 天气变化主动提醒

我设置了一个每天凌晨 6 点的工作流:

  1. 调用天气 API 获取当天天气预报

  2. 判断是否有雨、极端温度等情况

  3. 如果有异常天气,通过通知节点推送到手机

  4. 如果没有异常,跳过不发送

这样我不用每天打开天气 App,遇到降温或下雨天自然会收到提醒。

5. 下载任务完成后自动通知

我在 NAS 上跑着下载工具,下载完成后之前需要手动去检查。现在我在 n8n 里配了一个 Webhook 接收下载完成的通知,然后自动:

  1. 发送一条通知到手机

  2. 如果是电影,自动移到影视库目录

  3. 如果是文件,按类型分类归档

日常使用体验

用上 n8n 已经三个月了,说说我的真实感受。

最直观的变化是时间 。以前每天花在重复操作上的时间大概半小时,现在基本归零了。文件自动归档、备份自动巡检、信息自动汇总,这些「小事情」加在一起,每周省出好几个小时。

第二是可控性 。所有数据都在我的 NAS 上,工作流引擎也是我自己的,不需要担心哪家云服务涨价或者关停,也不用担心隐私数据经过第三方。

第三是扩展性 。n8n 的节点生态很丰富,从最基础的 HTTP 请求、数据库操作,到 AI 文本处理、文件格式转换,几乎什么都能接。我最近还接入了大语言模型,让工作流能自动理解邮件内容并分类响应。

一点小建议

我刚上手的时候,就是从最简单的流程开始的——一个定时发通知、或者一个 Webhook 接收消息。等熟悉了编辑器的拖拽操作和节点配置逻辑,再慢慢尝试更复杂的多步流程。

n8n 的社区也很活跃,遇到问题基本都能搜到解决方案。如果某个功能找不到现成的节点,可以用 HTTP Request 节点自定义对接,几乎什么 API 都能接。

点个关注不迷路

你平时在 NAS 上自动化了哪些重复操作?或者有什么一直想自动化但还没动手的事?评论区聊聊你的想法