Prime's ruling 2026-10-13. esh-nas (10.0.50.50) had no infra-ops user, so key login was refused. The same steps as bootstrap-infra-ops-user.yaml (uid/gid 850, fleet key, NOPASSWD sudoers with log_output and the BULK_DATA carve-out, visudo-validated) ran inside the container from its host. Verified with a direct ssh infra-ops@10.0.50.50 and sudo -n whoami = root.
5.6 KiB
esh-pve-nas
Second Proxmox VE host at the ESH home lab (esh-nas-pve.esteban.net), dedicated to NAS / storage duty.
Network
- LAN IP: 10.0.50.55
- FQDN:
esh-nas-pve.esteban.net - Web UI:
https://10.0.50.55:8006 - SSH:
root@esh-pve-nas(key auth)
Media services on this box sit at 10.0.50.56 (Plex) and 10.0.50.57 (Jellyfin) — references to esh-nas-pve in the homepage config point at those addresses.
Hardware
-
CPU: Intel Xeon W-1250 @ 3.30 GHz
-
RAM: 125.6 GB
-
Kernel:
6.8.12-13-pve(Proxmox 8.x) -
Storage: root is
nvme/ROOT/pve-1on the mirrored NVMe pool since the 2026-08-18 migration. The USB Disk-on-Module (7.3 GB,ID_BUS=usb, NORELSYS 1081) still holds the ESP and/boot, but is out of the runtime I/O path — a USB bus reset no longer drops root from under a running hypervisor. Runbook:docs/runbooks/esh-pve-nas-boot-migration.md.DOM LVM layout:
LV size role pve-root6.04 G ext4 — the rollback, intact and unmounted, keeps its own kernel + initrd pve-boot512 M ext4 — /boot, carved out of swappve-swap256 M swap, shrunk to make room /bootstays ext4 on the DOM on purpose: GRUB cannot read thenvmepool, which hasencryption,large_dnodeandzstd_compressenabled.⚠ Device letters are not stable — the DOM was
sdqbefore the reboot andsdlafter.fstabuses/dev/pve/*and UUIDs; never write a rule against a baresdXon this host.⚠ There is no auto-fallback if a boot fails. grubenv lives on an LVM LV, which GRUB can read but not write, so
grub-reboot's one-shot degrades to a sticky default (verified 2026-08-18:next_entrysurvived the boot that consumed it). Steady state issaved_entry=pve-zfs-rootwith nonext_entry. A failed boot needs the console — and this box has no IPMI, no BMC, no serial console. Recovery is selectingProxmox VE - ROLLBACK: ext4 root on the USB DOMat the GRUB menu. -
⚠ Never set the ZFS cachefile on one pool.
zpool set cachefile=…flips the host from import-by-scan to import-by-cache; a cache holding onlynvmeleavesssdandtankunimported at boot, which empties every CT 103 export. Set it on all three or none. -
Pools:
nvme(2× 931 GB NVMe mirror — 32 G used, 867 G free, holds every guest rootfs),ssd(4× 894 GB Intel SATA, 2 mirrors — 1.42 T free),tank(12× 14.6 TB raidz2 ×2 — 40 T of 175 T). Plus NFS/mnt/pve/tank-vmbufor VM backups. -
⚠⚠ THIS HOST IS HALF OF A 2-NODE PROXMOX CLUSTER —
esh-pve-cluster, nodespve(esh-pve, 10.0.250.35, nodeid 1) andesh-nas-pve(this host, nodeid 2).Expected votes: 2,Quorum: 2, no qdevice. Taking either node down drops the survivor below quorum and makes its/etc/pveread-only — guests keep running, but no config change, no VM start/stop, no storage edit works until the partner returns. This was undocumented and nearly bit the 2026-08-18 migration, which rebooted this node without accounting for it. Before any planned reboot of either node, either accept the read-only window on the survivor or setpvecm expected 1on it for the duration. Discovered 2026-08-18. -
⚠ CT 103
esh-nas(10.0.50.50) runs on THIS host and serveshardNFS. Since 2026-10-13 it has theinfra-opsidentity (uid 850, NOPASSWD sudo, Prime's ruling):ssh infra-ops@10.0.50.50works directly. Before that, the only way in waspct exec 103from this host. Never reboot this host casually — quiesce the clients first. Measured from the server on 2026-08-18 (ss -tn '( sport = :2049 )'inside CT 103), there are five clients, not the two long documented here:client mounts opts esh-docker-vm 10.0.50.45/mnt/books,/mnt/backuphard — quiesce esh-pve 10.0.250.35/mnt/pve/esh-nas,/mnt/pve/tank-vmbuhard — quiesce esh-vm-db 10.0.50.60/mnt/backuphard — no ssh; reach it via qm guest exec 101on esh-pvevm-esh-nas 10.0.50.154— is VM 104 on this host; stops with it nh3-dev 10.100.10.50/mnt/bookssoft,ro — safe, errors rather than blocks Ask the server who its clients are; don't trust this table. It rots.
sson CT 103 is ground truth, and that is how the three undocumented clients surfaced. Playbooks:esh-cutover-1-quiesce-docker-vm.yaml,esh-cutover-2-quiesce-esh-pve.yaml,esh-cutover-5-restore-docker-vm.yaml.
Root-fs pressure: 77% of a 5.9 GB root (1.3 GB free) after the 2026-08-17 mitigation. Still not enough for the pending upgrade — 225 packages, 161 carrying
deb12uN/security bumps, including a ~250 MB signed kernel that lands in/boot. ⚠ Migrate first, patch after: unpacking that into 1.3 GB of headroom risks wedging dpkg on a hypervisor running five guests. The host is onpve-manager/8.4.11vs esh-pve's 8.4.14 for exactly this reason.
What it runs
Media + storage-adjacent workloads for the ESH site. Not yet catalogued here; qm list / pct list on the host is authoritative.
The ESH-FileBot entry in homepage (10.0.50.70, labeled "Restic Backup Target and File Sync — esh-nas-pve") is a workload running here — mentioned in the backup project as a possible additional restic endpoint; confirm role before integrating into the fleet plan.
Refresh state
scripts/refresh-server-info.sh esh-pve-nas
Placement rule
Hypervisor for ESH storage/media VMs. Non-PFI scope.