服务器告警、定时脚本结果、部署完成通知,最怕发不出去或依赖第三方额度。Gotify 是一个开源的自托管推送服务,自己掌控推送通道,把消息直接推到手机 App,不限条数、不经过任何外部平台。本文在雨云 KVM 云服务器上把它跑起来,并联动监控做实时告警。
一、为什么自己搭推送
第三方推送服务要么收费、要么限条数、要么要求数据过它们的服务器。Gotify 把通道完全收回到你自己手里:
- 不限量:自家服务器,想推多少推多少,没有月度额度焦虑。
- 数据自管:推送内容只过你的服务器,敏感告警不落第三方。
- 多端收:提供 Android / iOS 客户端,WebSocket 长连,消息近乎实时到达。
它和本站 12261 的 Uptime Kuma、12239 的哪吒面板是天然搭档——监控发现问题,Gotify 负责把问题推到你手机。
合规提示:Gotify 仅用于你自身系统的运维通知与合法提醒,不要用于群发营销、骚扰或任何违法违规推送。
二、准备工作
- 雨云 KVM 云服务器(1 核 1G 起),Debian 12,已装 Docker。
- 一个解析好的域名(配 HTTPS,客户端走加密 WebSocket)。
三、Docker 部署
新建 ~/gotify/docker-compose.yml:
version: "3"
services:
gotify:
image: gotify/server:latest
container_name: gotify
ports:
- "8080:8080"
volumes:
- ./data:/app/data
environment:
- TZ=Asia/Shanghai
- GOTIFY_DEFAULTUSER=admin
- GOTIFY_DEFLAULTPASSWORD=请改强密码
restart: unless-stopped
启动 docker compose up -d,访问 http://服务器IP:8080 用默认账号登录(登录后务必改密码,并在”Users”里新建专用应用令牌)。后台”Apps”页点 Create 生成一个应用,拿到 Token,推送就靠它。
四、在脚本里调用推送
推送就是一次带 Token 的 POST,最简单用 curl:
curl -X POST "https://你的域名/message?token=你的TOKEN"
-F "title=部署完成"
-F "message=订单服务 v1.4 已上线"
-F "priority=5"
Python 里用 requests:
import requests
requests.post("https://你的域名/message",
params={"token": "你的TOKEN"},
data={"title": "定时任务", "message": "备份已跑完", "priority": 5})
priority 1-10 控制紧急程度,客户端可据此决定是否响铃。
五、和监控联动
- Uptime Kuma(12261):通知方式选”Gotify”,填服务器地址和 Token,站点宕机立刻推手机。
- Watchtower(12312):用 shoutrrr 把更新结果发到 Gotify,容器升级成功与否手机看得见。
- 哪吒面板(12239):本身告警也可接 Webhook,转 Gotify 统一收口。
一个 Token 一个应用,建议”监控告警””部署通知””脚本结果”分不同应用,手机上分组清晰。






