背景

组建了一台自己的NAS之后,难免会部署很多应用,例如自己的影音服务器,网页监控等等,然而应用的各种状态通知通常只能进入相应的服务端才能查看,操作十分繁琐,推送通知此时则显得尤为迫切,理想状态下应该是所有的应用通知都推送到同一个地方进行统一处理,经过一番搜寻,我在互联网上找到了几个比较常见的解决方案.
1.企业微信推送通知
2.tgbot推送通知
3.bark(ios)
4.自建gotify推送服务
5.server酱
鉴于目前手头只有安卓手机以及想要自己掌握数据的想法,一番权衡下来,我选择了能够自己搭建的并且拥有安卓客户端的开源服务Gotify.


Gotify介绍

Gotify是一个用于推送和接受消息的简单的自托管开源程序,其特点为界面简单,使用容易,支持安卓客户端,安装方便,以及开源和可以自己搭建.其支持多种语言进行推送消息,简单之如curl或post都可以进行推送.


服务搭建

官方文档推荐使用Docker进行部署,我个人也推荐使用Docker,十分的方便,便于维护.
执行以下代码
$ docker run -p 80:80 -v /var/gotify/data:/app/data gotify/server
或者通过github
$ docker run -p 80:80 -v /var/gotify/data:/app/data ghcr.io/gotify/server

搭建完毕后进入通过域名或IP进入网页
首先点击USERS-->CREATE USER,输入用户名和密码,创建一个新用户
然后点击APPS-->Create Application,输入服务名称和描述,创建一个新服务端,创建完成后,会给你一个token
至此准备工作已经完成,可以说十分的操作简单


简单应用

qiandao.today

这是一个可以自建的自动签到程序,欲了解详情请移步qiandao.today项目地址
部署过程请自行查阅相关资料
下面来介绍一下如何设置Gotify消息推送
首先在Gotify服务端创建应用,获得token
然后登陆签到页面后点击工具箱-->自定义推送,
这里请求方法选POST,选json
URL填写http://域名:端口号/message?token=你的token
POST Data填写以下内容

{
"message": "{log}", 
"priority": 8, 
"title": "{t}", 
"extras": {          
    "client::display": {              
        "contentType": "text/plain"  
                       }      
          } 
}

这里解释一下,这是Gotify的消息推送模板
第一行message是推送的消息,后面的{log}是签到服务的预留字段
第二行priority是优先级
第三行title是标题,后面的{t}也是签到服务的预留字段
第四行extras是附加信息(可选),这里我选用了其文本显示方式,为text/plain,也就是纯文本,其实实际使用下来好像没什么太大的变化
配置完毕后可以尝试点击test测试一下,不出意外的话,这时候网页端那边应该会收到该服务发来的通知了.

自建媒体服务器**arr系列

这是一套完整的自建媒体服务器方案,欲了解详情请自行谷歌
下面介绍Gotify的设置方法
以Radarr为例在设置中的通知连接中,点击加号添加,选择Gotify,
Gotify Server中填写gotify服务域名或ip,
APItoken中填写在gotify中创建的应用token,(注意:这里的token和上文的是两个token,需要重新创建新的apps)
设置完毕后点击测试,应该会在网页端收到消息.

Android端接收消息

当然,要想随时随地收到通知,仅仅有网页端是不够的,移动端的支持是必不可少的.刚好gotify在安卓平台也有客户端,前往谷歌市场或者github发布页即可下载,输入gotify服务地址,用户名以及密码即可收到推送消息.