Loading...

文章背景图

Gotify:开源自托管实时消息推送服务部署与使用指南

2026-10-27
0
- 字
- 分钟
|

Gotify:开源自托管实时消息推送服务部署与使用指南

Gotify 是一个用 Go 编写的极简服务端,专门用来「发送与接收消息」:服务端提供 REST API 推消息,客户端通过 WebSocket 实时收消息,并自带一套 Web 管理界面与 Android App。它完全自托管、不依赖任何第三方推送渠道,非常适合把服务器告警、CI/CD 通知、脚本结果等主动推到自己的手机上,而不用受制于各类公共推送服务。

一、项目官方信息

项目 信息
GitHub 仓库 https://github.com/gotify/server
官方网站 / 文档 https://gotify.net/docs
开源协议 MIT
主要语言 Go(约 69.7%)
Star 数 16k+
默认端口 80(HTTP)
数据目录 /app/data(容器内,含 SQLite 数据库与证书)

注意:仓库名是 gotify/server,但产品名、文档与域名都统一叫 Gotify,本文标题与链接均使用 Gotify。

二、官方图片

Gotify 官方 Logo:

Gotify 官方 Logo

Gotify 自带的 Web-UI 截图(消息列表与应用管理):

Gotify Web-UI 界面

三、环境要求

  • 操作系统:Linux / macOS / Windows 均可;生产推荐 Linux。
  • 运行方式二选一:
  • Docker:拉取 gotify/server 或 ghcr.io/gotify/server 镜像(多架构,支持 amd64、i386、arm64、armv7、riscv64,树莓派也能跑);
  • 原生二进制:从 Releases 下载对应平台 zip(linux-amd64 / linux-arm-7 / linux-arm64 / linux-riscv64 / windows 等)。
  • 端口:默认监听 80(HTTP),如需改端口可通过环境变量 GOTIFY_SERVER_PORT 调整。
  • 持久化目录:必须挂载 /app/data,里面是 SQLite 数据库、应用图片以及开启 Let's Encrypt 后生成的证书,务必备份该目录。
  • 权限:二进制方式默认监听 80 端口需要 root(sudo);Docker 方式用端口映射规避。

四、完整部署步骤

方式 A:Docker 部署(官方推荐)

官方安装文档给出的最小启动命令:

docker run -p 80:80 -v /var/gotify/data:/app/data gotify/server

逐段说明:

  • -p 80:80:把容器 80 端口映射到宿主机 80;
  • -v /var/gotify/data:/app/data:把宿主机 /var/gotify/data 挂载到容器数据目录,数据库与证书落盘;
  • 也可改用 GitHub 容器镜像:ghcr.io/gotify/server。

带时区与默认管理员密码的完整后台运行命令:

docker run -d \
  --name gotify \
  -p 8080:80 \
  -e TZ="Asia/Shanghai" \
  -e GOTIFY_DEFAULTUSER_PASS="请改成你的管理员密码" \
  -v /var/gotify/data:/app/data \
  gotify/server

Gotify 3.x 通过环境变量配置。GOTIFY_DEFAULTUSER_PASS 用来设置首次启动时默认管理员账号 admin 的密码;GOTIFY_SERVER_PORT 可改 HTTP 监听端口(默认 80)。

方式 B:docker-compose 部署

官方文档提供的 docker-compose.yaml 示例:

---
services:
  gotify:
    image: gotify/server
    ports:
      - 8080:80
    environment:
      GOTIFY_DEFAULTUSER_PASS: 'admin'
    volumes:
      - './gotify_data:/app/data'
    # 以专属用户运行时先建目录并授权:
    # sudo chown -R 1234:1234 ./gotify_data
    # user: "1234:1234"

启动:

docker compose up -d

方式 C:原生二进制部署

到 Releases 页下载对应平台的 zip(把 {VERSION} 换成最新版本号、{PLATFORM} 换成你的平台,如 linux-amd64):

wget https://github.com/gotify/server/releases/download/v{VERSION}/gotify-{PLATFORM}.zip

解压、加执行权限并运行:

unzip gotify-{PLATFORM}.zip
chmod +x gotify-{PLATFORM}
sudo ./gotify-{PLATFORM}

默认监听 80 端口,因此需要 sudo;想改端口可在启动前配置环境变量 GOTIFY_SERVER_PORT。

配置项(Gotify 3.x 环境变量)

  • GOTIFY_SERVER_PORT:HTTP 监听端口,默认 80;
  • GOTIFY_SERVER_LISTENADDR:绑定地址,留空监听所有网卡,可设 unix:/tmp/gotify.sock 走 Unix 套接字;
  • GOTIFY_SERVER_SSL_ENABLED:是否开启 HTTPS(默认 false),开启需配置证书或 LETSENCRYPT_ENABLED=true;
  • GOTIFY_SERVER_SSL_REDIRECTTOHTTPS:开启 SSL 后是否把 HTTP 重定向到 HTTPS,默认 true;
  • GOTIFY_LOGLEVEL:日志级别,取值 trace/debug/info/warn/error/fatal/panic,默认 info;
  • GOTIFY_DEFAULTUSER_PASS:默认管理员 admin 的初始密码。

配置可写在工作目录的 gotify-server.env,或 /etc/gotify/server.env 中加载。

验证服务

部署完成后浏览器访问 http://服务器IP:8080(或你映射的端口),使用 admin 与上面设置的密码登录,进入后即可看到 Web-UI。

五、使用方法

Gotify 采用「应用(Application)」与「客户端(Client)」两类令牌的模型:

  1. 创建应用:登录后在 Web-UI 里新建一个 Application(例如命名为 server-alert),系统会为它生成一个应用令牌(Application Token)。
  2. 推送消息:用应用令牌调用 REST API 推消息:
curl -X POST "http://服务器IP:8080/message?token=应用令牌" \
  -F "title=服务器告警" \
  -F "message=磁盘使用率已超过 90%" \
  -F "priority=5"
  1. 实时接收:在 Web-UI 或 Android App 里创建一个 Client(客户端令牌),客户端通过 WebSocket 长连接实时收到上面的消息;消息的 priority 字段决定在手机上的通知优先级。
  2. CLI:官方提供 gotify/cli 命令行工具,可在脚本里直接发消息;Android App 在 Google Play 与 F-Droid 均可下载。

六、常见问题 FAQ

Q1:默认登录账号密码是什么? 首次启动时会创建默认用户 admin,密码由环境变量 GOTIFY_DEFAULTUSER_PASS 指定(不设置则按文档默认值)。登录后请尽快在设置里修改。

Q2:为什么映射 80 端口后外部访问不到? 默认二进制监听 80 需要 root;Docker 里要确认 -p 映射正确(如 -p 8080:80 则用宿主机 8080 访问),并放行防火墙对应端口。

Q3:容器重建后数据/消息都没了? 说明没有挂载 /app/data。该目录保存 SQLite 数据库、应用图片与证书,务必通过 -v 持久化并纳入备份。

Q4:如何启用 HTTPS / 自己的域名? 设置 GOTIFY_SERVER_SSL_ENABLED=true 并提供证书,或开启内置 Let's Encrypt;Gotify 官方文档也提供了 Nginx、Caddy、Traefik 等反向代理的配置示例。

Q5:消息是实时推送的吗?需要轮询吗? 客户端通过 WebSocket 长连接实时接收,不需要轮询;服务端用 REST API 写入消息后立即推给在线客户端。

Q6:支持多用户 / 多应用吗? 支持在 Web-UI 里管理多个用户、多个应用与多个客户端令牌,每个应用独立令牌,可按来源区分通知。

七、跳转链接

  • GitHub 仓库:https://github.com/gotify/server
  • 官方文档:https://gotify.net/docs
  • 安装指南:https://gotify.net/docs/install
  • 配置说明:https://gotify.net/docs/config
  • 二进制 Releases:https://github.com/gotify/server/releases
评论交流

文章目录