部署教程
Gotify 部署教程:Docker、HTTPS 与安卓消息推送
部署 Gotify 接收脚本和监控消息,配置应用令牌、安卓客户端与数据备份。
把服务器通知送到安卓手机
Gotify 服务端接收 REST API 消息,再通过 WebSocket 交给浏览器与 Android 客户端。可用来接收网站监控、备份结果和定时任务通知。Android 客户端需要保持后台连接,iPhone 不适用这套安卓客户端步骤。
注册推荐码:KuZhuJi
用 Docker 启动服务端
示例固定 gotify/server:3.1.1,使用 SQLite 和 /app/data 持久化。将默认密码及 push.example.com 改成自己的值,再执行:
mkdir -p /opt/gotify/data
cd /opt/gotify
sudo chown -R 1000:1000 data
cat > docker-compose.yml <<'YAML'
services:
gotify:
image: gotify/server:3.1.1
container_name: gotify
restart: unless-stopped
user: "1000:1000"
ports:
- "127.0.0.1:8085:80"
environment:
TZ: Asia/Shanghai
GOTIFY_SERVER_PORT: 80
GOTIFY_DEFAULTUSER_NAME: admin
GOTIFY_DEFAULTUSER_PASS: change-this-before-first-login
GOTIFY_REGISTRATION: "false"
GOTIFY_SERVER_STREAM_ALLOWEDORIGINS: "https://push.example.com"
GOTIFY_SERVER_SECURECOOKIE: "true"
volumes:
- ./data:/app/data
YAML
docker compose up -d容器用 UID/GID 1000 运行,data 目录需有对应写权限。8085 只监听宿主机回环地址;注册关闭,数据目录保存用户、应用和历史消息。
配置 HTTPS 和 WebSocket
域名解析到 VPS,由宿主机 Caddy 转发到 8085。Caddy 运行在其他容器中时,上游应改为共同网络中的 Gotify 地址。
push.example.com {
encode zstd gzip
reverse_proxy 127.0.0.1:8085
header {
X-Content-Type-Options nosniff
Referrer-Policy no-referrer
}
}校验并重载 Caddy 后打开 HTTPS 域名,登录并修改初始密码。普通 reverse_proxy 支持 WebSocket,后台数据目录在重建时继续使用。
创建应用令牌并发送消息
在 Applications 创建发送方,例如 backup-job,取得 Application Token。脚本发送消息用应用令牌;Android 或其他读取端使用登录会话、Client Token。
curl -sS -X POST "https://push.example.com/message" \
-H "X-Gotify-Key: ${GOTIFY_APP_TOKEN}" \
-F "title=备份完成" \
-F "message=web-01 备份已写入对象存储,快照编号 2026-09-22-0300" \
-F "priority=5"先设置受限环境变量 GOTIFY_APP_TOKEN。示例主机名、快照编号都是消息模板,按实际任务替换。令牌放在 X-Gotify-Key 请求头,不放到公开 URL。
#!/usr/bin/env bash
set -euo pipefail
notify() {
local title="$1" message="$2" priority="${3:-4}"
curl -fsS -X POST "https://push.example.com/message" \
-H "X-Gotify-Key: ${GOTIFY_APP_TOKEN}" \
-F "title=${title}" \
-F "message=${message}" \
-F "priority=${priority}" >/dev/null
}
if /usr/local/bin/nightly-job; then
notify "定时任务完成" "nightly-job 成功,主机 $(hostname)" 2
else
code=$?
notify "定时任务失败" "nightly-job 退出码 ${code},请查看日志" 8
exit "$code"
finightly-job 换成自己的任务程序。成功和失败分别通知,失败保留原退出码;高频重复告警由脚本或监控系统聚合。
连接安卓客户端
安装 Gotify Android,填写 HTTPS 地址并登录,允许通知权限,按机型关闭该应用的电池优化并允许后台运行。先确认连接状态,再发送消息,检查通知渠道、声音与免打扰设置。
锁屏、切换网络、重启手机后分别检查送达。浏览器有消息而手机没有时,先查客户端连接、后台限制和通知权限,再看反向代理的 WebSocket 请求。401/403 则先检查令牌类型与值。
备份数据与升级
停止 Gotify 后归档 data,备份文件另存到服务器之外:
cd /opt/gotify
sudo install -d -m 700 /var/backups/gotify
docker compose stop gotify
sudo tar -czf /var/backups/gotify/gotify-data-$(date +%F-%H%M).tar.gz data
docker compose start gotify恢复时使用原部署配置和相应镜像,把数据恢复到独立目录后启动,检查账号、应用、历史消息和发送接口。升级前保存数据与旧镜像版本,升级后重新发送消息;Gotify 自身的监控使用另一条通知渠道。
