ntfy自建消息推送服务

开源的消息推送服务:Bark。通过自建服务端、发送消息请求,就能在客户端上接收通知。
Bark 确实简单好用,但它的客户端仅支持 iOS,这对安卓用户就不太友好了。

1- 项目介绍

ntfy是一个基于 HTTP 协议的消息通知服务。借助 ntfy 服务,你可以通过脚本来发送消息到自己的手机或桌面上。

2- 快速安装

目前 ntfy 最新版本为 v2.4.0,安装方式有很多,我还是使用 Docker 来部署。

docker run -p 80:80 -itd binwiederhier/ntfy serve

服务启动后,在浏览器中输入 http:// 来访问页面:

3- 使用说明

在 ntfy 中有两个基本操作:订阅主题 和 发布通知。接下来,让我们试着新建一个主题并将消息发布到该主题中。

3.1- 添加主题

相较于 Bark,ntfy 增加了一个主题的概念。我们可以将消息推送到不同的主题中,从而对消息进行分类。

添加好的主题可以在订阅主题中看到:

3.2- 发布通知

ntfy 提供了 WebUI,使得我们可以通过页面来推送消息。现在让我们试试往刚刚创建的主题中发布一则通知:

可以看到,在主题中出现了刚刚发布的通知:

虽然我们可以通过页面手动发布通知,但是一般不会这么做。通常来说,消息推送服务是和脚本或程序结合使用的。所以现在让我们通过命令来发送一则新的通知:

curl -H "Title: 通知" -d "隔壁便利店的薯片半价了!" http://localhost/test

比如我们可以编写一个脚本,当检测到商品价格发生变化时,则发布通知来告知:

除了基本的通知,ntfy 还支持发布附带附件、优先级、标签、表情以及图片的消息,具体的使用方法可以参考官方文档[2]。

4- 移动客户端

移动端设置的过程与桌面版大同小异,添加好订阅的主题就可以接收推送的通知。

相关的安装包[3]可以从官网下载,这里以安卓客户端为例,显示的效果如下:

不过我实际测试发现,要想实时接收消息,需要保持应用始终在后台运行。

5- 写在最后

我尝试 ntfy 的初衷是寻找一个全平台可用消息推送服务。出乎我意料的是,ntfy 不仅支持多平台,在易用性和功能性上平衡得非常好。

此外,ntfy 是有付费版本的,免费版本存在一些限制,比如每日消息数、附件的大小等,不过对于个人来说,应该足够了。

6- References

  1. ntfy: https://github.com/binwiederhier/ntfy

  2. 官网: https://docs.ntfy.sh/publish/

  3. 安装包:https://docs.ntfy.sh/subscribe/phone/