4b26aca5eeee5afb3742b3f6c3c68f6d0ab13e35
Drive HA's REST config-flow endpoint to add the NUT integration programmatically,
no manual UI clicks required. The script (setup-ha-nut.sh + ha-nut-setup.py) is
idempotent — skips if a NUT entry already exists.
Key finding: HAOS runs Tailscale as an isolated add-on container, so the HA core
container cannot route to Tailscale IPs. Added a LAN listener (192.168.3.11:3493)
to upsd so HA can reach it over the shared vmbr0 bridge. Both VMs (pfv-bms HA at
192.168.3.12 and pfv-tsys1 at 192.168.3.11) are on the same bridge.
Integration is live — sensors for battery charge (100%), status (Online), and
status data (OL) are reporting.
Secrets (HA token, NUT password) are read from ~/.config/pfvcluster/ and never
committed to the repo.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
PFVCluster
Unified infrastructure repo for the Known Element Enterprises Proxmox R&D cluster.
→ Current Status · → Documentation Index · → Agent Guidelines
Directory Structure
| Directory | Description |
|---|---|
provisioning/ |
Server provisioning (SetupNewSystem.sh, security hardening, 2FA, NTP/DNS config, SNMP, Dell OMSA) |
tests/ |
Test suite + VM validation harness |
dns-cluster-setup/ |
Technitium DNS cluster replication scripts |
k8s/ |
k3s cluster setup scripts (3-node HA control plane over Tailscale) + co-located docs |
powerman/ |
Cyclades PM10i PDU management via powerman on pfv-tsys1 |
console/ |
Serial console management (ser2net + conman) for network switches on pfv-tsys4 |
ups/ |
UPS management (NUT) for APC Smart-UPS C 1500 on pfv-tsys1 — upsd on Tailscale |
perf/ |
Proxmox performance tuning, fleet audit, iperf, switch diagnostics |
proxmox/ |
Proxmox fleet docs: hardware audit, capacity analysis, k8s host planning |
netinfra/ |
pfv-netinfra-01/02 DNS/NTP/DHCP setup + audit scripts |
switches/ |
Switch configuration captures |
awx/ |
Ansible AWX deployment on tsys-awx (k3s + AWX Operator 2.19.1, v24.6.1) |
docs/ |
Server-build docs, documentation index (docmap), and archive |
vendor/ |
Vendored KNELShellFramework |
Quick Start
Provision a new server
sudo bash provisioning/SetupNewSystem.sh
Validate on the sandbox VM
VM_ID=6000 ./tests/vm-validation.sh all
Deploy DNS cluster
cd dns-cluster-setup/ && ./setup.sh all
Deploy perf tunings
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)
Languages
Shell
69.6%
Python
25.8%
Perl
4.4%
Makefile
0.2%