Gotify 消息推送服务搭建教程
Gotify 是一款使用 Go 语言编写的开源消息推送服务器。它提供简单的 REST API,可以从任何脚本或应用程序发送推送通知到 Android 手机和 Web 浏览器。Gotify 非常适合作为自建服务的统一通知中心,接收来自各种监控工具、自动化脚本的消息通知。
一、Gotify 功能特点
- 简单 API:通过一个 HTTP POST 请求即可发送消息,集成成本极低。
- Web 界面:浏览器中查看所有消息历史,支持实时推送。
- Android 客户端:提供原生 Android 应用,支持后台实时接收推送。
- 消息分组:通过应用(Application)对消息进行分组管理。
- 优先级:支持设置消息优先级,不同优先级触发不同的通知行为。
- Markdown 支持:消息内容支持 Markdown 格式。
- 插件系统:支持通过插件扩展功能。
- WebSocket:使用 WebSocket 实现实时消息推送。
二、环境准备
- 搬瓦工 VPS 一台,256MB 内存即可(使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
- 已安装 Docker(参考 Docker 安装教程)。
三、Docker 部署
mkdir -p /opt/gotify
cat > /opt/gotify/docker-compose.yml <<'EOF'
version: '3.8'
services:
gotify:
image: gotify/server:latest
restart: always
ports:
- "8080:80"
environment:
- GOTIFY_DEFAULTUSER_NAME=admin
- GOTIFY_DEFAULTUSER_PASS=your_admin_password
volumes:
- /opt/gotify/data:/app/data
EOF
cd /opt/gotify
docker compose up -d
访问 http://VPS_IP:8080,使用设置的管理员账号登录。
四、创建应用和发送消息
4.1 创建应用
- 登录 Gotify Web 界面。
- 进入「Apps」页面,点击「Create Application」。
- 输入应用名称,如「服务器告警」「备份通知」等。
- 创建后会获得一个 Token,用于发送消息。
4.2 通过 API 发送消息
# 发送简单文本消息
curl -X POST "https://push.yourdomain.com/message?token=your_app_token" \
-F "title=服务器告警" \
-F "message=磁盘使用率已超过 90%" \
-F "priority=8"
# 发送 Markdown 消息
curl -X POST "https://push.yourdomain.com/message?token=your_app_token" \
-H "Content-Type: application/json" \
-d '{"title":"备份完成","message":"## 备份报告\n\n- 数据库: 成功\n- 文件: 成功\n- 大小: 2.3GB","priority":5,"extras":{"client::display":{"contentType":"text/markdown"}}}'
4.3 在脚本中集成
#!/bin/bash
# 备份脚本示例
GOTIFY_URL="https://push.yourdomain.com/message?token=your_token"
pg_dump -U postgres mydb > /backup/db.sql 2>&1
if [ $? -eq 0 ]; then
curl -s -X POST "$GOTIFY_URL" -F "title=备份成功" -F "message=数据库备份完成" -F "priority=3"
else
curl -s -X POST "$GOTIFY_URL" -F "title=备份失败" -F "message=数据库备份出错,请检查" -F "priority=9"
fi
五、配置反向代理
cat > /etc/nginx/sites-available/gotify <<'EOF'
server {
listen 80;
server_name push.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
EOF
ln -sf /etc/nginx/sites-available/gotify /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d push.yourdomain.com
WebSocket 代理设置是必须的,它用于实时推送消息到客户端。
六、安装 Android 客户端
从 F-Droid 或 GitHub Releases 下载 Gotify Android 客户端。安装后:
- 输入 Gotify 服务器地址。
- 使用创建的客户端 Token(在 Web 界面的 Clients 页面创建)。
- 连接后即可实时接收推送通知。
七、与其他服务集成
Gotify 可以作为以下服务的通知后端:
- Uptime Kuma:监控服务状态变化时推送通知。
- Changedetection:网页变化时通过 Gotify 推送。参考 Changedetection 教程。
- Healthchecks:定时任务异常时告警。参考 Healthchecks 教程。
- 自定义脚本:任何可以发送 HTTP 请求的脚本或程序。
八、数据备份
tar czf /opt/gotify/backup_$(date +%Y%m%d).tar.gz /opt/gotify/data
九、Gotify vs Ntfy 对比
- Gotify:需要账号认证,消息持久化存储,有 Web 管理界面,Android 客户端。
- Ntfy:基于主题的发布/订阅模式,无需账号即可使用,支持 iOS/Android,更适合公开或临时通知。参考 Ntfy 搭建教程。
总结
Gotify 是自建消息推送服务的优秀选择,API 简单易用,资源消耗极低。它可以作为搬瓦工 VPS 上所有自托管服务的统一通知中心。选购搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。