什么是 ntfy
ntfy 是一款轻量级的开源消息推送服务,能够方便用户推送消息到向手机或桌面上。
通过 ntfy,可以实现:
- 监控服务器,第一时间获知异常状态
- 自动化工作流时状态更新
- 脚本运行完成后提示
接下来,我们将 ntfy 服务部署到自己的服务器上,实现一个属于自己的即时消息推送服务。
安装 ntfy
安装 ntfy 的方式有很多,支持通过包管理器、Docker等方式部署,下面以包管理器为例,在 Ubuntu 22.04 服务器上部署。
Ubuntu 镜像源中的 ntfy 可能不是最新版本,因此前往 Github Releases 页面,下载最新版本的 deb 包。
根据操作系统架构选择 deb 包,然后执行下面的命令完成安装。
sudo dpkg -i ntfy_2.15.0_linux_amd64.deb配置 ntfy
编辑 /etc/ntfy/server.yml,在末尾加入以下内容,端口号根据实际情况修改:
base-url: "http://0.0.0.0:2586"
listen-http: ":2586"
auth:
default-access: "read-write"
cache-file: "/var/cache/ntfy/cache.db"
attachment-cache-dir: "/var/cache/ntfy/attachments"然后就是配置反向代理,开启 SSL,绑定域名,不过多赘述。当然也可以直接用 IP 访问,记得在防火墙和安全组里放行端口。
配置进程守护
使用 systemd 让 ntfy 在服务器上保持后台运行。通过包管理器安装的 ntfy,已经自动创建了相关服务文件,只需要激活即可:
# 开机自启
sudo systemctl enable ntfy.service
# 启动 ntfy
sudo systemctl start ntfy.service使用 ntfy
浏览器访问 ntfy 地址,就能看到界面了。
在 ntfy 中,有两个基本操作,分别是订阅主题和发布通知。接下来订阅一个主题 test。
向刚才新添加的 test 主题里,发布一则通知。
可以看到,在订阅的主题中出现了刚才发送的通知。
在实际应用中,消息通知是结合脚本或程序进行推送的,我们不会在网页端手动发布通知。接下来,通过 curl 命令来发送一则通知:
curl -H "Title: 通知" -d "Another message from ntfy" https://ntfy.scott-sloan.cn/test
ntfy 还支持发送附件,优先级,emoji表情以及图片消息,详细的用法可参考官方文档,在网页端菜单栏中点击文档,或点击此处查看。
移动客户端
移动客户端配置与桌面端大同小异,订阅主题后就能接收消息通知。
安装包可从官网下载,其中 Android 客户端界面如下:
并且由于系统限制,ntfy默认无法在后台保持运行,所以需要进行相关设置。
设置忽略电池优化(不限制后台)。
允许通知权限,其中 订阅服务 必须开启,否则不会自动重连服务器,造成消息推送迟滞。
在 ntfy 设置中还可开启 WebSocket 协议,节省资源和电量。
总结
对于个人而言,ntfy 完全够用了,并且在易用性和功能性上都做得很好。如此轻量灵活,又能跨平台兼容,关键是可以自行部署,不借助外部服务,ntfy 绝对是最优解。