首页 › weekly › 8个开源推送神器,手机随叫随到

一行 curl,手机就响:8 个开源推送神器深度拆解

本期思路

前几期挖过终端工具、诊断面板、地图栈、API 调试,本期换个所有开发者都天天被折磨、却很少有人认真自建的领域:消息推送。痛点非常具体——OneSignal、极光推送按设备数收年费;家庭服务器上的下载、备份、告警散落在 Telegram、邮件、短信里各自为政;而 iPhone 因为系统限制,自建通知几乎是「不可能任务」。本期围绕「自建推送中枢」这条主线,从一行命令就能跑的轻量方案,到可承载产品级通知的基建框架,共拆 8 个仓库,覆盖 Go、Python、TypeScript 三种技术栈和从个人到商业的不同层级。注:本文为离线盘点,Star 数为量级口径,精确数据以各仓库页面实时显示为准。


1. ntfy | binwiederhier/ntfy

仓库:github.com/binwiederhier/ntfy | 万星级头部项目 | 长期高频更新,是自托管圈最活跃的项目之一

一句话定位:把「发通知」变成一次 HTTP 请求——curl -d "备份完成" ntfy.sh/我的频道,手机立刻震动。

核心功能拆解:ntfy 的设计哲学是「主题即 URL」,不需要注册账号、不需要 SDK,向任意主题 POST 一段文本就算发送完成,安卓/iOS 官方 App 订阅同名主题即可接收。它是纯 Go 实现的单二进制服务,支持 Docker 自建,自带访问控制(ACL)、消息缓存与 TTL、附件存储、消息优先级和标签 emoji。最硬核的细节有两个:一是它是 UnifiedPush 生态的参考实现,Tusky 等 App 借它让安卓用户摆脱 Google 服务框架也能收到推送;二是 iOS 的处理——iOS 不允许应用常驻后台,自建服务器配合官方上游通道(upstream-base-url)即可让 iPhone 也实现秒级推送,这是绝大多数自建方案做不到的。另一个实用提醒:公共实例上主题名就是密码,务必用随机长字符串或自建开启鉴权。

上手难度:⭐(官方托管版免安装即用,自建一条 docker 命令)

适用人群:家庭实验室玩家、运维脚本作者、IoT 开发者。变现上官方已示范了「免费自托管 + 付费托管云」的经典路径,二次开发可做园区物业通知、IoT 设备告警托管等垂直托管服务。


2. Bark | Finb/bark-server

仓库:github.com/finb/bark-server(配套 iOS 客户端 Finb/Bark)| 数千星,中文圈知名度极高 | 客户端持续维护,服务端更新节奏放缓但稳定可用

一句话定位:iPhone 用户自建推送的事实标准——装个 App,一条 URL 就能把消息推到自己手机。

核心功能拆解:Bark 的聪明之处在于绕开了 iOS 的死结:它用一个上架 App Store 的客户端常驻接收苹果 APNs 通道,自部署的 Go 版 bark-server 负责接收你的 HTTP 请求并中转到 APNs,所以「自建服务器 + 官方 App」是合法组合,不需要自己买苹果开发者账号。推送接口极简,所有能力都编码进 URL 参数:自定义铃声、分组折叠、图标、点击跳转链接、定时推送,还支持推送内容的端侧加密(密钥留在自己手里,服务器只见密文,详见项目文档)。对中文用户还有个隐性优势:默认配置对国内网络环境友好,不像 Telegram Bot 那样需要代理。局限也很清楚:只覆盖 iOS 一端,安卓用户请直接看 ntfy 或 Gotify。

上手难度:⭐(Docker 起服务 + App 里填服务器地址,两分钟)

适用人群:iPhone 用户、iOS 效率工具作者。变现思路:帮企业部署「私有推送网关」——很多公司想把业务提醒推到员工 iPhone 又不敢走第三方 SDK,这是个真实付费场景。


3. Gotify | gotify/server

仓库:github.com/gotify/server | 数千星老牌项目 | 长期维护,社区稳定

一句话定位:家庭/内网通知台——带 Web 界面的自托管消息中心,一个界面收所有服务的提醒。

核心功能拆解:和 ntfy 的「无状态 URL」路线不同,Gotify 是传统架构:单 Go 二进制 + SQLite(也支持 MySQL/Postgres),自带管理后台,可以建多个「应用」,每个应用发一个 Token,不同来源的消息在界面上分区展示。传输层走 REST API + WebSocket 流式接口,安卓官方客户端可用,接入 Truenas、Jellyfin、Gitea 这类自带 webhook 的工具基本是填个 URL 的事。实现上它把「消息队列 + 存储 + 展示」都收进一个进程,资源占用极低,树莓派都能跑,是「给家里所有设备装一个收件箱」的最佳答案。和 ntfy 怎么选:要的是界面化管理、历史消息留档、多人多应用隔离,选 Gotify;要的是极简、脚本一行调用、跨端生态,选 ntfy。两者也常被搭配使用。

上手难度:⭐

适用人群:NAS 玩家、小团队内网工具链维护者。二开方向:打包成 NAS 应用商店的一键套件,或给中小团队做「内网告警交付」按部署收费。


4. Chanify | chanify/chanify

仓库:github.com/chanify/chanify | 千星级小众精品(低于 2000★)| 更新频率低,功能已稳定

一句话定位:Bark 的极简同类——Go 单文件服务端 + iOS 客户端,专注「发得快、收得稳」。

核心功能拆解:Chanify 的思路和 Bark 高度相似但更克制:Go 编译出单二进制,一条命令起服务,按设备发放 Token,HTTP 请求即推送。除了文本,它原生支持图片、音频、链接卡片和文件推送,还提供命令行工具和 Python SDK,写自动化脚本时比拼 URL 参数更顺手。服务端无数据库依赖,状态几乎为零,非常适合塞进 router、软路由或 smallest VPS 里常驻。它没有 Bark 那么多花哨参数,也没有 ntfy 的生态位,但作为「我只想给自己的脚本找个 iPhone 出口」的答案,它把复杂度压到了极限。适合当作自建推送体系里的轻量备胎:主力用 ntfy,给重要告警单独配一条 Chanify 通道做冗余,也是很多自托管玩家的真实玩法。

上手难度:⭐⭐

适用人群:脚本作者、极简主义者。小而美的典型:拿来练手 Go 网络编程、fork 后接入企业内部 IM 网关都是低成本改造。


5. message-pusher | songquanpeng/message-pusher

仓库:github.com/songquanpeng/message-pusher | 数千星 | 持续迭代中

一句话定位:消息聚合分发网关——一个 API 入口,按规则把消息路由到邮件、企业微信、钉钉、Telegram、Bark 等十余种渠道。

核心功能拆解:前面几个项目解决「推到手机」,这个项目解决「推到对的地方」。作者 songquanpeng 是国内知名开源作者(one-api 出自其手),message-pusher 延续了同样的风格:单二进制 + Web 管理界面 + Docker 一键部署。核心抽象是「消息渠道」:你创建若干渠道(SMTP 邮件、企业微信应用、企业微信群机器人、钉钉、飞书、Telegram、Bark 等),再创建「分发组」把消息按权重或全部广播到多个渠道,调用方只管往统一 API 塞消息,不用关心最终走哪条路。还支持 Markdown 消息渲染、用户与 API Key 管理、消息发送统计。这个「一处调用、多端到达」的设计,恰好是很多团队内部告警平台最缺的那一层——从消息路由表到渠道适配器,代码结构很适合阅读学习。

上手难度:⭐⭐

适用人群:需要统一告警出口的国内团队、SRE。变现路径清晰:包一层多租户和计费就是「企业通知网关 SaaS」,替代各厂自建的消息中心。


6. Apprise | caronc/apprise

仓库:github.com/caronc/apprise | 数千星 | 长期活跃维护

一句话定位:通知界的「万能适配器」——一个 Python 库/CLI 统一接入上百种通知服务。

核心功能拆解:Apprise 不自己当服务器,而是解决集成层的脏活:Telegram、Slack、Discord、SMTP 邮件、企业微信、ntfy、Gotify、Bark 等上百种服务(据官方 README 口径),全部抽象成统一 URL 语法——telegram://token/chatid、mailto://user:pass@host,一条命令 apprise -b "服务器挂了" 所有URL 就能群发。它是纯库形态,被大量自托管工具内置调用,相当于通知领域的 requests。对你的价值有两层:工程上,自己的项目接 Apprise 就免费获得全部渠道适配,省掉几十个 API 的对接维护;产品上,它是把「通知能力」嵌入你卖的服务时的最优底层选型——客户想用什么渠道,装上就能响应。CLI 还支持配置文件、标签分组和批量发送,运维拿来写告警脚本同样顺手。

上手难度:⭐⭐(pip 装即用,但吃透上百种 URL 语法需要查表)

适用人群:Python 开发者、工具链作者、做集成交付的乙方。变现:以「任意渠道告警集成」为卖点的交付服务,底层成本几乎为零。


7. Novu | novuhq/novu

仓库:github.com/novuhq/novu | 万星级,本期体量最大的项目 | 商业公司持续高频迭代

一句话定位:开源的通知基础设施——给产品而非个人建推送系统,对标 OneSignal、Courier 的开源平替。

核心功能拆解:前面项目是「给自己发消息」,Novu 是「给你的用户发消息」。它是 TypeScript 单仓多包架构,核心能力:可视化工作流编排(多步骤通知流,支持延迟、摘要去重 digest、按用户偏好降级渠道)、应用内收件箱组件(前端几行代码嵌入消息中心)、几十种渠道 Provider 适配(FCM/APNs 推送、Twilio 短信、SendGrid 等邮件、Slack/Teams IM),多租户与用户偏好管理开箱即用。Docker Compose 可自托管社区版,官方同时运营按量付费的云服务,是「开源核心 + 商业云」模式的教科书样本。对你的意义:如果你的 SaaS 正在被 OneSignal 的账单困扰,Novu 自托管是公认的出路;如果想做通知赛道的生意,它的架构(工作流引擎 + Provider 抽象 + 收件箱组件)就是最好的学习模板。

上手难度:⭐⭐⭐⭐(组件多、自托管栈重,建议先跑云版再决定)

适用人群:SaaS/移动应用团队、想做开发者基建产品的创业者。这是本期商业价值锚点:通知基础设施是被验证过的付费赛道。


8. PushBits | pushbits/server

仓库:github.com/pushbits/server | 数百星,本期最低调(低于 1000★)| 小而稳的活跃维护

一句话定位:把 Matrix 当推送骨干——最极客的自建告警通道,天然带加密和自控。

核心功能拆解:PushBits 的设计非常取巧:自己不维护长连接、不碰 APNs/FCM,而是把成熟去中心化 IM Matrix 当作传输层——管理员在后台为每个用户开 Matrix 账号,告警消息直接送进对应的 Matrix 房间,任何 Matrix 客户端(手机上的 Element 等)都能收。这一层借力让它代码量极小、部署极简,却白得了 Matrix 生态的全部能力:端到端加密、多端同步、消息历史、联邦互通。对运维场景它还有针对性设计:用户与告警源的管理 API、对 Prometheus Alertmanager 告警的对接方式(详见项目文档),监控告警可以直达值班人的手机。数百星的体量意味着它小众到几乎没有中文资料,但「用 Matrix 背书传输层」这个思路本身就是本期最有启发性的架构决策——选型难题不一定自己解,可以站在另一个去中心化网络的肩膀上。

上手难度:⭐⭐⭐(需要先有一个 Matrix 服务器,概念链稍长)

适用人群:注重隐私与数据主权的运维团队、MSP 托管服务商。变现:打包进「加密告警交付」的运维订阅服务,卖给合规要求高的客户。


横向对比

仓库 定位 语言 Star 量级 上手难度 最佳场景
ntfy HTTP 极简推送 Go 万星级头部 ⭐ 脚本/家庭实验室一键推送
Bark iPhone 推送 Go + Swift 数千星 ⭐ iOS 自建通知首选
Gotify 带界面通知台 Go 数千星 ⭐ 内网多应用消息中心
Chanify 极简 iOS 推送 Go 千星级 ⭐⭐ 备用通道/轻量部署
message-pusher 多渠道聚合网关 Go 数千星 ⭐⭐ 团队统一告警出口
Apprise 通知适配库 Python 数千星 ⭐⭐ 产品/脚本的多渠道集成
Novu 产品通知基建 TypeScript 万星级 ⭐⭐⭐⭐ SaaS 用户触达系统
PushBits Matrix 告警通道 Go 数百星 ⭐⭐⭐ 加密运维告警

选型全景

flowchart LR
  subgraph L1["个人入门"]
    A["ntfy 一行命令推送"]
    B["Bark iPhone即装即用"]
  end
  subgraph L2["家庭与团队"]
    C["Gotify 内网通知台"]
    D["Chanify 轻量备用通道"]
    E["message-pusher 多渠道路由"]
  end
  subgraph L3["产品与商业"]
    F["Apprise 上百服务适配"]
    G["Novu 产品级通知基建"]
    H["PushBits Matrix加密告警"]
  end
  A -->|"消息多了要界面"| C
  B -->|"要多端聚合"| E
  C -->|"要进自家产品"| G
  E -->|"要进自家产品"| G
  A -->|"运维告警要加密"| H
  F -->|"嵌入自研SaaS"| G

本期之最

参考来源

  1. binwiederhier/ntfy — ntfy 仓库及官方文档(docs.ntfy.sh),HTTP 推送、iOS 上游通道与 UnifiedPush 机制说明
  2. gotify/server — Gotify 仓库,REST + WebSocket 架构与部署说明
  3. finb/bark-server — Bark 服务端仓库,APNs 中转与自建说明
  4. novuhq/novu — Novu 仓库及 docs.novu.co,工作流编排与 Provider 体系文档
  5. caronc/apprise — Apprise 仓库与官方 Wiki,通知服务 URL 语法清单

[!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学通信知识星球海报-扫码加入