前言
上期给大家分享了如何使用 Docker 自建 Bark 消息推送服务,不过 Bark 主要面向 iPhone 用户,并没有官方的 Android 客户端。那么,很多使用安卓手机的小伙伴可能就要问了:Android 手机如何搭建自己的消息推送服务器呢?
今天就给大家分享一个非常不错的开源项目——ntfy。它是一款轻量级的消息推送服务,支持 Android 和 iOS 客户端,可以通过 Docker 快速部署,并提供简单易用的 HTTP API。
部署完成后,我们只需要在手机上订阅对应的主题,就可以将服务器运行状态、系统告警、脚本执行结果以及自动化任务通知实时推送到手机上。
本期教程就带大家从零开始,使用 Docker 一键部署 ntfy,完成服务配置、手机端连接以及消息推送测试,让 Android 用户也能拥有属于自己的私有消息推送服务!
项目简介
ntfy(发音为“ notify ”)是一个基于HTTP的简单发布/订阅 通知服务。使用ntfy,您可以从任何计算机 通过脚本向您的手机或桌面发送通知,无需注册或支付任何费用。如果您想运行自己的服务实例,也很容易做到,因为ntfy是开源的。
说明
该项目同样提供官方免费的服务器,对于不想自建服务器的用户可以使用官方的服务器
https://ntfy.sh
curl -d "Hi" https://ntfy.sh/wwe
就是最简单的消息推送方式。
其中:
- curl:发送 HTTP 请求。
- -d "Hi":消息正文。
- https://ntfy.sh/wwe:推送服务器地址及主题。
- wwe:主题名称,手机订阅这个主题即可接收消息。
ntfy 消息推送使用方法
ntfy 支持通过 HTTP API 发送消息,可以使用 curl 命令快速推送消息到 Android 或 iOS 手机。只需要指定服务器地址和主题名称,即可完成消息推送。
一、普通文本推送
最简单的消息推送方式:
curl -d "服务器运行正常!" \
https://你的域名/server-alert
参数说明:
curl:发送 HTTP 请求。-d:指定消息正文。https://你的域名/server-alert:推送服务器地址及主题名称。server-alert:消息主题,手机订阅该主题即可接收消息。
二、自定义消息标题
通过 Title 参数设置消息标题:
curl \
-H "Title: 服务器告警" \
-d "CPU 使用率超过 90%!" \
https://你的域名/server-alert
三、设置消息优先级
通过 Priority 参数设置消息优先级:
curl \
-H "Title: 紧急告警" \
-H "Priority: urgent" \
-d "服务器出现异常,请立即检查!" \
https://你的域名/server-alert
ntfy 支持以下优先级:
| 优先级 | 数值 | 说明 |
|---|---|---|
| Min | 1 | 最低 |
| Low | 2 | 较低 |
| Default | 3 | 默认 |
| High | 4 | 较高 |
| Urgent | 5 | 紧急 |
四、添加标签和 Emoji
通过 Tags 参数添加标签或 Emoji:
curl \
-H "Title: 备份完成" \
-H "Tags: white_check_mark,backup" \
-d "服务器数据备份成功!" \
https://你的域名/server-alert
五、点击消息跳转网页
通过 Click 参数设置点击通知后打开的网页:
curl \
-H "Title: 网站监控通知" \
-H "Click: https://example.com" \
-d "网站监控检测完成,点击查看详情。" \
https://你的域名/server-alert
六、Markdown 格式消息
ntfy 支持 Markdown 消息,可以通过 Markdown: yes 开启:
curl \
-H "Title: 服务器状态报告" \
-H "Markdown: yes" \
-d "**服务器:** VPS-01
- CPU:20%
- 内存:45%
- 磁盘:60%
状态:正常" \
https://你的域名/server-alert
七、JSON 格式推送
如果需要集成 Python、JavaScript 或其他自动化程序,可以使用 JSON 格式发送消息:
curl -X POST https://你的域名/ \
-H "Content-Type: application/json" \
-d '{
"topic": "server-alert",
"title": "服务器监控告警",
"message": "CPU 使用率超过 90%",
"priority": 5,
"tags": ["warning", "computer"],
"click": "https://example.com"
}'
注意:JSON 推送请求需要发送到服务器根地址 /,并在 JSON 数据中指定 topic。
八、常用参数说明
| 参数 | 功能 |
|---|---|
| Title | 设置消息标题 |
| Priority | 设置消息优先级 |
| Tags | 添加标签或 Emoji |
| Click | 点击通知跳转指定网页 |
| Actions | 添加通知操作按钮 |
| Attach | 添加附件 |
| Icon | 自定义通知图标 |
| Markdown | 启用 Markdown 格式 |
| Delay | 延迟发送消息 |
| 邮件转发 |
九、实际应用场景
1. 服务器运行状态通知
服务器启动、关闭或重启后,自动发送通知。
curl \
-H "Title: 服务器通知" \
-H "Tags: computer" \
-d "VPS-01 已成功启动!" \
https://你的域名/server-alert
2. 自动备份通知
每天定时备份完成后,推送成功或失败结果。
curl \
-H "Title: 数据备份" \
-H "Tags: white_check_mark" \
-d "服务器数据备份成功!" \
https://你的域名/server-alert
3. 服务器异常告警
当 CPU、内存或磁盘空间超过设定阈值时,向手机发送紧急通知。
curl \
-H "Title: 服务器异常告警" \
-H "Priority: urgent" \
-H "Tags: warning" \
-d "CPU 使用率超过 90%,请及时检查!" \
https://你的域名/server-alert
十、官方文档
- 官方网站:https://ntfy.sh/
- GitHub:https://github.com/binwiederhier/ntfy
- 消息推送 API:https://docs.ntfy.sh/publish/
- 服务端配置:https://docs.ntfy.sh/config/
- Docker 部署:https://docs.ntfy.sh/install/
部署方法
使用Docker安装
本教程使用docker的方式安装部署,简单便捷

X86/Arm双平台
| 平台 | 架构 | 适用场景 |
|---|---|---|
| linux/amd64 | x86_64 | VPS、PC服务器、Intel/AMD |
| linux/arm64 | ARM64 | 树莓派、Mac M系列、ARM 云服务器 |

准备条件
1)一台服务器
我们使用莱卡云VPS来演示,建议选择境外云服务器(免备案)
需要vps的可以看以下信息,配置尽量选择大点的比如2核心4G内存
莱卡云官网
2)本教程使用到的项目
本教程使用的官方github地址
https://github.com/binwiederhier/ntfy

目前高达35.2k stars
如果对你有用,可以帮忙给作者点个stars
3)客户端下载
android和ios客户端可以直接到官方网站下载

4)域名(建议)
根据自己的需求,
1.建议绑定域名,方便使用,也更安全
VPS部署
一、Docker环境部署
在vps安装docker和docker-compose
Docker官方安装文档(英文)
https://duan.yyzq.eu.org/docker-001
Docker-Compose官方安装文档(英文)
https://duan.yyzq.eu.org/docker-002
Centos安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//03
Ubuntu安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//04
==推荐直接用一键脚本==
docker安装脚本
bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/DockerInstallation.sh)
docker-compose安装脚本
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
二、部署命令
登录我们自己的境外VPS使用root账户执行以下步骤
docker-compose命令
创建一个目录,并进入此目录
mkdir ntfy ;cd ntfy
请自行安装vim编辑器
然后再新建docker-compose.yml
vim docker-compose.yml
services:
ntfy:
image: binwiederhier/ntfy:latest
container_name: ntfy
command: serve
environment:
- TZ=Asia/Shanghai
volumes:
- ./cache:/var/cache/ntfy
- ./config:/etc/ntfy
ports:
- "8480:80"
restart: always
注意端口8480如有冲突自行修改
三、执行容器运行命令
docker-compose up -d #运行容器
docker-compose ps #查看是否启动成功
==正常启动如下所示==
docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
ntfy binwiederhier/ntfy:latest "ntfy serve" ntfy 34 minutes ago Up 34 minutes 0.0.0.0:8480->80/tcp, [::]:8480->80/tcp
四、web界面
打开web页面使用
成功以后需要打开自己相应的端口8480)防火墙就可以web端访问了
主界面
http://ip:8480

该项目我们看到这个界面就说明服务正常运行了
这个项目不用绑定域名和SSL证书也可以正常使用,建议绑定下域名和证书,更安全
绑定域名
接下来就是绑定域名和配置SSL证书
绑定域名的教程参考以下内容
绑定域名视频教程
B站
YouTube
绑定域名可以参考
NginxProxyManager
https://duan.yyzq.eu.org//npm-ch
绑定好域名之后我们就得到了自建的https的ntfy通知服务

也可以更改语言
这里web界面直接可以发布通知

网页端直接也可以收到通知

web页面正常接收

Android手机端接收

同样的renewhelper也可以直接配置ntfy

==有任何问题可以直接留言或者问我==
==有任何问题可以直接留言或者问我==
==有任何问题可以直接留言或者问我==
欢迎关注我们的微信公众号!

评论区