用手机遥控你的 Hermes——ntfy 接入指南
Hermes 消息平台接入第22篇:ntfy。极简推送服务接入。
用手机遥控你的 Hermes——ntfy 接入指南
你有没有想过,出门在外也能随时给家里的 Hermes 派活?比如让它查个邮件、跑个定时任务,然后结果直接推到你手机上?ntfy 就是干这个的——一个超轻量的 HTTP 推送服务,不需要装 SDK、不需要跑守护进程,手机装个 App 就能收消息。
为啥选 ntfy?
ntfy 的公共服务器 ntfy.sh 免费就能用,当然你也可以自己搭一个。它的原理很简单:订阅一个主题(topic),往这个主题发消息,所有订阅者都能收到推送。Hermes 接入后,你从手机发条消息给 agent,回复会直接变成手机通知弹出来。
准备工作
只需要三样东西:
- 一个主题名,随便起个不太容易撞车的字符串,比如
hermes-myname-2026 - 手机装好 ntfy App,并订阅上面那个主题
- (可选)自建 ntfy 服务器,或者注册个 ntfy.sh 账号拿 token
配置 Hermes
最简单的办法是跑向导:
hermes gateway setup
选 ntfy,跟着提示走就行。
也可以手动改环境变量,编辑 ~/.hermes/.env:
NTFY_TOPIC=hermes-myname-2026
NTFY_ALLOWED_USERS=hermes-myname-2026
NTFY_HOME_CHANNEL=hermes-myname-2026
核心变量就这几个:
| 变量 | 必填 | 说明 |
|---|---|---|
NTFY_TOPIC |
✅ | 订阅的主题(接收消息) |
NTFY_SERVER_URL |
❌ | 服务器地址,默认 https://ntfy.sh |
NTFY_TOKEN |
❌ | 访问令牌,私有主题需要 |
NTFY_ALLOWED_USERS |
推荐 | 允许的用户列表,见下文 |
NTFY_HOME_CHANNEL |
❌ | 定时任务默认推送目标 |
重要:先搞懂身份模型
ntfy 没有真正的用户认证,消息里的 title 字段谁都能伪造。所以 Hermes 的适配器不用 title 做鉴权,而是把主题名本身当作身份——所有发到该主题的消息,都视为来自同一个用户。
这意味着:任何知道主题名的人都能跟你的 agent 对话。要建立真正的信任边界,有三个办法:
- 自建 ntfy,用访问控制锁住主题
- 用 ntfy.sh 的保留主题(需要账号),配合
NTFY_TOKEN保护 - 起一个超长且难猜的主题名(比如
hermes-7d4f9c8b-2026),把它当共享密钥
不管哪种方式,敏感数据别走 ntfy,除非主题有访问控制。
快速上手:手机遥控 agent
- 定个主题名:
hermes-myname-2026 - 手机装 ntfy App,点 +,输入主题名
- 在服务器上执行:
echo 'NTFY_TOPIC=hermes-myname-2026' >> ~/.hermes/.env
echo 'NTFY_ALLOWED_USERS=hermes-myname-2026' >> ~/.hermes/.env
hermes gateway restart
- 从 ntfy App 发条消息给主题,agent 的回复会以推送通知的形式弹回来。
搭配定时任务
设置了 NTFY_HOME_CHANNEL 后,cron 任务可以直接推送到 ntfy:
cronjob(
action="create",
schedule="every 1h",
deliver="ntfy",
prompt="Check for alerts and summarise."
)
也可以从 shell 脚本里用 hermes send 指定主题:
hermes send ntfy:alerts-channel "Done!"
自建 ntfy 服务器
想要完全掌控?Docker 一行搞定:
docker run -p 80:80 -it binwiederhier/ntfy serve
然后让 Hermes 指向它:
NTFY_SERVER_URL=https://ntfy.mydomain.com
NTFY_TOPIC=hermes
NTFY_TOKEN=tk_abc123
自建的好处是:有访问控制、消息持久化、支持附件和 emoji 标签。
纯推送模式(单向通知)
如果你只想让 Hermes 往外推通知(比如定时摘要、告警),不想接收手机发来的消息,那就设置 NTFY_TOPIC 和 NTFY_PUBLISH_TOPIC 为同一个值,别设置 NTFY_ALLOWED_USERS。没有白名单,agent 就不会响应任何入站消息——手机只收推送,对话是单向的。
小贴士:Markdown 格式
想让回复在手机上显示得更漂亮?设置 NTFY_MARKDOWN=true,agent 的回复就会带上 X-Markdown 头,ntfy App 会渲染粗体、列表、代码块等格式。
ntfy 接入就这么简单——没有繁琐的依赖,不用写一行代码,手机一装 App,你的 Hermes 就随身携带了。快去试试吧!
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/messaging/ntfy