Deploy Network UPS Tools to monitor the server-room UPS units and feed data to
Home Assistant for power-usage tracking.
APC Smart-UPS C 1500 is fully operational: battery charge, runtime, load,
voltage, and status all reporting via usbhid-ups + APC HID 0.100 subdriver.
upsd listens on Tailscale (100.121.189.98:3493) for HA polling; local upsmon
provides graceful hypervisor shutdown on battery-low.
Key deployment fix: the udev rule must cover SUBSYSTEM=="usb" (raw
/dev/bus/usb) in addition to hidraw, because usbhid-ups opens the raw USB
device file after dropping to the nut user via setuid(). Matching only hidraw
causes EACCES on driver start.
Tripp Lite UPS (09ae:3016) is blocked — driver matches TrippLite HID 0.85
subdriver but fails reading the 878-byte HID Report Descriptor (EAGAIN via USB
hub). Needs physical reseat to direct motherboard USB port. Driver masked to
prevent restart-loop spam.
Files: ups/discover.sh, ups/setup.sh (idempotent), ups/status.sh, ups/README.md
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
55 lines
2.2 KiB
Markdown
55 lines
2.2 KiB
Markdown
# PFVCluster
|
|
|
|
Unified infrastructure repo for the Known Element Enterprises Proxmox R&D cluster.
|
|
|
|
**[→ Current Status](STATUS.md)** · **[→ Documentation Index](docs/docmap.md)** · **[→ Agent Guidelines](AGENTS.md)**
|
|
|
|
## Directory Structure
|
|
|
|
| Directory | Description |
|
|
|-----------|-------------|
|
|
| [`provisioning/`](provisioning/) | Server provisioning (SetupNewSystem.sh, security hardening, 2FA, NTP/DNS config, SNMP, Dell OMSA) |
|
|
| [`tests/`](tests/) | Test suite + VM validation harness |
|
|
| [`dns-cluster-setup/`](dns-cluster-setup/) | Technitium DNS cluster replication scripts |
|
|
| [`k8s/`](k8s/) | k3s cluster setup scripts (3-node HA control plane over Tailscale) + co-located docs |
|
|
| [`powerman/`](powerman/) | Cyclades PM10i PDU management via powerman on pfv-tsys1 |
|
|
| [`console/`](console/) | Serial console management (ser2net + conman) for network switches on pfv-tsys4 |
|
|
| [`ups/`](ups/) | UPS management (NUT) for APC Smart-UPS C 1500 on pfv-tsys1 — upsd on Tailscale |
|
|
| [`perf/`](perf/) | Proxmox performance tuning, fleet audit, iperf, switch diagnostics |
|
|
| [`proxmox/`](proxmox/) | Proxmox fleet docs: hardware audit, capacity analysis, k8s host planning |
|
|
| [`netinfra/`](netinfra/) | pfv-netinfra-01/02 DNS/NTP/DHCP setup + audit scripts |
|
|
| [`switches/`](switches/) | Switch configuration captures |
|
|
| [`awx/`](awx/) | Ansible AWX deployment on tsys-awx (k3s + AWX Operator 2.19.1, v24.6.1) |
|
|
| [`docs/`](docs/) | Server-build docs, documentation index ([docmap](docs/docmap.md)), and archive |
|
|
| [`vendor/`](vendor/) | Vendored KNELShellFramework |
|
|
|
|
## Quick Start
|
|
|
|
### Provision a new server
|
|
```bash
|
|
sudo bash provisioning/SetupNewSystem.sh
|
|
```
|
|
|
|
### Validate on the sandbox VM
|
|
```bash
|
|
VM_ID=6000 ./tests/vm-validation.sh all
|
|
```
|
|
|
|
### Deploy DNS cluster
|
|
```bash
|
|
cd dns-cluster-setup/ && ./setup.sh all
|
|
```
|
|
|
|
### Deploy perf tunings
|
|
```bash
|
|
cd perf/ && ./deploy-tuning.sh
|
|
```
|
|
|
|
## Architecture
|
|
|
|
- **Proxmox hosts**: 7 standalone PVE installs managed via PDM
|
|
- **DNS**: Technitium (authoritative) + Pi-hole (recursive) on pfv-netinfra-01/02
|
|
- **NTP**: pfv-netinfra-01/02 (redundant, LAN IPs, stratum 2/3)
|
|
- **Production**: Cloudron VPS in Reston VA (this cluster is R&D only)
|
|
- **Backups**: Proxmox Backup Server (PBS)
|