本期主题:自建通知栈——NAS挂了、网页降价了、定时任务死了,消息怎么第一时间跳上手机锁屏
前面几轮挖过语音、显微镜、生意流水线,这一轮换一个所有自建玩家都绕不开、却很少有人系统做的方向:通知。绝大多数人家里有 NAS、服务器、一堆定时脚本,但它们出事的时候,你往往是第二天才想起来去看日志。这期 8 个仓库拼出一条完整链路:从一行 curl 直推 iPhone 锁屏的 ntfy,到给老设备邮件报警当翻译官的 Mailrise,再到两个“什么才值得被通知”的场景仓库——盯网页变动的 changedetection.io 和给定时任务守灵的 Healthchecks。全程零 AI 套壳,全是当晚就能跑起来的小工具。文中 Star 为写作时点的大致量级,实时数据以仓库页面为准。
仓库:binwiederhier/ntfy | Star:2 万+ | 更新:长期活跃,作者 Philipp Heckel 一个人维护多年
它的整个 API 就是一行命令:
curl -d "备份完成,耗时 37 分钟" ntfy.sh/my-secret-topic
手机装上 ntfy App 订阅这个 topic,消息立刻出现在锁屏上。不用注册、不用申请 key、不用接 SDK——痛点就这么被一行命令干掉了。自建版是单个 Go 二进制加一个容器,支持用户鉴权、消息附件、定时发送和点击跳转。实现上它走的是发布/订阅模型,topic 即频道,谁订阅谁收;App 端用长连接保活,还兼容 UnifiedPush 标准,成了不少去谷歌化安卓用户的推送底座。Home Assistant 现在内置 ntfy 集成,可见其江湖地位。
仓库:Finb/Bark | Star:6 千+ | 更新:稳定维护,配套 iOS App 在 App Store 常年可用
ntfy 在 iOS 上受系统推送限制没法做到秒达,Bark 用另一条路解决了这个问题:iOS App 常驻苹果 APNs 通道,你自建一个 Go 写的 bark-server,App 把自己的 device key 注册上去,之后同样是一行 curl 直达锁屏:
curl https://api.day.app/你的key/服务器磁盘将满
自建服务端 + 借用官方 App 的 APNs 证书,这个组合让它成了中文自建圈的事实标配:群晖告警、Home Assistant 联动、爬虫跑完通知,全是它的经典用法。还支持消息分组、自定义铃声、端到端加密选项。官网文档在 bark.day.app。
仓库:gotify/server | Star:近万 | 更新:维护节奏慢但持续,社区稳定
比 ntfy 更早的玩家。Go + Vue 构建的单二进制服务,通过 WebSocket 长连接推送到自家的安卓 App。设计上每个应用发一个 token——备份脚本一个、下载器一个、监控一个——消息按应用分流入界面,相当于给家里所有会说话的机器装了一个总机。支持插件体系和 REST API,Python、Go 的客户端库齐全。它比 ntfy 重一点:要先起服务、建应用、拿 token,换来的是完整的 Web 管理界面、历史消息留存和多端管理。如果你的场景是“家里七八个服务都要汇报工作”,Gotify 的消息中心形态比 ntfy 的频道流更好管理。
仓库:caronc/apprise | Star:1.2 万+ | 更新:非常活跃,作者 Chris Caron 长期高频发版
前面三个工具各管各的渠道,Apprise 管所有渠道。这个 Python 库把上百种通知服务抽象成了 URL:Telegram 是 tgram://,邮件是 mailto://,Slack、Discord、企业微信各有各的 scheme。一条命令同时群发:
apprise -t "发布完成" -b "v2.0 已上线" tgram://... mailto://...
它的实现亮点在于抽象层设计:新增一个服务只需实现统一的 schema 接口,所以渠道增长极快,Uptime Kuma 这类明星项目的通知后端就是直接内嵌的 Apprise。对你自己写工具的意义是:通知能力写一次,用户爱用什么渠道就配什么 URL。
仓库:containrrr/shoutrrr | Star:千余,两千以内 | 更新:低频维护,胜在接口稳定
Apprise 是 Python 世界的答案,shoutrrr 是 Go 世界的同思路实现:通知配置就是一个 URL,gotify://192.168.1.10/token、smtp://user:pass@host,CLI 一行发送,也可以作为库嵌进你自己的 Go 程序。它出名的途径很特别——容器更新工具 Watchtower 的通知后端就是它,所以无数人“用过但不知道它的名字”。仓库小、代码干净,非常适合当作阅读 Go 优秀小项目的样本,也适合你在写运维小工具时直接抄来用。
仓库:Ylianst/Mailrise | Star:千余,两千以内 | 更新:轻量维护,作者 Ylian Saint-Hilaire 也是 MeshCentral 的作者
这是本期最刁钻也最解气的一个。你家路由器、NAS、打印机、UPS 的通知设置栏里,往往只有一个“SMTP 邮件报警”,永远做不到手机秒收。Mailrise 是一个迷你 SMTP 服务器:老设备把“邮件”发给它,它用 Apprise 把内容转成上百种现代推送渠道——ntfy、Telegram、Bark 通通可以。配置文件里登记好目标,老设备的通知栏里填上 Mailrise 的地址,十分钟内一套十年前的硬件就接入了 2026 年的通知体系。部署是一个小容器,资源占用几乎为零。它解决的不是新问题,而是存量世界的兼容问题——这类工具往往最长寿。
仓库:dgtlmoon/changedetection.io | Star:2 万+ | 更新:极度活跃,基本日更
通知栈里“消息从哪来”的最佳答案。它盯着你指定的任意网页:商品降价了、订单出签了、心仪的二手房挂牌了、竞品改了定价页——变了就通过内置的 Apprise 通知你(对,就是第 4 个仓库,这就是开源生态的咬合方式)。技术上有两档:默认 HTTP 抓取加文本 diff,遇到重 JS 的页面可以选 Playwright 无头浏览器渲染;支持 XPath 和 JSON 路径精准定位页面元素,所以既能盯页面文字也能盯 API 字段。它是“开源核心 + 官方付费托管”模式教科书级的案例:免费版自建无限用,不想折腾的人为托管版付月费,作者一个人把项目做成了可持续生意。
仓库:healthchecks/healthchecks | Star:8 千+ | 更新:持续活跃,项目从 2015 年做到现在
监控领域有个反直觉的事实:“没有消息”才是坏消息。你的备份脚本崩了,它不会发错误通知——它只是明天不会再跑了。Healthchecks 的思路是把报警反转过来:每个定时任务领一个 ping 地址,任务正常跑完就 curl 一下它,超过预期时间没收到 ping,它就替沉默的任务喊人:
curl -fsS --retry 3 https://hc-ping.com/你的uuid
Django 单体应用,代码规模友好,支持 cron 表达式定义预期节奏、任务间依赖,通知渠道覆盖邮件、Telegram、Slack 等几十种。更有意思的是它的商业面:同一作者用这套代码运营的 SaaS(healthchecks.io)自 2015 年跑到现在,是个人开发者靠开源项目养活自己的少数活样本——代码开源引流,托管版收订阅费,两边互不耽误。
| 仓库 | 角色 | Star 量级 | 上手 | 一句话场景 |
|---|---|---|---|---|
| ntfy | 发送端 | 2 万+ | ⭐ | 一行 curl 直推锁屏 |
| Bark | 发送端(iOS) | 6 千+ | ⭐ | iPhone 秒达,中文圈标配 |
| Gotify | 消息中心 | 近万 | ⭐⭐ | 家庭服务器消息总线 |
| Apprise | 渠道适配层 | 1.2 万+ | ⭐ | 一个库打通上百渠道 |
| shoutrrr | 渠道适配层 | 两千以内 | ⭐ | Go 版 URL 通知 |
| Mailrise | 协议翻译 | 两千以内 | ⭐⭐ | 老设备邮件报警转推送 |
| changedetection.io | 消息来源 | 2 万+ | ⭐⭐ | 盯网页变动盯降价 |
| Healthchecks | 消息来源 | 8 千+ | ⭐⭐ | 定时任务的死亡开关 |
mindmap
root((自建通知栈))
发送端
ntfy 一行curl
Bark iOS直达
Gotify 自建中心
转接头
Apprise 上百渠道
shoutrrr Go库
Mailrise 邮件桥
什么时候响
changedetection 盯网页
Healthchecks 守任务
链路的搭法很自然:changedetection.io 和你的定时脚本负责“发现事情”,Apprise/shoutrrr 负责选渠道,ntfy/Gotify/Bark 负责最后那一跳到锁屏;Mailrise 在角落里收留所有只会发邮件的老古董。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
