前言
最近一次的飞牛版本更新支持了UPS功能,最初我的UPS无法识别,经过一番排查,最终找到问题,特记录在本贴,并附带不影响飞牛官方UPS功能联动其他系统的教程。
问题原因
简单说明一下故障发生的背景,详细的背景和过程可以移步公众号:小白的路Pro
在飞牛更新UPS之前我曾自己手动使用nut进行UPS管理,在最近的一次更新前,我手动remove了nut软件包,并且将 /etc/nut 下的配置文件转移到了其他目录

后面飞牛系统升级的时候自动下载了nut软件包,这一点可以通过日志查看

问题就出在我手动mv了nut的配置文件,经过后续测试,删除或者移动nut的配置文件后,再次安装nut不会生成新的配置文件,你会看到一个空的或者根本不存在/etc/nut目录。这一点我使用了debian12的虚拟机进行测试和验证,具体就不贴出来了。
解决方案
没有默认配置文件,只需要将默认配置文件找回,放入到正确的目录并赋予正确的权限,随后重启飞牛系统即可。
我首先想到的便是通过命令重新生成,但是尝试下来无果,/usr/share/nut下面也没有默认的配置文件供cp使用。这里我提供两个方案:
-
到nut GitHub进行下载,需要的配置文件如下图,去掉.sample即可

-
使用另外一台linux服务器安装nut,使用scp等工具将配置文件拷贝到飞牛的/etc/nut下面
找回配置文件后注意修改一下权限
chown root:nut /etc/nut
然后重启飞牛系统,如果你的UPS受支持(不仅仅是官方所列设备,nut的适配性还是很强的),不出意外,就可以识别到UPS了,如果没在兼容列表,部分信息可能无法读取

联动方案
接下来在简单说一下联动方案,nut本身是一个C/S架构的软件,所以只需要简单修改(不影响官方功能使用),即可让飞牛作为Server,其他系统(如Unraid、群晖等等)作为Client连接即可。
简单看一下飞牛的nut配置目录,所有的配置文件官方都进行了备份

想要作为Server,需要修改三个文件:upsd.users、upsd.conf
首先是upsd.users,建议添加一个slave的用户,不要使用飞牛默认的monuser

随后修改upsd.conf监听方式,改成全监听或者具体ip进行监听,官方默认使用127.0.0.1:3493进行监听,这里我修改成了全v4地址监听。

注意:不要轻易修改官方配置,修改前请备份!!!
不可修改ups.conf配置文件,这个配置文件有实时监控。上述两个配置文件修改暂不会影响官方功能,我已重启测试,若后续官方有更新,务必充分还原后进行更新。
修改有风险,使用需谨慎!!!
随便到Unraid上下载nut软件包,在web界面进行配置即可


最后
我使用的是雷迪司H1000M UPS,希望官方可以进行适配,以下是相关信息
[1751221]
driver = "nutdrv_qx"
port = "auto"
vendorid = "0665"
vendor = ""
productid = "5161"
product = ""
serial = ""
bus = "001"
desc = "123"
override.x.additional.lowbatt = "15"
override.x.additional.devicetype = "USB"