<!-- title: 一行curl，消息直达手机锁屏 -->

**本期主题：自建通知栈——NAS挂了、网页降价了、定时任务死了，消息怎么第一时间跳上手机锁屏**

前面几轮挖过语音、显微镜、生意流水线，这一轮换一个所有自建玩家都绕不开、却很少有人系统做的方向：**通知**。绝大多数人家里有 NAS、服务器、一堆定时脚本，但它们出事的时候，你往往是第二天才想起来去看日志。这期 8 个仓库拼出一条完整链路：从一行 curl 直推 iPhone 锁屏的 ntfy，到给老设备邮件报警当翻译官的 Mailrise，再到两个“什么才值得被通知”的场景仓库——盯网页变动的 changedetection.io 和给定时任务守灵的 Healthchecks。全程零 AI 套壳，全是当晚就能跑起来的小工具。文中 Star 为写作时点的大致量级，实时数据以仓库页面为准。

---

### 1. ntfy —— 把 HTTP POST 变成一条手机推送

**仓库**：[binwiederhier/ntfy](https://github.com/binwiederhier/ntfy) ｜ Star：2 万+ ｜ 更新：长期活跃，作者 Philipp Heckel 一个人维护多年

它的整个 API 就是一行命令：

```bash
curl -d "备份完成，耗时 37 分钟" ntfy.sh/my-secret-topic
```

手机装上 ntfy App 订阅这个 topic，消息立刻出现在锁屏上。不用注册、不用申请 key、不用接 SDK——痛点就这么被一行命令干掉了。自建版是单个 Go 二进制加一个容器，支持用户鉴权、消息附件、定时发送和点击跳转。实现上它走的是发布/订阅模型，topic 即频道，谁订阅谁收；App 端用长连接保活，还兼容 UnifiedPush 标准，成了不少去谷歌化安卓用户的推送底座。Home Assistant 现在内置 ntfy 集成，可见其江湖地位。

- **上手难度**：⭐
- **适用人群**：脚本党、NAS 党、运维值班。**变现思路**：官方托管版 ntfy.sh 提供付费档位，属于典型的“开源核心 + 托管收费”；给中小公司做私有化通知网关是现成的二开方向。

### 2. Bark —— iPhone 用户的自建推送直通车

**仓库**：[Finb/Bark](https://github.com/Finb/Bark) ｜ Star：6 千+ ｜ 更新：稳定维护，配套 iOS App 在 App Store 常年可用

ntfy 在 iOS 上受系统推送限制没法做到秒达，Bark 用另一条路解决了这个问题：iOS App 常驻苹果 APNs 通道，你自建一个 Go 写的 bark-server，App 把自己的 device key 注册上去，之后同样是一行 curl 直达锁屏：

```bash
curl https://api.day.app/你的key/服务器磁盘将满
```

自建服务端 + 借用官方 App 的 APNs 证书，这个组合让它成了中文自建圈的事实标配：群晖告警、Home Assistant 联动、爬虫跑完通知，全是它的经典用法。还支持消息分组、自定义铃声、端到端加密选项。官网文档在 [bark.day.app](https://bark.day.app)。

- **上手难度**：⭐
- **适用人群**：iPhone + 自建服务的重叠人群，国内用户尤其多。**变现思路**：项目本身不收费，但它验证了“推送入口”的价值——同类商业产品 Pushover 靠一次买断卖了很多年。

### 3. Gotify —— 老牌自建推送中心，家庭服务器的消息总线

**仓库**：[gotify/server](https://github.com/gotify/server) ｜ Star：近万 ｜ 更新：维护节奏慢但持续，社区稳定

比 ntfy 更早的玩家。Go + Vue 构建的单二进制服务，通过 WebSocket 长连接推送到自家的安卓 App。设计上每个应用发一个 token——备份脚本一个、下载器一个、监控一个——消息按应用分流入界面，相当于给家里所有会说话的机器装了一个总机。支持插件体系和 REST API，Python、Go 的客户端库齐全。它比 ntfy 重一点：要先起服务、建应用、拿 token，换来的是完整的 Web 管理界面、历史消息留存和多端管理。如果你的场景是“家里七八个服务都要汇报工作”，Gotify 的消息中心形态比 ntfy 的频道流更好管理。

- **上手难度**：⭐⭐
- **适用人群**：Home Lab 玩家。**变现思路**：适合作为二开底座——在它上面包一层多租户，就是一个面向小微团队的私有推送服务。

### 4. Apprise —— 一个命令打通一百多种通知渠道

**仓库**：[caronc/apprise](https://github.com/caronc/apprise) ｜ Star：1.2 万+ ｜ 更新：非常活跃，作者 Chris Caron 长期高频发版

前面三个工具各管各的渠道，Apprise 管所有渠道。这个 Python 库把上百种通知服务抽象成了 URL：Telegram 是 `tgram://`，邮件是 `mailto://`，Slack、Discord、企业微信各有各的 scheme。一条命令同时群发：

```bash
apprise -t "发布完成" -b "v2.0 已上线" tgram://... mailto://...
```

它的实现亮点在于抽象层设计：新增一个服务只需实现统一的 schema 接口，所以渠道增长极快，Uptime Kuma 这类明星项目的通知后端就是直接内嵌的 Apprise。对你自己写工具的意义是：**通知能力写一次，用户爱用什么渠道就配什么 URL**。

- **上手难度**：⭐
- **适用人群**：工具作者、SaaS 开发者。**变现思路**：最直接的省时间是做产品时不再逐家对接通知 API，一周集成工作缩成一个依赖。

### 5. shoutrrr —— Go 世界的 URL 通知库，两千星以内的小透明

**仓库**：[containrrr/shoutrrr](https://github.com/containrrr/shoutrrr) ｜ Star：千余，两千以内 ｜ 更新：低频维护，胜在接口稳定

Apprise 是 Python 世界的答案，shoutrrr 是 Go 世界的同思路实现：通知配置就是一个 URL，`gotify://192.168.1.10/token`、`smtp://user:pass@host`，CLI 一行发送，也可以作为库嵌进你自己的 Go 程序。它出名的途径很特别——容器更新工具 Watchtower 的通知后端就是它，所以无数人“用过但不知道它的名字”。仓库小、代码干净，非常适合当作阅读 Go 优秀小项目的样本，也适合你在写运维小工具时直接抄来用。

- **上手难度**：⭐
- **适用人群**：Go 开发者、Watchtower 用户。**变现思路**：单体价值有限，但它是“把基础设施抽象成 URL”这个设计模式的好教材，值得放进你的工具箱。

### 6. Mailrise —— 给只会“发邮件报警”的老设备当翻译官

**仓库**：[Ylianst/Mailrise](https://github.com/Ylianst/Mailrise) ｜ Star：千余，两千以内 ｜ 更新：轻量维护，作者 Ylian Saint-Hilaire 也是 MeshCentral 的作者

这是本期最刁钻也最解气的一个。你家路由器、NAS、打印机、UPS 的通知设置栏里，往往只有一个“SMTP 邮件报警”，永远做不到手机秒收。Mailrise 是一个迷你 SMTP 服务器：老设备把“邮件”发给它，它用 Apprise 把内容转成上百种现代推送渠道——ntfy、Telegram、Bark 通通可以。配置文件里登记好目标，老设备的通知栏里填上 Mailrise 的地址，十分钟内一套十年前的硬件就接入了 2026 年的通知体系。部署是一个小容器，资源占用几乎为零。它解决的不是新问题，而是存量世界的兼容问题——这类工具往往最长寿。

- **上手难度**：⭐⭐（需要理解 SMTP 基本概念）
- **适用人群**：管理一堆杂牌网络设备的家庭/小公司管理员。**变现思路**：可以打包进“老设备智能化改造”的交付方案里，按套收费。

### 7. changedetection.io —— 盯网页的神器，开源商业化的活样本

**仓库**：[dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) ｜ Star：2 万+ ｜ 更新：极度活跃，基本日更

通知栈里“消息从哪来”的最佳答案。它盯着你指定的任意网页：商品降价了、订单出签了、心仪的二手房挂牌了、竞品改了定价页——变了就通过内置的 Apprise 通知你（对，就是第 4 个仓库，这就是开源生态的咬合方式）。技术上有两档：默认 HTTP 抓取加文本 diff，遇到重 JS 的页面可以选 Playwright 无头浏览器渲染；支持 XPath 和 JSON 路径精准定位页面元素，所以既能盯页面文字也能盯 API 字段。它是“开源核心 + 官方付费托管”模式教科书级的案例：免费版自建无限用，不想折腾的人为托管版付月费，作者一个人把项目做成了可持续生意。

- **上手难度**：⭐⭐
- **适用人群**：薅羊毛党、海淘、做竞品监控的人。**变现思路**：拿它做底座，往垂直场景扎——签证名额、法拍房源、招聘更新，任何一个垂直监控都能长出付费订阅。

### 8. Healthchecks —— 给定时任务请一位守灵人

**仓库**：[healthchecks/healthchecks](https://github.com/healthchecks/healthchecks) ｜ Star：8 千+ ｜ 更新：持续活跃，项目从 2015 年做到现在

监控领域有个反直觉的事实：**“没有消息”才是坏消息**。你的备份脚本崩了，它不会发错误通知——它只是明天不会再跑了。Healthchecks 的思路是把报警反转过来：每个定时任务领一个 ping 地址，任务正常跑完就 curl 一下它，超过预期时间没收到 ping，它就替沉默的任务喊人：

```bash
curl -fsS --retry 3 https://hc-ping.com/你的uuid
```

Django 单体应用，代码规模友好，支持 cron 表达式定义预期节奏、任务间依赖，通知渠道覆盖邮件、Telegram、Slack 等几十种。更有意思的是它的商业面：同一作者用这套代码运营的 SaaS（healthchecks.io）自 2015 年跑到现在，是个人开发者靠开源项目养活自己的少数活样本——代码开源引流，托管版收订阅费，两边互不耽误。

- **上手难度**：⭐⭐
- **适用人群**：所有写 cron 的人，没有例外。**变现思路**：面向运维外包商，把“任务看门”做成交付标配。

---

### 横向对比

| 仓库 | 角色 | Star 量级 | 上手 | 一句话场景 |
|------|------|-----------|------|------------|
| ntfy | 发送端 | 2 万+ | ⭐ | 一行 curl 直推锁屏 |
| Bark | 发送端（iOS） | 6 千+ | ⭐ | iPhone 秒达，中文圈标配 |
| Gotify | 消息中心 | 近万 | ⭐⭐ | 家庭服务器消息总线 |
| Apprise | 渠道适配层 | 1.2 万+ | ⭐ | 一个库打通上百渠道 |
| shoutrrr | 渠道适配层 | 两千以内 | ⭐ | Go 版 URL 通知 |
| Mailrise | 协议翻译 | 两千以内 | ⭐⭐ | 老设备邮件报警转推送 |
| changedetection.io | 消息来源 | 2 万+ | ⭐⭐ | 盯网页变动盯降价 |
| Healthchecks | 消息来源 | 8 千+ | ⭐⭐ | 定时任务的死亡开关 |

### 生态一张图

```mermaid
mindmap
  root((自建通知栈))
    发送端
      ntfy 一行curl
      Bark iOS直达
      Gotify 自建中心
    转接头
      Apprise 上百渠道
      shoutrrr Go库
      Mailrise 邮件桥
    什么时候响
      changedetection 盯网页
      Healthchecks 守任务
```

链路的搭法很自然：changedetection.io 和你的定时脚本负责“发现事情”，Apprise/shoutrrr 负责选渠道，ntfy/Gotify/Bark 负责最后那一跳到锁屏；Mailrise 在角落里收留所有只会发邮件的老古董。

### 本期之最

- **最值得立即尝试**：ntfy。五分钟从零到锁屏收消息，所有后续玩法的入口。
- **最有商业潜力**：changedetection.io。它已经证明了模式可行——网页监控加上任何一个垂直行业滤镜，都是一个订阅制生意。
- **最被低估**：Mailrise。Star 最少、讨论最少，但“让存量硬件开口说话”是真金白银的痛点，而且几乎没有竞品在做同一件事。

## 参考来源

1. [binwiederhier/ntfy](https://github.com/binwiederhier/ntfy) — ntfy 仓库及官方托管站 [ntfy.sh](https://ntfy.sh)，一行 curl 推送的文档出处
2. [dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) — 网页变动监控，官方付费托管版见 [changedetection.io](https://changedetection.io)
3. [Finb/Bark](https://github.com/Finb/Bark) — Bark 服务端仓库，iOS 端文档见 [bark.day.app](https://bark.day.app)
4. [healthchecks/healthchecks](https://github.com/healthchecks/healthchecks) — 开源版仓库，商业托管版 [healthchecks.io](https://healthchecks.io) 自 2015 年运营
5. [caronc/apprise](https://github.com/caronc/apprise)、[gotify/server](https://github.com/gotify/server)、[Ylianst/Mailrise](https://github.com/Ylianst/Mailrise)、[containrrr/shoutrrr](https://github.com/containrrr/shoutrrr) — 各仓库主页及其 README

> [!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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
