找回密码
 立即注册
搜索
查看: 5895|回复: 25

[软件] 生命在于折腾,All in Boom(自组NAS)的通知系统搭建

[复制链接]
     
发表于 2024-8-9 22:18 | 显示全部楼层 |阅读模式
本帖最后由 高卢鸡 于 2024-9-1 22:06 编辑

这几年成品nas的品牌及型号越来越丰富,配置也在激烈地竞争中有了大幅度提高(主要是新势力的一些牌子),然而还是有很多玩家因为种种原因选择自组nas。
这些原因不外乎:
1、成品nas配置还可以的型号,价格有点高。
2、有一些淘汰下来的配件想废物利用。
3、成品nas面对大船、垃圾存在先天的配置劣势,与可玩性差距。
毕竟人家走的应该是卖服务的路子,如果只卖牌子与硬件,是没有前途的。
其他的原因欢迎大家补充。

自组aib的教程这些年越来越多,视频up主也有很多的案例与教程,我也写过自己的折腾经历。
现在想来这么多数据都在这套设备里存着,即使有各种完备的备份计划,比如321,但是作为一般玩家,不可能全身心、全时段的关注在设备上,在设备跟前。
既然个人承担了数据的保存,那就要有相对应的措施保证数据的完好。毕竟数据如果损坏、丢失,没有死过的🐎可绕地球好几圈的xxx或者其他人可以让你骂了解气。
数据是保存在设备上的,设备如果不能正常运转,数据就会有损坏、丢失的风险。所以要保证数据的正常,就需要对设备进行有效的管理与监控,至少系统出错了你需要及时知晓与采取相应措施。

前面写了那么多,各位看官,我自己把它吃了。进入正题。
现在我采用的是在pve上跑openwrt、openmediavault、windows等,可以通过web、ssh、remotedesktop等手段进行管理,不在家是也可通过虚拟组网手机、笔记本进行管理。
但是一直没有搭建通知管理系统,也就无法在出现问题的时候第一时间得知。
自己抓代码编译的op上有luci-app-serverchan,可采用easychan大佬的server酱,我原来使用过,可获得在线设备、ip地址变动、op运行状态告警等信息。但是后来随着server酱的调整与微信推送的调整,就渐渐放弃了。(有时候升级op版本没有保留设置,目前是没有推送通知的状态)
我的aib里主要起数据保存作用的是omv,已经设置的计划任务检测磁盘,zfs也定期(大概1个月)手动scrub。
omv里有邮件通知,pve里我也看到了邮件通知。
目前server酱免费会员每天有5条。easychan大佬有免费的推送项目pushdeer,可以走server酱的通道,也可以自组服务器,但是研究发现安卓应用只有一版,小米手机有问题,github上也有人再问安卓版停了后是否会开发鸿蒙版。所以我觉得安卓版的pushdeer目前可能有问题。
如果使用server酱,赞助会员我没有意见,但是怎么把它接入omv和pve呢?
微信里的其他推送比如pushplus、wxpusher,其中pushplus需要实名和收费,wxpusher的收费方法我承认我没看懂,这两个我怎么接入omv和pve呢?同样的问题,我只是个非超能力者,弄懂这俩个我还不如用server酱呢。
我甚至曾想,要不然就邮件通知吧,把邮箱设为国内可访问的,但是还要单独再下国内邮箱的app,或者就是微信打开qq邮箱的通知。

后来我在pve里的通知界面看到了Gotify,查询到这个是国外的自组服务器信息推送项目,有安卓app上架了play商城,但是没有ios客户端。(原来用苹果手机时,微信调整推送策略,折腾过server酱的bark通道,没弄好)
Proxmox VE docs-Notifications
然后通过狗搜索,找到了omv forum的一个帖子
Gotify for Notifications?
里面给出了omv如何接入Gotify的方法

搜索发现omv在
  1. usr/share/openmediavault/notification/sink.d/
复制代码
目录下是第三方的通知推送脚本存放位置,邮件通知时,会执行这个里面的脚本。可参见omv docs:
Openmediavault Notifications
既然已经有脚本了,我直接用就可以了,下面就是自建Gotify的服务器了,有docker版。
omv和pve都可以顺利的通知到手机,安装app即可。
所以我觉得目前选择Gotify搭建我的通知系统。
搜到一篇张大妈的教程
社区 写篇文章 当前位置: 社区首页 电脑数码 存储设备 网络存储 NAS存储 文章详情 自建消息推送工具 Gotify 实现消息私有化通知
张大妈里还有一篇通过webhook的,但是没提到微信有这个通道,所以我暂不选择。
通过 Webhook 将消息推送至钉钉、飞书、企业微信

前面只是我选择的过程,还未正式开始。

——————————第二天的更新——————————
加了一天班,现在来补一下昨晚的成果。
打算先在openwrt里搭建,想着如果可以,是否可以直接通过端口映射给外网的手机使用,不局限于局域网。
参照昨天提到的张大妈教程,还是很简单的。
我直接用官方文档里的资料,保证时效性:
gotify installation
  1. docker run -p 80:80 -v /var/gotify/data:/app/data gotify/server
复制代码
op里安装了docker对应的功能,添加容器时可以直接解析CLI。
-p 容器外使用的端口:容器内正常的端口,正常来访问gotify页面是80端口,但是因为80已经被op的页面占了,所以改成8100。
-v 容器外的存储路径:容器内路径,在op内我一般直接用"/root/"路径存储,不单独建立存储卷了。
网络就是bridge模式,取好容器名字就可以保存了。
然后通过"http://ip:8100"就可以访问管理页面了,默认用户名与密码均为 admin。

进去后记得修改默认密码,admin页面就可以修改了。或者直接在user页面删除初始用户、添加新用户均可。
apps页面可以添加应用,priority优先级按照张大妈教程帖子说法在web页面按不同颜色区分,安卓端是静音消息与默认消息。我设置了一下没搞明白。

我添加了pve和omv,gotify图标后面的云朵标志是上传应用的图标,支持png、jpg、gif格式,可惜不支持网页favicon常用的ico格式。目前我用的2.5.0的docker镜像搭建的server,Token的复制功能有问题,提示错误,只好关掉隐藏手动复制了。
Clients页面还可以看到目前存在的客户端,包含安卓app和浏览器两种。


下一步复制了应用pve对应的Token之后,在pve管理界面通知页面下添加,可以看到gotify的选项。

重要的是服务器URL与API令牌。令牌就是刚才复制的Token,服务器URL是刚才登录用到的地址,包含http/https,例如我这里是“http://ip:8100"。
添加之后测试一下,应该就没有问题了,可以在web页面看到



对于类似pve这样有gotify适配的,按张大妈教程设置了Token和URL即可。
omv,没有gotify适配,按张大妈教程说法
需要通过 POST 请求来发送通知,请求格式参考 Swagger UI 中 /message 的 POST 请求,请求 URL 为 http://ip:8080/message?token=

并附了一张图


按照这个帖子Gotify for Notifications?
  1. #!/bin/sh
  2. nachricht=$(cat $OMV_NOTIFICATION_MESSAGE_FILE)
  3. curl "http://localhost:4080/message?token=A7qMnMQSph8UxK6" -F "message=$nachricht" -F "title=$OMV_NOTIFICATION_SUBJECT"
复制代码
建立脚本98gotify,放在omv的"/usr/share/openmediavault/notification/sink.d/"目录下,
  1. chmod +x 98gotify
复制代码
添加可执行权限,就可以在omv发送邮件通知同时执行本脚本,给gotify发送一个通知。
然后就是喜闻乐见的失败了,omv测试通知邮件,但是gotify并没有收到通知。
在ssh下首先发现omv默认没有安装curl包,安装后继续测试依然没有收到通知。
然后我在ssh下运行脚本,命令行卡住,只好ctrl+c关闭。
按照openmediavault docs说法,脚本中$OMV_NOTIFICATION_MESSAGE_FILE、$OMV_NOTIFICATION_SUBJECT这两个是传递的参数
手动运行curl命令
  1. curl "http://192.168.0.xx:xxxx/message?token=AAVnGy30QIjMC2V" -F "message=test" -F "title=test"
复制代码
发现gotify可以正常收到通知,符合gotify文档里写的push messages中方法。命令行出现如下信息,连接正确
  1. {"id":15,"appid":2,"message":"test","title":"test","priority":-1,"date":"2024-08-10T16:01:33.294934101Z"}
复制代码
问题就是出在是否omv在发送邮件时会真的执行脚本,或者脚本出问题。

下面将脚本改为上面手动执行的句子
  1. #!/bin/sh
  2. curl "http://192.168.0.xx:xxxx/message?token=AAVnGy30QIjMC2V" -F "message=message" -F "title=title"
复制代码
手动脚本没问题。但是测试发送邮件却未收到信息,测试邮件已经在邮箱中收到。
journalctl查看日志:
8月 11 00:41:46 debian-nas1 postfix/pickup[2161174]: 75300434B9: uid=0 from=<root>
8月 11 00:41:46 debian-nas1 postfix/cleanup[2166060]: 75300434B9: message-id=<20240810164146.75300434B9@debian-nas1.localdomain>
8月 11 00:41:46 debian-nas1 postfix/qmgr[2161175]: 75300434B9: from=<xxxx@hotmail.com>, size=424, nrcpt=2 (queue active)
8月 11 00:41:46 debian-nas1 postfix/pipe[2166064]: 75300434B9: to=<openmediavault-notification@localhost.localdomain>, relay=omvnotificationfilter, delay=0.13, delays=0.05/0.02/0/0.06, dsn=5.3.0, status=bounced (Command died with status 1: "/usr/share/openmediavault/notification/postfix-runner.sh". Command output: /usr/share/openmediavault/notification/sink.d/98gotify: run-parts: failed to exec /usr/share/openmediavault/notification/sink.d/98gotify: No such file or directory run-parts: /usr/share/openmediavault/notification/sink.d/98gotify exited with return code 1 )
8月 11 00:41:52 debian-nas1 postfix/smtp[2166065]: connect to smtp-mail.outlook.com[2603:1036:307:2900::6]:587: No route to host
8月 11 00:41:57 debian-nas1 postfix/smtp[2166065]: 75300434B9: replace: header Subject: Test message from debian-nas1: Subject: [debian-nas1] Test message from debian-nas1
8月 11 00:41:57 debian-nas1 postfix/smtp[2166065]: 75300434B9: to=<xxxx@gmail.com>, relay=smtp-mail.outlook.com[52.96.55.198]:587, delay=11, delays=0.05/0.16/10/0.72, dsn=2.0.0, status=sent (250 2.0.0 OK <TY3PR01MB1003009FD3D14D07BA9376651B9BB2@TY3PR01MB10030.jpnprd01.prod.outlook.com> [Hostname=TY3PR01MB10030.jpnprd01.prod.outlook.com])
8月 11 00:41:57 debian-nas1 postfix/qmgr[2161175]: 75300434B9: removed
8月 11 00:41:57 debian-nas1 postfix/cleanup[2166060]: C083B434BA: message-id=<20240810164157.C083B434BA@debian-nas1.localdomain>

————————早起更新————————————
在op里添加了端口转发,内部ip直接指定了docker内的地址,端口80,外部就是wan。

然后在安卓端app logout,填入ddns的地址和端口。通过移动数据访问成功。

--------------------SSL内容-------------------------------
Linux WebUI setting up HTTPS with self signed SSL certificates
参照qb的webui设置https的方法,自签名了没有私钥的证书。
  1. openssl req -new -x509 -noenc -day 365 -out server.crt -keyout server.key
复制代码

Gotify安装配置教程
参照本帖回复里的docker里映射了config.yml文件
  1. docker run -p xxxx:80 -p yyyy:443 \
  2.         -v /root/gotify:/app/data \
  3.         -v /root/gotify_config:/etc/gotify \
  4.     -e TZ=Asia/Shanghai \
  5.     gotify/server:latest
复制代码
这是我的docker命令,因为是挂在op下,不会搞反代,先用端口映射直接映射到docker的172开头桥接网络里,xxxx不映射,只给内网需要通知的系统留着,yyyy映射走https通道,保证了安全。
尝试设定文件里设置80重定向到443,但是发现pve出错,只好又把80端口打开了。以下是错误提示:
Could not test target: could not notify via endpoint(s): xxx: https://192.168.0.xx:xxxx/message: Connection Failed: tls connection init failed: presented server name type wasn't supported (500)

----------------------openmediavault--------------------------
to=<openmediavault-notification@localhost.localdomain>, relay=omvnotificationfilter, delay=0.13, delays=0.05/0.02/0/0.06, dsn=5.3.0, status=bounced (Command died with status 1: "/usr/share/openmediavault/notification/postfix-runner.sh". Command output: /usr/share/openmediavault/notification/sink.d/98gotify: run-parts: failed to exec /usr/share/openmediavault/notification/sink.d/98gotify: No such file or directory run-parts: /usr/share/openmediavault/notification/sink.d/98gotify exited with return code 1 )

通过分析上面的系统日志,看到了这条,没有文件或目录?这个还需要什么文件?
有人能帮着分析一下么。

-----------------------0818更新------------------------------
在omv论坛发了关于无法收到 third-party notification的求助贴,等回复了。
然后更新一下。
不管是有没有问题,omv有对应的 third-patry notification,pve本身支持gotify,下面只有op没有接入这个系统了。
幸运的找到了MasterOfStar fork的luci-app-pushbot,增加了gotify自建支持,然后在几个fork里,选择了jianxiaoman的最近更新的,现在ipk安装即可。
操作很简便的,跟serverchan类似,毕竟是zzsj0928修改自serverchan的。
无标题.jpg

------------------------0901更新------------------------------
休息(加班)了一段时间,这期间重新建立虚拟机尝试,有时候行有时候不行,没太搞明白。
然后想着在正式使用的openmediavault里试试吧,重新复制粘贴脚本,然后就成了。不知道啥问题?难道是没注意到的多余空格?
打算尝试一下serverchan怎么接入pve和omv,感觉也是一条类似的curl语句,后面写上认证码。


回复

使用道具 举报

     
发表于 2024-8-9 22:41 | 显示全部楼层
还未正式开始
回复

使用道具 举报

     
发表于 2024-8-10 04:39 | 显示全部楼层
有这个需求的话其实我看过群晖似乎有告警邮件的。。。
回复

使用道具 举报

     
 楼主| 发表于 2024-8-11 00:30 | 显示全部楼层
tuorew 发表于 2024-8-10 04:39
有这个需求的话其实我看过群晖似乎有告警邮件的。。。

成品nas应该都会做通知系统,不管是早期的邮件,还是现在的移动端app,趋势应该是移动端自有app或者接入微信、钉钉等。
但是自组aio,不跑黑裙、黑威等,就需要研究,好在我用的pve、omv都有对应的设计,但是需要接入已有的如server酱、wxpush、gotify等。邮件通知我开头也说了,我没有安装国内邮箱app,想用现有的app,如果可以接入一个通知系统就很方便了。
回复

使用道具 举报

     
发表于 2024-8-11 00:44 | 显示全部楼层
高卢鸡 发表于 2024-8-11 00:30
成品nas应该都会做通知系统,不管是早期的邮件,还是现在的移动端app,趋势应该是移动端自有app或者接入 ...

折腾下自组aio挺好的,我快被绿联气晕了
回复

使用道具 举报

     
发表于 2024-8-11 03:56 来自手机 | 显示全部楼层
太复杂了。我通知都是给我qq邮箱发个邮件的,这样微信就会实时通知我了。几行shell脚本就行了。
回复

使用道具 举报

     
发表于 2024-8-11 08:36 | 显示全部楼层
推荐一下我在用的健康探针服务 https://healthchecks.io/
对于家用ALO来说 即使构建了自建的探针服务 也可以配置一个兜底的全局探针
毕竟自建的通知可没法在家里断电断网的时候发出通知来
对于通知 我觉得可靠性上来说还是通用的邮件最好 要么能集成qq、微信、飞书、钉钉这些常用app 其他的专用app可靠性都要差一档
回复

使用道具 举报

     
 楼主| 发表于 2024-8-11 09:38 | 显示全部楼层
本帖最后由 高卢鸡 于 2024-8-11 09:58 编辑
紧那罗 发表于 2024-8-11 08:36
推荐一下我在用的健康探针服务 https://healthchecks.io/
对于家用ALO来说 即使构建了自建的探针服务 也可 ...

是的,所以我原来一直用server酱。
飞书我没装。钉钉只打卡用,没开通知。微信因为消息太多,我也把通知关了。qq用的play版,有点问题。
因为种种原因我不想把这些常用app的通知打开。
我更倾向于用类似gotify这样在play上架,稳定更新的专用app。
大佬说的家里断网断电的事情,断网我不怕。断电确实是个问题,好在有ups设置了自动关机,家里有人,断了电会通知我。这个健康探针服务我去看看。

@goranger 抱歉因为个人原因,帖子写了一半就发了。想着先开头,要不然又没有比较详尽的过程记录了。
@lvcha3 主楼我想过这个问题,后来不是为了折腾么。可以把脚本发出来供大家学习么,本人不是超能力者,不会从头开始写脚本。
回复

使用道具 举报

     
发表于 2024-8-11 10:20 | 显示全部楼层
本帖最后由 Lazia 于 2024-8-11 10:24 编辑
紧那罗 发表于 2024-8-11 08:36
推荐一下我在用的健康探针服务 https://healthchecks.io/
对于家用ALO来说 即使构建了自建的探针服务 也可 ...

邮件的问题是及时性,国产手机系统很难保证,基本只有qq邮箱关联微信通知这条路。
gotify设置下自启常驻用下来还算可靠,云服务器上搭一个用处也挺多的,在家搭就冒些风险毕竟http。
serverchan上个月5周年活动能150买5年,日常价180,有类似需要的就很值。
回复

使用道具 举报

     
 楼主| 发表于 2024-8-11 10:32 | 显示全部楼层
Lazia 发表于 2024-8-11 10:20
邮件的问题是及时性,国产手机系统很难保证,基本只有qq邮箱关联微信通知这条路。
gotify设置下自启常驻用 ...

http确实是,我已经改了高强度密码。下面要研究怎么设置https。
serverchan我也不排斥,但是如果没有教程,我是完全不会的,可恨不是超能力者。我也有打算搭建玩gotify之后,尝试一下serverchan,也会写到本帖子里的。
回复

使用道具 举报

头像被屏蔽
发表于 2024-8-11 10:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2024-8-11 11:36 | 显示全部楼层
Lazia 发表于 2024-8-11 10:20
邮件的问题是及时性,国产手机系统很难保证,基本只有qq邮箱关联微信通知这条路。
gotify设置下自启常驻用 ...

国产手机也不至于邮件都收不了吧。。用国内邮箱也不存在墙的问题
当然也是因为qq邮箱的关系 所以我觉得这个算是推送保障性最高的通路了 哪个手机如果微信消息都能漏那是不用在国内玩了
回复

使用道具 举报

     
发表于 2024-8-11 11:47 | 显示全部楼层
高卢鸡 发表于 2024-8-11 09:38
是的,所以我原来一直用server酱。
飞书我没装。钉钉只打卡用,没开通知。微信因为消息太多,我也把通知关 ...

断电断网只是举个极端的例子
核心问题是你在all in boom上让它在"它出问题了"的时候通知你 这件事情有很大的不确定性

话说我没用过这个gotify 如果和手机就是http通信的话 这直接转发端口到内网地址 注意安全呀
回复

使用道具 举报

     
发表于 2024-8-11 17:03 来自手机 | 显示全部楼层
本帖最后由 123485k 于 2024-8-11 17:06 编辑
高卢鸡 发表于 2024-8-11 10:32
http确实是,我已经改了高强度密码。下面要研究怎么设置https。
serverchan我也不排斥,但是如果没有教程 ...

https证书申请可以使用acme.sh,如果你有域名解析控制的api权限的话,可以帮你自动申请https证书,剩下的就是用nginx反带一下接口就行了
我自己的nas就是只暴露一个https端口,多个内网http服务通过nginx反向代理,然后通过域名区分不同的服务
回复

使用道具 举报

     
发表于 2024-8-11 17:20 来自手机 | 显示全部楼层
tuorew 发表于 2024-8-11 00:44
折腾下自组aio挺好的,我快被绿联气晕了

绿联能把系统格掉装arch吗?
回复

使用道具 举报

     
发表于 2024-8-11 17:25 | 显示全部楼层
191634 发表于 2024-8-11 17:20
绿联能把系统格掉装arch吗?

绿联把bios的看门狗关了就能刷系统了,啥都能刷,所以理论上是能双系统的
回复

使用道具 举报

     
发表于 2024-8-11 19:46 | 显示全部楼层
gotify不知道为啥在我的pixel上耗电飞快
最近换成了ntfy,按照文档里的说法,自己编译app还可以使用fcm
回复

使用道具 举报

     
 楼主| 发表于 2024-8-11 22:46 来自手机 | 显示全部楼层
紧那罗 发表于 2024-8-11 11:47
断电断网只是举个极端的例子
核心问题是你在all in boom上让它在"它出问题了"的时候通知你 这件事情有很 ...

转发到docker内网地址,是否会好一点

—— 来自 鹅球 v3.1.88.3
回复

使用道具 举报

     
 楼主| 发表于 2024-8-11 22:47 来自手机 | 显示全部楼层
123485k 发表于 2024-8-11 17:03
https证书申请可以使用acme.sh,如果你有域名解析控制的api权限的话,可以帮你自动申请https证书,剩下的 ...

怎么反代呢?没用过。我去网上搜搜看吧

—— 来自 鹅球 v3.1.88.3
回复

使用道具 举报

     
发表于 2024-8-12 10:13 | 显示全部楼层
高卢鸡 发表于 2024-8-11 22:47
怎么反代呢?没用过。我去网上搜搜看吧

—— 来自 鹅球 v3.1.88.3

我建议你一步到位做成类似ingress的方式, 所有docker 容器启动自动挂上反向代理和SSL配置

详见这个项目
回复

使用道具 举报

头像被屏蔽
发表于 2024-8-12 15:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2024-8-15 23:21 | 显示全部楼层
主楼最后更新了ssl的内容,下次可以试试自带的let's签名证书。
求大佬帮分析omv无法推送的原因。
回复

使用道具 举报

     
发表于 2024-8-16 01:29 来自手机 | 显示全部楼层
自建matrix聊天服务可以接入包括rss邮件webhook在内的各种通知服务,发送端支持webhook就能通过matrix的通知推送机制即使通知

—— 来自 Xiaomi Redmi K20 Pro, Android 14上的 S1Next-鹅版 v2.5.2-play
回复

使用道具 举报

     
发表于 2024-8-16 08:29 来自手机 | 显示全部楼层
报错是没找到98gotify这个文件,检查下文件权限或者文件目录有没有写错吧

—— 来自 鹅球 v3.0.86-alpha
回复

使用道具 举报

     
 楼主| 发表于 2024-8-16 22:48 | 显示全部楼层
紧那罗 发表于 2024-8-16 08:29
报错是没找到98gotify这个文件,检查下文件权限或者文件目录有没有写错吧

—— 来自 鹅球 v3.0.86-alpha ...

睡觉时,我也想到了。
刚才看了一下,755的权限,和自带的99syslog一样。
我给改成了777,同样的错误。
回复

使用道具 举报

     
 楼主| 发表于 2024-8-18 16:13 | 显示全部楼层
本帖最后由 高卢鸡 于 2024-8-18 16:21 编辑

在omv论坛发了关于无法收到 third-party notification的求助贴,等回复了。
然后更新一下。
不管是有没有问题,omv有对应的 third-patry notification,pve本身支持gotify,下面只有op没有接入这个系统了。
幸运的找到了MasterOfStar fork的luci-app-pushbot,增加了gotify自建支持,然后在几个fork里,选择了jianxiaoman的最近更新的,现在ipk安装即可。
操作很简便的,跟serverchan类似,毕竟是zzsj0928修改自serverchan的。
无标题.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-8 22:55 , Processed in 0.112484 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表