无需注册的通知服务ntfy

今天是老苏居家隔离的第 60 天。

周六和周一都是上午一次抗原+一次核酸,晚上又做一次抗原,周日上午和晚上各一次抗原。

目前基本上保持了 两天一次核酸,一天两次抗原 的节奏。


什么是 ntfy ?

ntfy(发音:notify)是一个简单的基于 HTTPpub-sub 通知服务。它允许您通过任何计算机上的脚本向您的手机或桌面发送通知,完全无需注册或费用。

官方提供了免费的版本:https://ntfy.sh/app,不过老苏还是建议自己搭建。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 ntfy ,选择第一个 binwiederhier/ntfy,版本选择 latest

docker 文件夹中,创建一个新文件夹,并将其命名为 ntfy,并在其中建 2 个子文件夹,分别为 cacheconfig

文件夹 装载路径 说明
docker/ntfy/cache /var/cache/ntfy 存放消息缓存
docker/ntfy/config /etc/ntfy 存放设置

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
3680 80

默认并没有指定端口

需要点 + 号自己添加

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建目录
mkdir -p /volume2/docker/ntfy/{cache,config}

# 进入 ntfy 目录
cd /volume2/docker/ntfy

# 启动容器
docker run -d \
--name ntfy \
-v $(pwd)/cache:/var/cache/ntfy \
-v $(pwd)/config:/etc/ntfy \
-p 3680:80 \
binwiederhier/ntfy

运行

在浏览器中输入 http://群晖IP:3680 就能看到主界面

左侧菜单 Add Subscription 添加订阅,因为主题没有密码保护,所以要选择一个不容易猜到的名称

默认情况下,ntfy 服务器对所有人开放,这意味着每个人都可以读取和写入任何主题(这就是 ntfy.sh 的配置方式)。要限制对您自己的服务器的访问,您可以选择配置身份验证和授权。配置方法可以看看官方文档:https://ntfy.sh/docs/config/#access-control

左上角如果出现下面的提示,需要授予浏览器显示通知的权限,前提是必须要使用 https 协议

授权之后

发消息

下面是一个示例,展示了如何使用 POST 请求(通过 curl -d)发布消息:

格式比较简单:curl -d <消息> <服务器IP:端口>/<主题>

1
2
# 简单消息测试
curl -d "Hi" http://192.168.0.197:3680/laosu_test_ch

在网页端可以看到刚刚发送的消息

您可以设置 通知优先级标题标签 消息。这是一起使用其中一些的示例:

1
2
3
4
5
6
7
# 更复杂的消息示例
curl \
-H "Title: Unauthorized access detected" \
-H "Priority: urgent" \
-H "Tags: warning,skull" \
-d "Remote access to $(hostname) detected. Act right away." \
http://192.168.0.197:3680/laosu_test_ch

在网页端可以看到刚刚发送的消息是👇这样的

手机客户端

因为老苏没有 iPhoneMac 也不在身边,所以目前试了 Android 客户端。

除了 Google Play 外,还可以在 F-Droid 下载:https://f-droid.org/en/packages/io.heckel.ntfy/

老苏下载的是最新的 Version 1.10.0 (24)

本文完成于 2 个月前,目前最新的版本已经是 1.13.0

第一次启动

设置订阅和服务器

要勾选 Use another server 才能输入自己的服务器地址

收到消息

查看详情

应用场景

AlertoverWxPusher 一样,ntfy 也是消息推送,所以使用的场景也很多,比如 SSH 登录时通知磁盘空间不足警报 等等,在 https://ntfy.sh/docs/examples/ 有一些示例,作者还在 Github 收集了一些示例:https://github.com/binwiederhier/ntfy/tree/main/examples

参考文档

binwiederhier/ntfy: Send push notifications to your phone or desktop using PUT/POST
地址:https://github.com/binwiederhier/ntfy

ntfy
地址:https://ntfy.sh/app

Installation - ntfy
地址:https://ntfy.sh/docs/install/#docker