
本镜像提供APC UPS电源管理守护进程(apcupsd)及Web界面(apcupsd-cgi),基于Debian 11 (Bullseye),集成nginx-light作为Web服务器、fcgiwrap作为CGI服务器。用于监控和管理APC UPS设备,支持通过USB或网络连接的UPS,提供状态监控、自动关机、事件通知等功能,并可通过Web界面直观查看UPS状态。
Docker Compose (Portainer Stacks) 配置
ymlversion: '3.9' services: apcupsd: image: bnhf/apcupsd:latest container_name: apcupsd hostname: apcupsd_ups # 每个apcupsd实例使用唯一主机名,将用于通知和Web界面 devices: - /dev/usb/hiddev0 # APC UPS的USB设备路径,从节点无需此配置 ports: - 3551:3551 environment: - UPSNAME=${UPSNAME} # UPS名称(1-8字符),用于通知和仪表盘 # 非USB连接或从节点配置(从节点需取消注释) # - UPSCABLE=${UPSCABLE} # 线缆类型,从节点设为ether(默认:usb) # - UPSTYPE=${UPSTYPE} # 连接类型,从节点设为net(默认:usb) # - DEVICE=${DEVICE} # 从节点连接的主节点主机名或IP:端口(如192.168.1.100:3551) # 监控和关机参数(可选) # - POLLTIME=${POLLTIME} # 状态轮询间隔(秒,默认:60) # - ONBATTERYDELAY=${ONBATTERYDELAY} # 断电检测延迟(秒,默认:6) # - BATTERYLEVEL=${BATTERYLEVEL} # 低电量关机阈值(%,默认:5) # - MINUTES=${MINUTES} # 剩余时间关机阈值(分钟,默认:5) # - TIMEOUT=${TIMEOUT} # 断电持续时间关机阈值(秒,默认:0) # - KILLDELAY=${KILLDELAY} # 关机后UPS断电延迟(秒,默认:0) # 自检配置(可选) # - SELFTEST=${SELFTEST} # 自动自检间隔(小时,默认:336) # 主节点从机列表(可选) # - APCUPSD_HOSTS=${APCUPSD_HOSTS} # 主节点管理的从机列表(空格分隔,含本机) # - APCUPSD_NAMES=${APCUPSD_NAMES} # 从机名称列表(与APCUPSD_HOSTS顺序对应) # 时区设置 - TZ=${TZ} # 配置更新(可选) - UPDATE_SCRIPTS=${UPDATE_SCRIPTS} # 是否覆盖更新配置文件(true/false,默认:true) # 邮件通知配置(可选) - SMTP_GMAIL=${SMTP_GMAIL} # Gmail SMTP账号(需启用2FA) - GMAIL_APP_PASSWD=${GMAIL_APP_PASSWD} # Gmail应用密码 - NOTIFICATION_EMAIL=${NOTIFICATION_EMAIL} # 接收通知的邮箱 - POWER_RESTORED_EMAIL=${POWER_RESTORED_EMAIL} # 恢复供电通知(true/false) # 远程唤醒配置(需bnhf/wolweb容器,可选) - WOLWEB_HOSTNAMES=${WOLWEB_HOSTNAMES} # 需唤醒的主机名列表(空格分隔) - WOLWEB_PATH_BASE=${WOLWEB_PATH_BASE} # WoL服务路径(如raspberrypi6:8089/wolweb/wake) - WOLWEB_DELAY=${WOLWEB_DELAY} # 唤醒延迟(秒) # Proxmox节点关机配置(可选) - PVE_SHUTDOWN_HOSTS=${PVE_SHUTDOWN_HOSTS} # Proxmox主机列表(IP或主机名) - PVE_SHUTDOWN_NODES=${PVE_SHUTDOWN_NODES} # Proxmox节点列表 - PVE_SHUTDOWN_TOKENS=${PVE_SHUTDOWN_TOKENS} # Proxmox API令牌列表(格式:<用户>@<节点>!<令牌>=<密钥>) # 健康检查(推荐) healthcheck: test: ["CMD-SHELL", "apcaccess | grep -E 'ONLINE' >> /dev/null"] interval: 30s timeout: 5s retries: 3 start_period: 15s volumes: - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket # 用于主机关机 - /data/apcupsd:/etc/apcupsd # 配置文件持久化(目录或Docker卷) restart: unless-stopped
环境变量说明
所有环境变量均为可选,建议至少配置UPSNAME和TZ:
| 变量名 | 说明 | 默认值 |
|---|---|---|
| UPSNAME | UPS名称(1-8字符) | - |
| UPSCABLE | 线缆类型(主节点默认usb,从节点设为ether) | usb |
| UPSTYPE | 连接类型(主节点默认usb,从节点设为net) | usb |
| DEVICE | 从节点连接的主节点地址(如192.168.1.100:3551) | - |
| POLLTIME | 状态轮询间隔(秒) | 60 |
| ONBATTERYDELAY | 断电检测延迟(秒) | 6 |
| BATTERYLEVEL | 低电量关机阈值(%) | 5 |
| MINUTES | 剩余时间关机阈值(分钟) | 5 |
| TIMEOUT | 断电持续时间关机阈值(秒) | 0 |
| KILLDELAY | 关机后UPS断电延迟(秒) | 0 |
| SELFTEST | 自动自检间隔(小时) | 336 |
| APCUPSD_HOSTS | 主节点管理的从机列表(空格分隔) | - |
| APCUPSD_NAMES | 从机名称列表(与APCUPSD_HOSTS对应) | - |
| TZ | 时区 | UTC |
| UPDATE_SCRIPTS | 是否更新配置文件(true/false) | true |
| SMTP_GMAIL | Gmail SMTP账号 | - |
| GMAIL_APP_PASSWD | Gmail应用密码 | - |
| NOTIFICATION_EMAIL | 通知接收*** | - |
| POWER_RESTORED_EMAIL | 恢复供电通知(true/false) | false |
| WOLWEB_HOSTNAMES | 需唤醒的主机名列表 | - |
| WOLWEB_PATH_BASE | WoL服务路径 | - |
| WOLWEB_DELAY | 唤醒延迟(秒) | - |
| PVE_SHUTDOWN_HOSTS | Proxmox主机列表 | - |
| PVE_SHUTDOWN_NODES | Proxmox节点列表 | - |
| PVE_SHUTDOWN_TOKENS | Proxmox API令牌列表 | - |
apcupsd-cgi提供Web界面,用于查看UPS状态,基于nginx和fcgiwrap。
Docker Compose (Portainer Stacks) 配置
ymlversion: '3.9' services: apcupsd-cgi: image: bnhf/apcupsd-cgi:latest container_name: apcupsd-cgi dns_search: localdomain # 局域网域名(通常为local或localdomain) ports: - 3552:80 # Web界面端口(可自定义映射) environment: - UPSHOSTS=${UPSHOSTS} # UPS主机列表(空格分隔的IP或主机名) - UPSNAMES=${UPSNAMES} # UPS显示名称列表(与UPSHOSTS顺序对应,空格分隔) - TZ=${TZ} # 时区(默认UTC) - DASHBOARD_PROVISION=${DASHBOARD_PROVISION} # 是否预配置Grafana仪表盘(true/false) volumes: - /data/apcupsd-cgi:/etc/apcupsd # 配置文件持久化 - /data/telegraf:/etc/telegraf # 仅Grafana集成时需要 - /data/grafana/provisioning:/etc/grafana/provisioning # 仅Grafana集成时需要 restart: unless-stopped
环境变量说明(必填)
| 变量名 | 说明 |
|---|---|
| UPSHOSTS | UPS主机列表(空格分隔的IP或主机名,如"192.168.1.100 192.168.1.101") |
| UPSNAMES | UPS显示名称列表(与UPSHOSTS顺序对应,空格分隔,如"ServerRoom Office") |
| TZ | 时区(如Asia/Shanghai) |
| DASHBOARD_PROVISION | 是否预配置Grafana仪表盘(true/false) |
Web界面访问
部署后通过 http://<主机IP>:3552 访问Web界面,可查看所有UPS的状态概览及详细信息。
通过InfluxDB、Telegraf、Grafana(TIG栈)实现UPS数据可视化。
Docker Compose (Portainer Stacks) 配置
ymlversion: '3.9' services: influxdb2: image: influxdb:latest container_name: influxdb2 ports: - 8086:8086 volumes: - /data/influxdb2/data:/var/lib/influxdb2 - /data/influxdb2/config:/etc/influxdb2 environment: - DOCKER_INFLUXDB_INIT_MODE=${MODE} # 初始化模式(通常为setup) - DOCKER_INFLUXDB_INIT_USERNAME=${USERNAME} # 管理员用户名(Grafana也使用此用户) - DOCKER_INFLUXDB_INIT_PASSWORD=${PASSWORD} # 密码 - DOCKER_INFLUXDB_INIT_ORG=${ORG} # 组织名称 - DOCKER_INFLUXDB_INIT_BUCKET=${BUCKET} # 数据桶名称(通常为telegraf) - DOCKER_INFLUXDB_INIT_RETENTION=${RETENTION} # 数据保留时间(通常为1w) - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${ADMIN_TOKEN} # 管理员令牌 restart: unless-stopped telegraf: image: telegraf:latest container_name: telegraf pid: 'host' ports: - 8092:8092 - 8094:8094 - 8125:8125 environment: - HOST_PROC=/host/proc - HOST_SYS=/host/sys - HOST_ETC=/host/etc - DOCKER_INFLUXDB_INIT_ORG=${ORG} - DOCKER_INFLUXDB_INIT_BUCKET=${BUCKET} - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${ADMIN_TOKEN} - UPS1=${UPS1} # UPS1地址:端口(如192.168.1.100:3551) - UPS2=${UPS2} # 可选,更多UPS - UPS3=${UPS3} # 可选 # ... 最多支持UPS8 volumes: - /data/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro - /var/run/docker.sock:/var/run/docker.sock:ro - /sys:/host/sys:ro - /proc:/host/proc:ro - /etc:/host/etc:ro restart: unless-stopped grafana8: image: grafana/grafana:latest container_name: grafana8 ports: - 3000:3000 user: '0:0' environment: - GF_SECURITY_ADMIN_USER=${USERNAME} # Grafana管理员用户名 - GF_SECURITY_ADMIN_PASSWORD=${PASSWORD} # Grafana管理员密码 - GF_SECURITY_ALLOW_EMBEDDING=true # 允许嵌入(如Organizr) - DOCKER_INFLUXDB_INIT_ORG=${ORG} - DOCKER_INFLUXDB_INIT_BUCKET=${BUCKET} - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${ADMIN_TOKEN} volumes: - /data/grafana:/var/lib/grafana - /data/grafana/provisioning:/etc/grafana/provisioning restart: unless-stopped
环境变量说明(必填)
consoleMODE=setup USERNAME=admin # InfluxDB和Grafana管理员用户名 PASSWORD=your_secure_password # 密码 ORG=your_org # 组织名称 BUCKET=telegraf # 数据桶名称 RETENTION=1w # 数据保留时间 ADMIN_TOKEN=your_generated_token # 管理员令牌(可使用随机密钥生成器) UPS1=192.168.1.100:3551 # 第一台UPS的地址:端口 UPS2=192.168.1.101:3551 # 可选,第二台UPS # ... 最多支持UPS8
部署后通过 http://<主机IP>:3000 访问Grafana,可查看预配置的UPS监控仪表盘。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务