Gotify消息推送系统搭建

news2025/2/25 21:34:47

在这里插入图片描述

昨天网友 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 客户端,可以在下面两个地址下载:

  • https://github.com/gotify/android/releases
  • https://f-droid.org/zh_Hans/packages/com.github.gotify

在这里插入图片描述

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

输入服务器地址,点 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32单片机超声波模块测距

OLED液晶接口电路图超声波模块接口电路图STM32单片机超声波模块测距程序源代码#include "sys.h"#define OLED_RST_Clr() PCout(13)0 //RST#define OLED_RST_Set() PCout(13)1 //RST#define OLED_RS_Clr() PBout(4)0 //DC#define OLED_RS_Set() PBout(4)1 //DC#define…

碰撞检测算法分类

包围形法粗糙检测, 包含以下两种类检测外接圆法轴对齐包围矩形&#xff0c; AABB 碰撞检测算法之包围形法分离轴精细检测 BOX vs PolygonOBBseparating Axis Theorem碰撞检测算法之分离轴定理GJKGJK&#xff08;Gilbert–Johnson–Keerthi&#xff09;, 相比 SAT 算法&#xff…

Ae 入门系列之一:软件界面与工作流程

Adobe After Efftects&#xff08;简称为 Ae &#xff09;可以帮助用户高效且精确地创建无数引人注目的动态图形和震撼人心的视觉效果。利用与其他 Adobe 软件紧密集成和高度灵活的二维和三维合成&#xff0c;并且提供数百种预设的效果和动画&#xff0c;可为影视特效、产品广告…

如何使用COCO数据集,注意事项

COCO数据集可用来训练目标检测&#xff0c;分类&#xff0c;实例分割等。 下面简单说下如何使用这个数据集&#xff0c; 数据集下载可用如下的代码进行&#xff0c;以2017为例。 # Download the image data. cd ./images echo "Downloading MSCOCO train images ...&quo…

轨迹误差评估指标[APE/RPE]和EVO

轨迹误差评估指标[APE/RPE]和EVO1. ATE/APE2. RPE3. EVO3.1 评估指标3.2 使用3.2.1 轨迹可视化3.2.2 APE3.2.3 RPEReference: 高翔&#xff0c;张涛 《视觉SLAM十四讲》视觉SLAM基础&#xff1a;算法精度评价指标&#xff08;ATE、RPE&#xff09; 在实际工程中&#xff0c;我…

迁移案例实操:MySQL迁移到DM8由于有248张表存在datetime字段类型,使用dts迁移到达梦报不支持数据类型【附数据对比工具】

本文主要记录MySQL数据迁移到DM8上遇到MySQL源端表存在datetime数据类型时&#xff0c;并且包含datetime数据类型的表达上百张的的情况下&#xff0c;如何完成数据迁移的完整步骤。 1. 解决方法 将MySQL源端表的是datetime数据类型的字段修改为varchar(30)。 2. 处理步骤 &a…

JVM内存结构,Java内存模型,Java对象模型

一.整体方向JVM内存结构是和java虚拟机的运行时区域有关。Java内存模型和java并发编程有关。java对象模型和java对象在虚拟机中的表现形式有关。1.JVM内存结构堆&#xff1a;通过new或者其他指令创建的实例对象&#xff0c;会被垃圾回收。动态分配。虚拟机栈&#xff1a;基本数…

分布式之Paxos共识算法分析

写在前面 分布式共识是分布式系统中的重要内容&#xff0c;本文来一起看下&#xff0c;一种历史悠久&#xff08;1998由兰伯特提出&#xff0c;并助其获得2003年图灵奖&#xff09;的实现分布式共识的算法Paxos。Paxos主要分为两部分&#xff0c;Basic Paxos和Multi-Paxos,其中…

Web自动化测试——selenium的使用

⭐️前言⭐️ 本篇文章就进入了自动化测试的章节了&#xff0c;如果作为一名测试开发人员&#xff0c;非常需要掌握自动化测试的能力&#xff0c;因为它不仅能减少人力的消耗&#xff0c;还能提升测试的效率。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f…

Python文件的操作处理,一看就会

在读取一个文件的内容之前&#xff0c;需要先打开这个文件。在Python程序中可以通过内置函数open()来打开一个文件程序中&#xff0c;并用相关的方法读或写文件文件中的内容以供程序的处理和使用&#xff0c;同时可以将文件看作Python中的一种数据类型。 open(filename, mode‘…

代码随想录 NO43 | Leetcode_139.单词拆分 1.关于多重背包,你该了解这些! 2. 背包问题总结篇!

leetcode139.单词拆分 多重背包 背包问题总结1. 多重背包2.背包问题简单总结2.1 背包递推公式2.2 遍历顺序2.2.1 01背包2.2.2 完全背包139.单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;…

数据分析思维(七)|漏斗思维

漏斗思维 1、概念 漏斗思维的概念比较简单&#xff0c;所谓的漏斗指的就是层层递减的结构&#xff0c;最终组成一个漏斗样式的模型&#xff0c;而递减的状态是多种业务/产品发展的常态&#xff0c;比如一个线下服装门店&#xff0c;进店的人很多&#xff08;第一层&#xff09…

电子科技大学操作系统期末复习笔记(三):存储器管理

目录 前言 存储器管理 概述 存储管理 存储系统的结构 程序的诞生 空间分类 地址映射 程序链接的方式 静态链接 装入时动态链接 运行时动态链接 程序装入的方式 程序装入的两类三种方法 绝对装入 静态重定位 动态重定位√ 关键点 存储器管理&#xff1a;连续…

C++ 浅谈之二叉搜索树

C 浅谈之二叉搜索树 HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是 C 浅谈系列&#xff0c;收录在专栏 C 语言中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列阿呆将记录一些 C 语言重要的语法特性 &#x1f3c3;&a…

中小学智慧校园电子班牌系统源码 Saas云平台模式

智慧电子班牌区别于传统电子班牌&#xff0c;智慧校园电子班牌系统更加注重老师和学生的沟通交流和及时数据交互。学校为每个教室配置一台智能电子班牌&#xff0c;一般安装于教室门口&#xff0c;用来实时显示学校通知、班级通知&#xff0c;可设置集中分布式管理&#xff0c;…

Keepalived与HaProxy的协调合作原理分析

Keepalived与HaProxy的协调合作原理分析keepalived与haproxy合作场景更好的理解方式协调合作中考虑的问题一、Keepalived以TCP/IP模型角度来分析&#xff1a;二、HaProxy总结&#xff1a;协调合作中考虑的问题的答案虚拟ip&#xff1a;虚拟IP技术&#xff0c;就是一个未分配给客…

论文笔记:Vision Transformers for Dense Prediction

中文标题: 密集预测的视觉Transformers 创新点 DPT是一种密集预测架构&#xff0c;它基于编码器-解码器的设计&#xff0c;利用一个Transformer作为编码器的基本模块。具体来说&#xff0c;我们使用最近提出的ViT作为主干架构。我们将ViT提供的tokens表示重新组合成不同分辨率…

【人脸识别】Partial-FC:让你在一台机器上训练1000万个id人脸数据集成为可能!

论文题目&#xff1a;”Killing Two Birds with One Stone: Efficient and Robust Training of Face Recognition CNNs by Partial FC“ -CVPR 2022 代码地址&#xff1a;https://arxiv.org/pdf/2203.15565.pdf 代码地址&#xff1a;https://github.com/deepinsight/insightfac…

Maxwell简介、部署、原理和使用介绍

Maxwell简介、部署、原理和使用介绍 1.Maxwell概述简介 1-1.Maxwell简介 ​ Maxwell是由美国Zendesk公司开源&#xff0c;使用Java编写的MySQL变更数据抓取软件。他会实时监控Mysql数据库的数据变更操作&#xff08;包括insert、update、delete&#xff09;&#xff0c;并将变…

【DockerCE】Docker-CE 23.0.1正式版发布

很意外啊&#xff01;Docker社区版竟然直接从20.xx.xx版本&#xff0c;升级到23.xx.xx版本了。官网地址&#xff08;For RHEL/CentOS 7.9&#xff09;&#xff1a;https://download.docker.com/linux/centos/7/x86_64/stable/Packages/23.0.1版本官方安装包如下&#xff1a;# l…