卡片召唤师
精华
|
战斗力 鹅
|
回帖 0
注册时间 2015-10-2
|
本帖最后由 高卢鸡 于 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在
- usr/share/openmediavault/notification/sink.d/
复制代码 目录下是第三方的通知推送脚本存放位置,邮件通知时,会执行这个里面的脚本。可参见omv docs:
Openmediavault Notifications
既然已经有脚本了,我直接用就可以了,下面就是自建Gotify的服务器了,有docker版。
omv和pve都可以顺利的通知到手机,安装app即可。
所以我觉得目前选择Gotify搭建我的通知系统。
搜到一篇张大妈的教程
社区 写篇文章 当前位置: 社区首页 电脑数码 存储设备 网络存储 NAS存储 文章详情 自建消息推送工具 Gotify 实现消息私有化通知
张大妈里还有一篇通过webhook的,但是没提到微信有这个通道,所以我暂不选择。
通过 Webhook 将消息推送至钉钉、飞书、企业微信
前面只是我选择的过程,还未正式开始。
——————————第二天的更新——————————
加了一天班,现在来补一下昨晚的成果。
打算先在openwrt里搭建,想着如果可以,是否可以直接通过端口映射给外网的手机使用,不局限于局域网。
参照昨天提到的张大妈教程,还是很简单的。
我直接用官方文档里的资料,保证时效性:
gotify installation
- 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?
- #!/bin/sh
- nachricht=$(cat $OMV_NOTIFICATION_MESSAGE_FILE)
- curl "http://localhost:4080/message?token=A7qMnMQSph8UxK6" -F "message=$nachricht" -F "title=$OMV_NOTIFICATION_SUBJECT"
复制代码 建立脚本98gotify,放在omv的"/usr/share/openmediavault/notification/sink.d/"目录下,
添加可执行权限,就可以在omv发送邮件通知同时执行本脚本,给gotify发送一个通知。
然后就是喜闻乐见的失败了,omv测试通知邮件,但是gotify并没有收到通知。
在ssh下首先发现omv默认没有安装curl包,安装后继续测试依然没有收到通知。
然后我在ssh下运行脚本,命令行卡住,只好ctrl+c关闭。
按照openmediavault docs说法,脚本中$OMV_NOTIFICATION_MESSAGE_FILE、$OMV_NOTIFICATION_SUBJECT这两个是传递的参数
手动运行curl命令
- curl "http://192.168.0.xx:xxxx/message?token=AAVnGy30QIjMC2V" -F "message=test" -F "title=test"
复制代码 发现gotify可以正常收到通知,符合gotify文档里写的push messages中方法。命令行出现如下信息,连接正确
- {"id":15,"appid":2,"message":"test","title":"test","priority":-1,"date":"2024-08-10T16:01:33.294934101Z"}
复制代码 问题就是出在是否omv在发送邮件时会真的执行脚本,或者脚本出问题。
下面将脚本改为上面手动执行的句子
- #!/bin/sh
- 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的方法,自签名了没有私钥的证书。
- openssl req -new -x509 -noenc -day 365 -out server.crt -keyout server.key
复制代码
Gotify安装配置教程
参照本帖回复里的docker里映射了config.yml文件
- docker run -p xxxx:80 -p yyyy:443 \
- -v /root/gotify:/app/data \
- -v /root/gotify_config:/etc/gotify \
- -e TZ=Asia/Shanghai \
- 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的。
------------------------0901更新------------------------------
休息(加班)了一段时间,这期间重新建立虚拟机尝试,有时候行有时候不行,没太搞明白。
然后想着在正式使用的openmediavault里试试吧,重新复制粘贴脚本,然后就成了。不知道啥问题?难道是没注意到的多余空格?
打算尝试一下serverchan怎么接入pve和omv,感觉也是一条类似的curl语句,后面写上认证码。
|
|