4.1 KiB
Node Roles: pve1 and pve-test
Two Proxmox VE hosts exist on the LAN. They are not interchangeable —
different purpose, different risk tolerance, different guardrails. See
CLAUDE.md for the actual rules Claude follows; this doc is the
background/context those rules assume.
pve1 (production)
ASUS PN53 mini PC (Ryzen 7 7735HS, 32GB RAM) — see 01-hardware-node1.md
for the full hardware layout. Stage 1 base hardening applied and verified
(04-security-hardening.md).
Runs real production workloads:
server-nixos(VM) and LXC containerspihole,claude,nix-cache,docker,pdm,pxe-boot— DNS, this Claude Code environment itself, the LAN's Nix binary cache, etc.
Off-limits to Claude by default — see CLAUDE.md.
pve-test (sandbox)
A separate physical node kept for testing. Has a capable GPU (earmarked for future GPU workloads — transcoding, local inference, etc. — nothing built on it yet as of this writing). No production guests run here.
Safe for Claude to create/destroy scratch VMs and containers on without
asking — see CLAUDE.md for the exact boundary (node-level config is
still not free-for-all even here).
History: briefly clustered with pve1, then deliberately separated
On 2026-07-21/22, pve-test was joined to pve1 in a 2-node Proxmox cluster
(corosync + shared /etc/pve) for a period, then the cluster was
intentionally destroyed at the operator's explicit request — not a
failure or accident. Rationale: the operator wanted pve-test moved onto
wifi networking (see 06-pve-test-wifi-network.md), and wifi is
fundamentally unsuitable for corosync's latency/jitter requirements (token
timeouts, flapping membership). Rather than fight that, the cluster was
torn down first, then wifi was configured on the now-standalone node.
Teardown procedure used (safe to repeat if pve-test or pve1 is ever reclustered and needs separating again):
- Un-manage any HA-assigned resources first if HA is in use
(
ha-manager remove <sid>per resource) — critical: if a node has HA-managed guests and its watchdog is still armed when it loses quorum, HA's self-fence behavior can force-reboot it. Removing the resource assignments first (not stopping the guests — just un-managing them) prevents this. - Stop
pve-ha-lrm/pve-ha-crmon all nodes once no resources remain assigned, confirm viaha-manager statusthat fencing is no longer armed. - From a node that will remain in the cluster:
pvecm delnode <name>for the node being removed. In a 2-node cluster with no QDevice, this can itself cause the remaining node to transiently lose quorum (killing a node's live corosync membership drops total votes below expected votes before the nodelist file can be rewritten to match) — this is expected, not a failure; proceed to step 4 regardless. - On each node being separated (including one you just ran
delnodefrom, if it's also being decoupled):systemctl stop pve-cluster corosync,pmxcfs -l(local mode, bypasses the quorum requirement for local writes), remove/etc/pve/corosync.confand/etc/corosync/*,killall pmxcfs,systemctl start pve-cluster. This is the official "separate a node without reinstalling" procedure and doesn't touch any running VM/CT — they're independent OS processes, unaffected by corosync/pmxcfs state either way. - Optional cosmetic cleanup: the node(s) staying up may retain a stale
/etc/pve/nodes/<removed-node>/directory (cached VM/CT configs from when they were clustered) — safe torm -rfonce separation is confirmed; it's dead data, not a live reference to anything.
Guests were never at risk during this procedure (confirmed: all 7 of
pve1's guests ran continuously throughout) — the only real hazard is the
HA/watchdog self-fence path in step 1, and losing corosync-provided quorum
temporarily blocking /etc/pve writes (not guest execution) in step 3.
Current state: standalone, wifi-primary networking
pve-test now runs entirely independently of pve1, on the network design
documented in 06-pve-test-wifi-network.md. Do not re-cluster
pve-test while it's on wifi — see that doc for why.