
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像提供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监控仪表盘。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






来自真实用户的反馈,见证轩辕镜像的优质服务