Перейти к содержимому

推送通知(PWA)

Это содержимое пока не доступно на вашем языке.

DumbMonit 可以像原生应用那样直接响铃提醒你的手机或电脑,而不需要 安装任何应用或在任何地方创建账户:浏览器自带的推送服务 (Google、Mozilla、Apple、Microsoft)会把一条端到端加密的消息从 你的服务器传送到设备上,即使所有 DumbMonit 标签页都已关闭,通知 仍会显示出来。这就是标准的Web Push;该网站也可以被安装为一个 应用(渐进式网页应用,PWA),这样就能像其他应用一样通过图标 打开。

两个步骤:在每台设备上启用推送(本页面),然后用一个Web Push渠道决定哪些告警会发到那里(通知渠道)。

  • 必须使用 HTTPS。 浏览器只向安全来源提供推送功能。请把 DumbMonit 放在带有证书的反向代理之后(Caddy、Traefik、Nginx Proxy Manager……),并通过该地址打开它。http://localhost 也 被接受,但只在服务器本机测试时有用。在纯 http://192.168.x.x 下,该区域会显示需要 HTTPS。
  • 服务器需要能够向外访问 HTTPS 以连接推送服务: fcm.googleapis.com(Chrome,以及 Android 上的 Edge)、 *.notify.windows.com(Windows 上的 Edge)、 updates.push.services.mozilla.com(Firefox)和 *.push.apple.com(Safari、iPhone、iPad)。不需要任何入站 连接:你的 DumbMonit 不需要能从互联网访问,手机只需要在你 点击通知时能连接到它。
  • 设置 DUMBMONIT_PUBLIC_URL 为你使用的 HTTPS 地址:它会作为 发送者的联系方式提供给推送服务,也是其他渠道中链接指向的地址。
  1. 在 Chrome、Edge、Firefox 或 Safari 中打开 DumbMonit 并登录。
  2. 可选:将其安装为应用(地址栏 → 安装,或浏览器菜单 → 添加到主屏幕)。无论是否安装,通知都能正常工作。
  3. 设置 → 推送通知 → 在此设备上启用,并在浏览器询问时允许 通知。
  4. 发送测试。 几秒钟内应该会出现一条 DumbMonit — test notification。

Apple 只向添加到主屏幕的网站提供推送功能(iOS 和 iPadOS 16.4 或更高版本):

  1. 在 Safari 中打开 DumbMonit。
  2. 分享 → 添加到主屏幕,然后从新图标打开 DumbMonit。
  3. 登录,然后设置 → 推送通知 → 在此设备上启用,并允许 通知。
  4. 发送测试。

在未安装的情况下使用 Safari,该区域会显示请先安装。

在设置 → 通知与报告中,添加一个Web Push类型的渠道。不加任何 设置时,每个账户的每台已订阅设备都会收到;在账户下列出 账户名可以只针对部分人。常规的渠道策略同样适用(最低严重级别、 静默时段、路由过滤器……),因此你可以比如只让某台手机接收 严重级别的告警。

一条通知会显示为”Critical · nas01”并附带简短摘要;点击它会 打开告警页面。告警解决后会替换其通知,而不是新增第二条。

每个账户查看和管理自己的设备:查看者也可以在自己的手机上启用 推送,不会影响其他任何内容。列表显示浏览器和系统、推送服务、 设备添加时间以及上次收到消息的时间;移除会忘记该设备 (如果是在你正在使用的设备上操作,也会同时取消该浏览器的订阅)。 推送服务报告为已消失的设备(应用被卸载、浏览器数据被清除)会在 下次发送时自动被删除。

看到的内容应对方法
需要 HTTPS通过 HTTPS 地址打开 DumbMonit。
请先安装(iPhone、iPad)分享 → 添加到主屏幕,从图标打开。
已阻止该站点的通知被拒绝了:在浏览器的站点设置中允许它(地址栏中的锁形图标,或 iOS 设置 → 通知 → DumbMonit),然后刷新。
不支持该浏览器没有 Web Push(版本过旧,或某些注重隐私的浏览器):请使用较新版本的 Chrome、Edge、Firefox 或 Safari。
测试提示无法连接推送服务服务器无法连接到推送服务:请检查其出站 HTTPS 和 DNS。
测试提示拒绝了 VAPID 签名通常是服务器时钟不准;请检查主机上的 NTP。
Android 手机休眠时收不到任何内容电池优化可能会延迟浏览器的处理:将它加入白名单,或把该渠道的紧急程度设为 high。
  • 消息在离开服务器之前会为每台设备单独加密(RFC 8291):推送 服务只能看到一段不透明的数据块,只有设备才能解密它。
  • 服务器使用自己的 VAPID 密钥对(RFC 8292)对每条消息签名,该 密钥对在首次启动时生成,并使用实例密钥加密存储;私钥永远不会 被 API 返回。在新机器上执行恢复会生成 一个新的密钥对:需要在每台设备上重新启用推送。
  • 订阅地址来自浏览器,因此服务器只接受公共 IP 上的 HTTPS 地址: 私有地址、回环地址和链路本地地址会被拒绝,订阅时和之后每次 连接时都会检查。
  • Service Worker(/sw.js)只负责显示通知。它不缓存任何内容, 也不拦截任何请求:界面和 API 始终来自服务器,绝不会来自过期 的副本。