外观
n8n:把重复操作自动化
用拖拽的方式把多个服务连起来:定时触发、收到 Webhook、读数据库、调 API、发通知。适合替代一堆零散的脚本。
关于授权
n8n 采用 fair-code 的可持续使用授权,不是 OSI 定义的开源协议。自托管的社区版可以免费使用,但商业化使用(例如把它作为服务提供给他人)有额外限制。个人和家庭场景通常不受影响,具体以官方授权说明为准。
适合谁
- 已经写了好几个 cron 脚本,开始难以维护。
- 需要在多个服务之间传递数据(例如:监控告警 → 格式化 → 推送到手机)。
不适合:只需要一两个定时任务的场景。那种情况下,系统自带的计划任务加一个 shell 脚本更简单,也更少一个需要维护的服务。
部署
yaml
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Shanghai
- N8N_HOST=n8n.你的域名
- WEBHOOK_URL=https://n8n.你的域名/
volumes:
- /vol1/docker/n8n/data:/home/node/.n8nWEBHOOK_URL 必须是外部访问时的真实地址,否则 n8n 生成的 Webhook 地址会指向容器内部地址,外部服务回调不到。
它保存着各种服务的凭据
工作流里会存有 API 密钥、数据库密码、通知渠道令牌。这个容器被入侵,等于这些凭据全部泄露。不要直接暴露到公网;需要接收外部 Webhook 时,通过反向代理配好 HTTPS 和认证,并只放行必要的路径。
数据与备份
/home/node/.n8n 目录里是工作流、凭据和执行历史(默认 SQLite)。备份前停止容器更可靠。
工作流本身可以导出成 JSON,建议把导出的文件放进 Gitea 做版本管理——改坏了能回滚,重建时也能直接导入。
几个实用场景
- NAS 的告警邮件收到后,格式化并推送到手机。
- 定时检查某个服务是否正常,异常时触发通知(不过这件事 Uptime Kuma 做得更专业)。
- 定期把某个 API 的数据抓下来存进数据库。
- 文件落到某个目录后触发后续处理。
已知坑
- 执行历史会持续增长,注意配置保留策略,否则数据库会越来越大。
- 升级跨大版本时工作流可能需要调整,升级前备份并阅读版本说明。
- 内存占用不低,规划时算进去。