Yuanji's Blog

这个博客已通过认证

Gotify 介绍和使用指南

📅 | 🏷️ ,
文章目录

最近购入了新设备一台迷你主机后,在上面安装了 Proxmox Virtual Environment(简称 Proxmox VE 或者 PVE)之后,在上面运行了几个 LXC 的容器和虚拟机。在配置 PVE 的时候发现它的通知系统不仅支持传统的 SMTP 通过邮件提醒,还默认支持一个叫做 Gotify 的通知,于是就花点时间研究了一下,在此做个记录和分享。

Gotify 是什么

Gotify 简单来说是一个可以自己搭建的用于发送和接受通知的服务,大体上分为了服务端和客户端两部分。

由于我目前使用 Android,Gotify 足够简单再加上是因为 PVE 内置了 Gotify 的通知开始使用的,所以对于我来说就推送通知这个功能而言已经足够了。

如果平时使用 iOS 的读者,不妨看看类似的替代品 ntfy.sh

配置及运行 Gotify

由于是 Go 语言写的,最简单的运行方式就是下载可执行文件直接运行即可,而我的话为了方便管理以及使用统一的反向代理,使用了 Docker Compose 部署。

services:
  gotify:
    image: gotify/server:2.5.0
    container_name: "gotify"
    restart: always
    # 如果你也使用 traefik 作为反向代理,可能需要下面这样的标签以及配置相应的网络
    #labels:
    # - "traefik.enable=true"
    # - "traefik.http.routers.gotify.rule=Host(`push.example.de`)" # 替换自己的域名
    # - "traefik.http.routers.gotify.entrypoints=websecure"
    environment:
      # 如果你也使用 PostgreSQL 可以酌情修改,默认的话会使用 SQLite
      #- GOTIFY_DATABASE_DIALECT=postgres
      #- GOTIFY_DATABASE_CONNECTION=host=xxx.xxx.xxx.xxx port=5432 user=gotify dbname=gotify password=****************** sslmode=disable
    volumes:
      - "./gotify_data:/app/data"

具体的配置选项可以参考:Configuration · Gotify

部署成功之后,可以通过默认的账号密码(都是 admin)访问 Web UI,修改密码后即可开始使用。

另外在访问地址后加上 /docs 则可以访问基于 Swagger UI 的 API 文档。

Gotify 的使用

首先它的长相大概是下面这个样子,我分别给网页端和 Android 端截了图,主体大概就是展示消息列表,侧边栏可以按照 Apps 分类查看。

Gotify Web UI 的样子
Gotify Web UI 的样子
Gotify Android 客户端的样子
Gotify Android 客户端的样子

使用上也非常简单,总的来说,在 Gotify 的 Web UI 除了像 Android 端一样可以收到消息通知外,还附带了一些简单的管理功能,除去用户密码的管理,剩下需要管理的大体分为两类。

客户端(Clients)

客户端的话最好理解,比如说我们登录上 Web UI,这个 Web 算一个客户端,如果在 Android 上登录的话,那也是一个客户端。总之就是用来接收通知的设备就对了,一般不需要单独做什么操作,除非你想删除某个设备。

Gotify Web UI 上管理客户端的样子
Gotify Web UI 上管理客户端的样子

应用(Apps)

应用的话,则像是一个分类的功能,拿聊天软件类比的话,有点儿像频道。创建一个应用的话就会生成一个单独的 Token,可以拿那个 Token 作为凭证来发送消息。

推送消息的话,就是一个简单的 POST 方法的 HTTP 请求,详细可以参考官方文档 Push messages · Gotify 或是位于 /docs 的 API 文档。

curl "https://push.example.de/message?token=<apptoken>" -F "title=my title" -F "message=my message" -F "priority=5"
http -f POST "https://push.example.de/message?token=<apptoken>" title="my title" message="my message" priority="5"

其中的 priority 代表了优先级,数字越大代表了优先级越高,主要和在客户端接收到消息后展示的顺序有关。

消息发送成功后就会自动推送到各个客户端了。另外为了让消息的分类更为一目了然,它自带了一个上传应用封面的功能,就像我下面截图展示的那样,那些应用的封面的图片是我自己上传的。

Gotify Web UI 上管理应用的样子
Gotify Web UI 上管理应用的样子

我目前使用 Gotify 的用途

通过我上面的截图,想必读者也多少可以看出我使用 Gotify 的用途,大体上有下面几种:

总结

如果你也是 Android 用户,想要一个简单的接收通知的功能,Gotify 将是不错的选择。像是 PVE、Healthchecks 和 Diun 等对它有内建的支持,基本只需要在相应的系统中设置相应 App 的 Token 即可。

而比起 Telegram 等基于聊天软件的推送通知,可以自己部署使用上会比较自由,消息也不会和普通聊天的通知混在一起。

当然了,是否需要为了消息提醒单独部署一个服务就因人而异了,不过因为它足够简单,对于我来说只是几分钟的举手之劳而已。