PeaNUT:NUT开源UPS监控仪表盘部署与使用指南

家庭实验室的UPS监控痛点
对于运行家庭实验室(Home Lab)的技术爱好者来说,不间断电源(UPS)几乎是标配。它不仅能在停电时保护数据安全,还能为设备提供稳定的供电环境。但随之而来的一个问题是:如何高效地监控UPS的运行状态?
所谓家庭实验室,是技术爱好者在家中搭建的私人IT基础设施,通常包括服务器、NAS存储、网络设备、虚拟化平台等。它既是学习企业级技术的沙盒环境,也承担着媒体服务器、智能家居控制、个人云存储等实际的家庭服务功能。随着二手企业级硬件价格下降和Docker、Proxmox等技术的普及,家庭实验室的门槛大幅降低,已从极客小众爱好发展为Reddit上拥有数十万成员的活跃社区。在这样一个"麻雀虽小,五脏俱全"的环境里,UPS的监控管理就成了一个不大不小却不可忽视的运维课题。
一位Reddit用户分享了他的经历。他的家庭实验室通过UPS供电,UPS经USB连接到群晖(Synology)NAS。群晖的DSM操作系统内置了对NUT协议的支持——当UPS通过USB连接到群晖时,DSM会自动识别并启动内置的NUT服务,用户可在"控制面板→硬件和电源→不断电系统"中进行配置。群晖支持作为NUT服务器直接管理USB连接的UPS,也可以作为NUT客户端从网络上的其他NUT服务器获取UPS状态。当检测到市电中断且电量降至设定阈值时,群晖能够自动执行安全关机流程,保护硬盘数据完整性。
为了延缓电池过早老化并验证系统正常工作,这位用户每月都会将电池放电到20%进行测试。这并非多此一举——UPS中广泛使用的铅酸蓄电池(尤其是阀控式密封铅酸电池VRLA)存在所谓的"浮充陷阱":长期处于满电浮充状态会导致极板硫酸盐化,电池实际可用容量逐渐缩水,但表面上仍显示满电。定期进行受控放电测试(通常放电至20%-30%后重新充满)不仅能延缓这一老化过程、维持电池活性,更重要的是能验证电池的实际续航能力,避免在真正停电时才发现电池已无法支撑预期时间。行业通常建议每1-3个月进行一次此类校准性放电。
在过去,查看电池状态的方式相当原始——要么打开群晖控制面板查看充电水平,要么开启SSH会话,敲入命令:
upsc ups@localhost battery.charge
这种方式虽然可行,但既不直观也不便捷。直到他发现了 PeaNUT。

PeaNUT 是什么
PeaNUT 是一个开源的 UPS 监控工具,本质上是 NUT(Network UPS Tools) 的现代化 Web 前端。
NUT 是 Linux 生态中久经考验的 UPS 管理框架,其技术架构采用经典的客户端-服务器模式,由三个核心组件构成:驱动层(driver)负责与具体UPS硬件通信,支持USB、串口、SNMP等多种协议和数百种UPS型号;服务端(upsd)作为数据中间层,将驱动层采集的数据通过网络协议对外发布;客户端工具(如upsc、upsmon)则负责查询数据和执行关机保护策略。这种分层设计使得一台运行NUT服务端的机器可以将UPS状态共享给网络中的所有其他设备,实现"一主多从"的集中式电源管理。NUT虽然功能强大且稳定可靠,但其原生界面对普通用户并不友好,大多数交互都停留在命令行层面。
PeaNUT 的价值正在于此——它在 NUT 的基础上提供了一个美观、直观的仪表盘界面,把原本需要敲命令才能获取的电池电量、负载、输入输出电压、剩余续航时间等关键指标,以可视化的方式呈现出来。
PeaNUT 核心特性
- 可视化仪表盘:实时展示 UPS 的电池电量、负载、电压等核心指标,一目了然。
- 主页小部件(Homepage Widget):可集成到 Homepage 等家庭实验室导航面板中,让 UPS 状态成为日常概览的一部分。Homepage 是家庭实验室中流行的开源仪表盘应用,它将用户自托管的各种服务(如Jellyfin、Pi-hole、Portainer等)整合到一个统一的导航页面中。其核心设计理念是通过Widget(小部件)机制实时展示各服务的关键状态数据,而非仅仅提供链接书签。PeaNUT主动适配了Homepage的Widget API,使得UPS电量、负载等信息可以直接嵌入到用户每天打开浏览器就能看到的首页中,实现被动式监控——不需要专门去查看,信息自然出现在视野中。
- 多设备支持:得益于NUT本身的网络化架构,PeaNUT能够同时监控多个 UPS 设备,适合规模稍大的家庭实验室。
- 轻量部署:通常以 Docker 容器方式运行,部署门槛低,资源占用小。
PeaNUT 相比传统UPS监控方式的优势
从用户的实际反馈来看,PeaNUT 最大的价值在于 降低了UPS监控的使用门槛,从而改变了运维习惯。
当查看 UPS 状态需要 SSH 登录、敲命令时,用户往往会偷懒,不去定期检查。而当状态被清晰地展示在一个随时可见的仪表盘上时,监控就从一件需要专门去做的事,变成了顺手一瞥就能完成的日常。
对于像"每月放电测试电池"这类需要持续观察的维护任务,实时可视化界面尤为重要。用户可以直接在页面上观察电量随时间的变化,而不必反复手动查询。
相比 Uptime Kuma、Grafana 这类通用监控方案,PeaNUT 专注于 UPS 监控这一垂直场景,把单一功能做到简洁好用。Uptime Kuma 主要用于服务可用性监控(通过HTTP、TCP、Ping等方式检测服务是否在线),Grafana 则是一个强大但需要配合数据源(如Prometheus、InfluxDB)使用的通用数据可视化平台——两者虽然理论上都可以接入NUT数据来监控UPS,但配置复杂度远高于PeaNUT这种开箱即用的专用工具。这种"小而美"的定位,恰好契合了家庭实验室玩家的实际需求——他们需要的不是复杂的企业级方案,而是能快速上手、解决具体问题的轻量工具。
PeaNUT 部署与使用建议
如果你也在用 NUT 管理 UPS,或者正准备为家庭实验室搭建电源监控方案,PeaNUT 值得一试。以下是具体的实践建议:
确认前置条件
确保你的 UPS 已通过 NUT 正常接入系统,能够用 upsc 命令读取到数据。PeaNUT 是 NUT 的 Web 前端,依赖底层 NUT 服务正常运行。如果你还没有配置NUT,需要先完成UPS驱动安装、ups.conf(定义UPS设备)、upsd.conf(配置监听地址和端口)以及upsd.users(设置访问权限)等核心配置文件的编写。
使用 Docker 容器化部署
推荐使用 Docker 部署 PeaNUT,便于环境隔离和后续升级维护。Docker是一种操作系统级虚拟化技术,通过将应用及其所有依赖打包进标准化的"容器"中运行,实现了环境隔离和可移植性。对于家庭实验室场景,Docker部署意味着用户无需手动安装各种运行时依赖(如Node.js、数据库等),只需一条 docker run 命令或一份 docker-compose.yml 配置文件即可启动服务。升级时拉取新镜像、重建容器即可,回滚也只需切换回旧版镜像。这种方式极大降低了应用管理的复杂度,已成为家庭实验室部署自托管服务的事实标准。
集成到导航面板
如果你已经在使用 Homepage 或类似的家庭实验室导航面板,可以利用 PeaNUT 提供的 Widget 功能,把 UPS 状态整合进统一视图,实现一站式监控。这样UPS的电池电量、负载状况等关键数据就会出现在你每天打开浏览器看到的第一个页面上,真正实现"零操作成本"的被动式监控。
配合告警通知
可以进一步结合通知工具,在电池电量过低或市电中断时触发提醒,形成从监控到告警的完整闭环。NUT本身支持通过upsmon的NOTIFYCMD机制执行自定义脚本,可以与Gotify、ntfy、Telegram Bot等家庭实验室中常用的自托管通知服务对接,实现多渠道的即时告警推送。
总结
PeaNUT 是家庭实验室文化的一个缩影——在这个由爱好者驱动的领域里,总有精心打磨的开源工具在默默解决着具体的痛点。它或许不会登上科技头条,但对于那些认真维护 UPS 设备的用户来说,一个直观的可视化仪表盘足以带来显著的体验提升。
如果你还在用 SSH 敲命令查看 UPS 状态,不妨试试 PeaNUT。
相关推荐

Gemini 3.7 Flash现身谷歌云控制台,发布进入倒计时
开发者在Google Cloud Console中发现Gemini 3.7 Flash模型踪迹,社区热议其与Pro系列的关系及模型蒸馏策略。本文解读版本号跳跃背后的产品逻辑,分析新Flash模型对开发者的实际影响。

AI-Memory:为编程AI打造跨工具长期记忆系统
AI-Memory是一个用Rust构建的开源项目,为Claude Code、Cursor、Aider等Agent编程CLI提供长期记忆能力,解决AI编程工具的失忆问题,支持不同厂商间无缝交接,让开发者掌控自己的上下文资产。

Bullet登场:YC新秀主打更快的编程Agent
YC S26初创公司Bullet推出主打速度的编程Agent,瞄准开发者延迟痛点。本文分析Bullet的差异化定位、编程Agent提速技术路径,以及在Cursor、Claude Code等竞品环绕下的市场机会。