ntfy 桌面通知接入指南:Windows、macOS、Linux 三平台一次配齐

发布时间:2026/9/2 13:24:34
ntfy 桌面通知接入指南:Windows、macOS、Linux 三平台一次配齐 ntfy 桌面通知接入指南Windows、macOS、Linux 三平台一次配齐【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy让服务器的告警和长任务的完成提示实时出现在你的桌面不用再守着终端这是 ntfy 想解决的日常痛点。ntfy 是一个基于发布-订阅模型的轻量级通知服务通过一个二进制文件同时提供发布者和订阅者 CLI把跨平台通知集成压缩成几行命令的事。原理速览一个主题把消息送达ntfy 的模型只有两个角色发送方对某个主题topic发布消息接收方持续订阅该主题服务端负责把消息推给所有订阅者。消息可以带标题、优先级1~5和标签接收端按这些字段决定弹什么、怎么弹。不用装任何东西用 curl 就能验证这条链路curl -d hello https://ntfy.sh/hello-world执行后终端直接打印消息的 JSON 回执含id、time、message字段说明发布这一半已经通了订阅那一半下面装好 CLI 就来验证。快速上手安装、验证与首次收发1. 安装 ntfy 客户端ntfy 的客户端与服务端是同一个二进制按平台任选一种方式Linux用发行版包管理器apt/dnf 等装ntfy或从官方 release 下载对应架构的二进制放入/usr/local/binmacOS下载 darwin 压缩包把ntfy放入 PATH例如/usr/local/bin/ntfyWindows下载 zip 包把ntfy.exe放进%Path%或用scoop install ntfy。详细步骤见 docs/install.md。2. 验证版本ntfy --version预期输出形如ntfy 2.27.0同时打印 Git 提交号和 Go 运行时版本。看到版本号即说明二进制可执行、PATH 配置正确。3. 收发第一条消息开两个终端分别执行# 终端 A订阅主题 ntfy subscribe demo-topic # 终端 B发布消息 ntfy publish demo-topic first message终端 A 会持续等待并逐条打印收到的 JSON 消息看到first message就说明收发链路完整。Linux 桌面通知落地notify-send、过滤规则与 systemd 用户服务Linux 是这套方案里自由度最高的平台这一节按先跑通、再过滤、最后常驻三步走。用 notify-send 弹出原生桌面通知最简单的做法是让每条消息触发一次notify-sendntfy subscribe my-topic notify-send ntfy: $title $message$title、$message、$priority、$tags等变量会以环境变量形式传给命令双引号内即可引用不用担心转义。消息到达后桌面右上角会弹出对应通知。如果不想常驻一个订阅进程也可以用 curl 直接读流的写法仓库里的 examples/linux-desktop-notifications/notify-desktop.sh 就是现成参考TOPIC_URLntfy.sh/mytopic while read msg; do [ -n $msg ] notify-send ntfy: $msg done (stdbuf -i0 -o0 curl -s $TOPIC_URL/raw)/raw后缀让响应变成纯文本流stdbuf关掉缓冲区保证消息即时可读。用 client.yml 写订阅规则与优先级过滤订阅规则统一放在客户端配置文件里Linux 非 root 用户为~/.config/ntfy/client.yml文件骨架和变量、过滤器说明见 client/client.yml。只弹高优先级告警的写法default-host: https://ntfy.sh subscribe: - topic: server-alerts command: notify-send -u critical 服务器告警 $message if: priority: high,urgent - topic: backup-status command: | if [ $message success ]; then notify-send -i dialog-information 备份成功 else notify-send -u critical -i dialog-error 备份失败$message fiif段按消息字段过滤priority为逗号分隔的逻辑或tags为逻辑与只有命中的消息才会执行对应command。改完配置重新跑一次订阅即可ntfy subscribe --from-config预期终端挂住不退出只有命中规则的主题消息才会触发桌面通知。systemd 用户服务自启仓库自带用户级服务文件 client/user/ntfy-client.service其执行的是ntfy subscribe --config ~/.config/ntfy/client.yml --from-config正是上面配好的规则。拷贝并启用cp client/user/ntfy-client.service ~/.config/systemd/user/ systemctl --user daemon-reload systemctl --user enable --now ntfy-client用systemctl --user status ntfy-client应看到active (running)失败时systemctl --user journalctl -u ntfy-client注意加--user里能看到具体报错。重启后登录会话即自动恢复订阅无需人工干预。macOS 与 Windows 的关键差异两个平台的订阅模型和 Linux 相同差异只在通知命令、配置路径与常驻方式。macOS配置文件~/Library/Application Support/ntfy/client.yml通知走系统原生的osascriptntfy subscribe mac-alerts osascript -e display notification \$message\ with title \ntfy 通知\ sound name \default\首次弹出时若终端 App 没有通知权限去系统设置 → 通知里给终端授权常驻可用launchctl加载一个 LaunchAgent或直接让终端常驻订阅。Windows配置文件%AppData%\ntfy\client.yml桌面 Toast 通知推荐notifu需单独安装订阅时引用环境变量ntfy subscribe win-alerts notifu /t %NTFY_TITLE% /m %NTFY_MESSAGE%开机自启用任务计划程序新建基本任务触发器选登录时操作启动ntfy.exe参数填subscribe --from-config。进阶Alertmanager 与 CI/CD 接入 ntfy监控侧只需让 Alertmanager 的 webhook 指向你的 ntfy 主题告警就变成桌面通知receivers: - name: ntfy-receiver webhook_configs: - url: http://ntfy-host/ops-alerts send_resolved: truesend_resolved: true保证恢复事件也会推送形成告警-恢复闭环。想控制通知的标题和正文排版仓库提供了 server/templates/alertmanager.yml 作为 webhook 模板参考可按需改写title与message字段。CI/CD 侧则只需在流水线尾部加一条发布命令把部署结果带出来ntfy publish --title 部署完成 --priority high --tags tada deploy-done v2.3.0 已上线--tags可携带图标标签桌面端通知里会一并显示一眼区分成功与失败。常见问题排查桌面通知完全不弹notify-send走的是桌面环境的 dbus 通知总线在纯 SSH 会话里测试必然失败。先在图形桌面终端里手动跑notify-send test hi确认桌面通知可用再查systemctl --user journalctl -u ntfy-client里的命令执行日志。通知里中文乱码多为终端 locale 不是 UTF-8 所致执行locale检查确保输出编码为 UTF-8 后重试。systemd 用户服务重启电脑后没起来用户级服务只在你登录的会话内运行锁屏或注销会挂起。需要无人值守时用loginctl enable-linger $USER让会话在登录后常驻。macOS 弹不出通知系统首次会静默拦截终端的通知请求去系统设置 → 通知找到终端并允许通知即可。Windows 上 notifu 报不是内部或外部命令说明工具未安装或不在%Path%中先装好 notifu 再执行订阅命令。先把两个终端的收发跑通再把订阅规则写进client.yml交给 systemd 托管跨平台的桌面通知链路就稳定了。【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考