Gotify消息推送系统搭建

文章介绍了如何在群晖系统上使用Docker安装Gotify,一个实时消息推送服务器。作者建议避免使用latest标签,而应选择具体版本以确保稳定。安装过程包括创建数据卷、配置端口和环境变量,以及通过命令行或docker-compose进行安装。文章还提到了Gotify的Android客户端和REST-API文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

昨天网友 sincoslong 提到了一个很好的建议:


docker 注册表版本别选择 latest 选择具体版本号。

有的新版本,数据库、 php 各种依赖,都升级。小白如果选择最近更新的版本,估计写个 blog 都是记录如何失败的。

虽然有的人也会看看你发布日期,看看当时什么版本。但是有的没有历史版本了。基本就不能照葫芦画瓢操作了。


老苏虚心接受,其实老苏之前也想过这个问题,写 latest 主要是图个方便省事。

从本文开始改正,对于建议前已完成的稿件,老苏会添加版本说明;对于建议之后开始撰写的稿件,直接选择具体的版本号,感谢 sincoslong !

什么是 Gotify ?

Gotify 是一个简单的消息推送服务器,用于通过 WebSocket 实时发送和接收消息。(包括一个时尚的网络用户界面)

老苏之前写过推送系统 ntfy.sh,这两个都是使用 golang 开发的推送系统,老苏没有深入研究,直观感觉就是 Gotify 不需要像 ntfy.sh 去订阅 ,而且似乎也不支持 iOS 客户端

文章传送门:无需注册的通知服务ntfy

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 gotify ,选择第一个 gotify/server,版本选择 latest

本文写作时, latest 版本对应为 2.2.2

在这里插入图片描述

docker 文件夹中,创建一个新文件夹 gotify,并在其中建一个子文件夹 data

文件夹装载路径说明
docker/gotify/data/app/data存放数据库等

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
838580

在这里插入图片描述

环境

可变
GOTIFY_DEFAULTUSER_NAME后台管理员账号
GOTIFY_DEFAULTUSER_PASS后台管理员密码

在这里插入图片描述

更多的环境变量请看官方文档:https://gotify.net/docs/config#environment-variables

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 gotify 和 子目录
mkdir -p /volume2/docker/gotify/data

# 进入目录
cd /volume2/docker/gotify

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name gotify \
   -p 8385:80 \
   -v $(pwd)/data:/app/data \
   -e GOTIFY_DEFAULTUSER_NAME:laosu \
   -e GOTIFY_DEFAULTUSER_PASS:7uZFj9Ctf4 \
   gotify/server:2.2.2

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: "3"

services:
  gotify:
    image: gotify/server:2.2.2
    container_name: gotify
    restart: unless-stopped
    ports:
      - 8385:80
    environment:
      - GOTIFY_DEFAULTUSER_NAME=laosu
      - GOTIFY_DEFAULTUSER_PASS=7uZFj9Ctf4
    volumes:
      - "./data:/app/data"

然后执行下面的命令

# 新建文件夹 gotify 和 子目录
mkdir -p /volume2/docker/gotify/data

# 进入目录
cd /volume2/docker/gotify

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8385 就能看到登录界面

用前面设置的 GOTIFY_DEFAULTUSER_NAMEGOTIFY_DEFAULTUSER_PASS 登录,成功后的主界面

如果你没设置,可以用默认的 admin/admin

在这里插入图片描述

推送消息

从右上方的 apps --> Create Application,创建一个应用

创建成功之后,点眼睛按钮,可以看到 Token 的值,这个后面会用到

尝试发送一条消息,在 SSH 客户中直接执行下面的命令

# 格式
curl "https://yourdomain.com/message?token=<apptoken>" -F "title=my title" -F "message=my message" -F "priority=5"

# 示例
curl "http://192.168.0.197:8385/message?token=AdVPoP7WecontPA" -F "title=my title" -F "message=从web发送的消息" -F "priority=5"

回到网页

官方文档详细介绍及各个语言调用例子:https://gotify.net/docs/pushmsg

反向代理

如果要远程使用,需要做反代处理,还是以 npm 为例

老苏还是习惯全部勾选

除了上面的,还需要在 Advanced 中添加下面的代码,否则网页端会不能登录

  location / {
    # We set up the reverse proxy
    proxy_pass         http://192.168.0.197:8385;
    proxy_http_version 1.1;

    # Ensuring it can use websockets
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection "upgrade";
    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 http;
    proxy_redirect     http:// $scheme://;

    # The proxy must preserve the host because gotify verifies the host with the origin
    # for WebSocket connections
    proxy_set_header   Host $http_host;

    # These sets the timeout so that the websocket can stay alive
    proxy_connect_timeout   1m;
    proxy_send_timeout      1m;
    proxy_read_timeout      1m;
  }

现在你可以尝试用域名发消息了

# 域名示例 
curl "https://mess.laosu.ml:444/message?token=AdVPoP7WecontPA" -F "title=my title" -F "message=从web域名发送的消息" -F "priority=5"

如果出现下面👇这样的问题

在这里插入图片描述

添加 -k 参数,用于忽略证书验证就可以了

# 域名示例(忽略证书验证)
curl -k "https://mess.laosu.ml:444/message?token=AdVPoP7WecontPA" -F "title=my title" -F "message=从web通过域名发送的消息" -F "priority=5"

在这里插入图片描述

想深入了解 SSL 证书验证,可以看:https://curl.se/docs/sslcerts.html

启用 https 协议后访问 Web 后台 ,可以设置网页消息提醒

移动端

似乎只有 Android 客户端,可以在下面两个地址下载:

在这里插入图片描述

包非常小,跟现在动则几百兆的应用形成了鲜明的对比

输入服务器地址,点 CHECK URL,如果连接成功会显示服务端的版本,并需要登录

在这里插入图片描述

如果有问题,可以尝试在设置中勾选 Disble SSL Validation

设置完客户端名称后,就可以看到之前发送的消息了

在这里插入图片描述

Android 端还可以发送消息

参数是一样的

在这里插入图片描述

发送成功

回到网页

接口文档

Gotify 提供了完善的 REST-API 文档:https://gotify.github.io/api-docs

spec.json 导入 apifox,可以测试收消息

在这里插入图片描述

也可以发

回到网页

参考文档

gotify/server: A simple server for sending and receiving messages in real-time per WebSocket. (Includes a sleek web-ui)
地址:https://github.com/gotify/server

Gotify · a simple server for sending and receiving messages
地址:https://gotify.net/

Installation · Gotify
地址:https://gotify.net/docs/install

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值