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 创建应用

  1. 登录 Gotify Web 界面。
  2. 进入「Apps」页面,点击「Create Application」。
  3. 输入应用名称,如「服务器告警」「备份通知」等。
  4. 创建后会获得一个 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 客户端。安装后:

  1. 输入 Gotify 服务器地址。
  2. 使用创建的客户端 Token(在 Web 界面的 Clients 页面创建)。
  3. 连接后即可实时接收推送通知。

七、与其他服务集成

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% 折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。