Add the four Proxmox hypervisors to the inventory

pfi-pve (Anaheim), nh3-pve (NH), esh-pve + esh-pve-nas (ESH home lab) now
have servers/<host>/ entries with ssh-target files, README stubs, and
first snapshots. Register all four via add-host.sh + ssh-copy-id; SSH
auth is root@<name> with key-based access.

Fix a resolver bug in the three workspace scripts: previously, when a
hostname resolved via /etc/hosts, resolve_target returned the bare name
and ssh dropped the user prefix stored in ssh-target (connecting as the
wrong user). Now ssh-target wins whenever it's present, since it can
carry user@ or port info that /etc/hosts + ssh_config cannot. Falls back
to the dir name only when no ssh-target file exists.

CLAUDE.md and README.md split the fleet table into Docker hosts vs
hypervisors with an explicit placement rule: don't deploy Docker stacks
on PVE hosts; capture host-level detail with server_inspect.sh, use
Proxmox-native tooling (qm list, pvesh, zpool) for VM/storage audits.
This commit is contained in:
2026-04-20 14:58:17 -07:00
parent f6b0e2b22f
commit 8c15ec2d5f
17 changed files with 593 additions and 19 deletions
+9 -4
View File
@@ -53,10 +53,14 @@ Observed and standardized across servers:
| Name | IP | Site | Role | Details |
|------|-----|------|------|---------|
| ana-ml2 | 10.250.50.54 | Anaheim (`10.250.0.0/16`) | GPU / AI inference | `servers/ana-ml2/README.md` |
| ana-docker | 10.250.50.70 | Anaheim (`10.250.0.0/16`) | General-purpose Docker host (non-GPU) | `servers/ana-docker/README.md` |
| nh3-docker | 10.100.50.40 | NH3 (`10.100.0.0/16`) | General-purpose Docker host (non-GPU) | `servers/nh3-docker/README.md` |
| esh-docker-vm | 10.0.50.45 | ESH home lab (`esteban.net`, `10.0.50.0/24`) | Home-lab Docker host (non-PFI scope) | `servers/esh-docker-vm/README.md` |
| ana-ml2 | 10.250.50.54 | Anaheim (`10.250.0.0/16`) | GPU / AI inference (bare metal) | `servers/ana-ml2/README.md` |
| ana-docker | 10.250.50.70 | Anaheim | General-purpose Docker host (non-GPU VM on pfi-pve) | `servers/ana-docker/README.md` |
| pfi-pve | 10.250.250.31 | Anaheim | Proxmox VE hypervisor | `servers/pfi-pve/README.md` |
| nh3-docker | 10.100.50.40 | NH3 (`10.100.0.0/16`) | General-purpose Docker host (non-GPU VM on nh3-pve) | `servers/nh3-docker/README.md` |
| nh3-pve | 10.100.250.60 | NH3 | Proxmox VE hypervisor | `servers/nh3-pve/README.md` |
| esh-docker-vm | 10.0.50.45 | ESH home lab (`esteban.net`, `10.0.50.0/24`) | Home-lab Docker host (VM on esh-pve) | `servers/esh-docker-vm/README.md` |
| esh-pve | 10.0.250.35 | ESH home lab | Proxmox VE hypervisor | `servers/esh-pve/README.md` |
| esh-pve-nas | 10.0.50.55 | ESH home lab | Proxmox VE hypervisor (storage / media) | `servers/esh-pve-nas/README.md` |
**Placement rules:**
- GPU-required stacks → `ana-ml2`.
@@ -64,6 +68,7 @@ Observed and standardized across servers:
- NH-site non-GPU services → `nh3-docker`.
- ESH home-lab workloads (`esteban.net`) → `esh-docker-vm`. Not part of the PFI colo topology, but shares monitoring/backup tooling.
- Cross-site services (e.g. Beszel hub, Dozzle hub) live on `ana-docker` and pull from agents on the other hosts.
- **Hypervisors** (`pfi-pve`, `nh3-pve`, `esh-pve`, `esh-pve-nas`) are tracked for inventory / capacity planning. Don't deploy Docker stacks directly on them; new workloads land as VMs. `server_inspect.sh` captures host-level detail only — VM/LXC/ZFS enumeration needs Proxmox-native tooling (`qm list`, `pvesh get …`, `zpool list`).
## How to refresh a server's state
+15 -4
View File
@@ -6,12 +6,23 @@ See **[CLAUDE.md](CLAUDE.md)** for the full set of conventions and the rules Cla
## The fleet
**Docker hosts:**
| Host | IP | Site | Role |
|---|---|---|---|
| ana-ml2 | `10.250.50.54` | Anaheim (`10.250.0.0/16`) | GPU / AI inference |
| ana-docker | `10.250.50.70` | Anaheim | General-purpose Docker + cross-site hubs |
| nh3-docker | `10.100.50.40` | NH3 (`10.100.0.0/16`) | General-purpose Docker (NH site) |
| esh-docker-vm | `10.0.50.45` | ESH home lab (`esteban.net`) | Home-lab Docker (non-PFI scope) |
| ana-ml2 | `10.250.50.54` | Anaheim (`10.250.0.0/16`) | GPU / AI inference (bare metal) |
| ana-docker | `10.250.50.70` | Anaheim | General-purpose Docker + cross-site hubs (VM on pfi-pve) |
| nh3-docker | `10.100.50.40` | NH3 (`10.100.0.0/16`) | General-purpose Docker (VM on nh3-pve) |
| esh-docker-vm | `10.0.50.45` | ESH home lab (`esteban.net`) | Home-lab Docker (VM on esh-pve, non-PFI scope) |
**Proxmox hypervisors** (tracked for inventory; not Docker targets):
| Host | IP | Site | Role |
|---|---|---|---|
| pfi-pve | `10.250.250.31` | Anaheim | Proxmox VE (188 GB / Xeon Silver 4310) |
| nh3-pve | `10.100.250.60` | NH3 | Proxmox VE (62 GB / i9-13900H) |
| esh-pve | `10.0.250.35` | ESH home lab | Proxmox VE (62 GB / i9-13900H) |
| esh-pve-nas | `10.0.50.55` | ESH home lab | Proxmox VE, storage-dedicated (125 GB / Xeon W-1250) |
Per-host snapshots of the running system live under `servers/<host>/system-details.txt`, refreshed via `scripts/refresh-server-info.sh`.
+8 -2
View File
@@ -82,14 +82,20 @@ done
[ -n "$STACK" ] || { echo "usage: $(basename "$0") <host> <stack>" >&2; exit 2; }
resolve_target() {
# ssh-target file wins when present (may carry user@ or non-default port);
# /etc/hosts + ssh_config is the fallback.
local host="$1"
local fb="$SERVERS_DIR/$host/ssh-target"
if [ -f "$fb" ]; then
local t
t=$(awk 'NF{print $1; exit}' "$fb")
if [ -n "$t" ]; then echo "$t"; return; fi
fi
local effective
effective=$(ssh -G "$host" 2>/dev/null | awk '/^hostname /{print $2; exit}')
if [ -n "$effective" ] && getent hosts "$effective" >/dev/null 2>&1; then
echo "$host"; return
fi
local fb="$SERVERS_DIR/$host/ssh-target"
if [ -f "$fb" ]; then awk 'NF{print $1; exit}' "$fb"; return; fi
echo "$host"
}
+10 -7
View File
@@ -94,21 +94,24 @@ fi
resolve_target() {
# Prints the SSH target to use for a given dir name.
# Preference order:
# 1. The dir name — if ssh's effective hostname (after ssh_config) resolves.
# 2. Contents of servers/<host>/ssh-target (first whitespace token).
# 1. servers/<host>/ssh-target if present — it may carry a user
# prefix (root@host) or port that /etc/hosts + ssh_config can't
# express, so an explicit file is authoritative when it exists.
# 2. The dir name, if /etc/hosts or DNS resolves it.
# 3. The dir name as-is — let ssh fail with its own error.
local host="$1"
local fallback="$SERVERS_DIR/$host/ssh-target"
if [ -f "$fallback" ]; then
local target
target=$(awk 'NF{print $1; exit}' "$fallback")
if [ -n "$target" ]; then echo "$target"; return; fi
fi
local effective
effective=$(ssh -G "$host" 2>/dev/null | awk '/^hostname /{print $2; exit}')
if [ -n "$effective" ] && getent hosts "$effective" >/dev/null 2>&1; then
echo "$host"
return
fi
local fallback="$SERVERS_DIR/$host/ssh-target"
if [ -f "$fallback" ]; then
awk 'NF{print $1; exit}' "$fallback"
return
fi
echo "$host"
}
+8 -2
View File
@@ -71,14 +71,20 @@ for arg in "$@"; do
done
resolve_target() {
# ssh-target file wins when present (may carry user@ or non-default port);
# /etc/hosts + ssh_config is the fallback.
local host="$1"
local fb="$SERVERS_DIR/$host/ssh-target"
if [ -f "$fb" ]; then
local t
t=$(awk 'NF{print $1; exit}' "$fb")
if [ -n "$t" ]; then echo "$t"; return; fi
fi
local effective
effective=$(ssh -G "$host" 2>/dev/null | awk '/^hostname /{print $2; exit}')
if [ -n "$effective" ] && getent hosts "$effective" >/dev/null 2>&1; then
echo "$host"; return
fi
local fb="$SERVERS_DIR/$host/ssh-target"
if [ -f "$fb" ]; then awk 'NF{print $1; exit}' "$fb"; return; fi
echo "$host"
}
+37
View File
@@ -0,0 +1,37 @@
# 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:** local `pve-root` is tiny (5.9 GB, **87% used — worth watching**) + NFS `/mnt/pve/tank-vmbu` (93 TB) for VM backups
> **Root-fs pressure:** at 87% used on a 5.9 GB root partition, there's not much room for package upgrades or logs. Worth cleaning up or growing the root if this host is staying in production for a while.
## 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
```bash
scripts/refresh-server-info.sh esh-pve-nas
```
## Placement rule
Hypervisor for ESH storage/media VMs. Non-PFI scope.
+1
View File
@@ -0,0 +1 @@
root@esh-pve-nas
+122
View File
@@ -0,0 +1,122 @@
===== HOST =====
Hostname: esh-nas-pve.esteban.net
Date: 2026-04-20T14:54:19-07:00
Uptime: up 2 weeks, 6 days, 22 hours, 45 minutes
OS: Debian GNU/Linux 12 (bookworm)
Kernel: 6.8.12-13-pve
Arch: x86_64
===== HARDWARE =====
CPU cores: 12
CPU model: Intel(R) Xeon(R) W-1250 CPU @ 3.30GHz
MemTotal: 125.6 GB
MemAvailable: 56.4 GB
===== GPUS =====
nvidia-smi not present (no NVIDIA GPUs or driver not installed)
===== FILESYSTEMS (df) =====
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/pve-root 5.9G 4.9G 756M 87% /
efivarfs 192K 30K 158K 16% /sys/firmware/efi/efivars
/dev/sdq2 511M 12M 500M 3% /boot/efi
ssd 1.5T 128K 1.5T 1% /ssd
nvme 870G 128K 870G 1% /nvme
ssd/iso 1.5T 4.6G 1.5T 1% /ssd/iso
ssd/vm 1.5T 128K 1.5T 1% /ssd/vm
ssd/ssd-pvestore 1.5T 128K 1.5T 1% /ssd/ssd-pvestore
nvme/subvol-107-disk-0 40G 8.0G 33G 20% /nvme/subvol-107-disk-0
ssd/compose 1.5T 4.1G 1.5T 1% /ssd/compose
nvme/subvol-105-disk-0 128G 7.9G 121G 7% /nvme/subvol-105-disk-0
nvme/subvol-106-disk-0 80G 1.1G 79G 2% /nvme/subvol-106-disk-0
nvme/subvol-103-disk-0 128G 807M 128G 1% /nvme/subvol-103-disk-0
nvme/nvme-pvestore 870G 28M 870G 1% /nvme/nvme-pvestore
nvme/tmp 872G 1.6G 870G 1% /nvme/tmp
nvme/qnap-apps 870G 32M 870G 1% /nvme/qnap-apps
tank 92T 384K 92T 1% /tank
tank/music 92T 256K 92T 1% /tank/music
tank/share 96T 4.0T 92T 5% /tank/share
tank/books 92T 96G 92T 1% /tank/books
tank/media 111T 20T 92T 18% /tank/media
tank/documents 92T 256K 92T 1% /tank/documents
tank/backup 92T 26G 92T 1% /tank/backup
tank/vmbu 93T 1.4T 92T 2% /tank/vmbu
tank/pvestore 92T 2.7G 92T 1% /tank/pvestore
/dev/fuse 128M 32K 128M 1% /etc/pve
10.0.50.50:/mnt/tank-vmbu 93T 1.4T 92T 2% /mnt/pve/tank-vmbu
===== PERSISTENT MOUNTS (/etc/fstab, non-comment) =====
/dev/pve/root / ext4 errors=remount-ro 0 1
UUID=1D32-43A5 /boot/efi vfat defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
===== TARGETED DATA PATHS =====
/tank (total: 25T)
total 137
drwxr-xr-x 10 root root 10 2024-06-09 13:06 .
drwxr-xr-x 21 root root 4096 2024-06-08 00:27 ..
drwxrwxrwx 7 nas nas_shares 7 2024-06-09 12:48 backup
drwxrwxrwx 7 nas nas_shares 9 2025-05-06 10:58 books
drwxrwxrwx 3 nas nas_shares 3 2024-06-09 12:53 documents
drwxrwxrwx 8 nas nas_shares 9 2024-06-10 14:06 media
drwxrwxrwx 2 nas nas_shares 2 2024-06-09 09:41 music
drwxrwxrwx 7 nas nas_shares 7 2024-06-09 13:37 pvestore
drwxrwxrwx 9 nas nas_shares 11 2025-03-09 15:02 share
drwxrwxrwx 3 nas nas_shares 3 2024-06-08 00:31 vmbu
/opt (total: 4.0K)
total 8
drwxr-xr-x 2 root root 4096 2024-04-24 04:26 .
drwxr-xr-x 21 root root 4096 2024-06-08 00:27 ..
/srv (total: 4.0K)
total 8
drwxr-xr-x 2 root root 4096 2024-04-24 04:26 .
drwxr-xr-x 21 root root 4096 2024-06-08 00:27 ..
===== DOCKER =====
docker not installed
===== COMPOSE FILES (/opt/docker/compose/) =====
/opt/docker/compose not present
===== CONFIG LAYOUT (/opt/docker/conf/ — top 200 entries) =====
/opt/docker/conf not present
===== LISTENING PORTS =====
0.0.0.0:111
0.0.0.0:22
[::]:111
[::1]:25
127.0.0.1:25
127.0.0.1:85
[::]:22
*:3128
*:8006
===== MODEL / HUGGINGFACE CACHES =====
===== DOCKER-ADJACENT SYSTEMD SERVICES =====
pve-container@103.service running
pve-container@105.service running
pve-container@106.service running
pve-container@107.service running
===== DONE =====
Paste the above back into the chat, or pass a path as argv[1] to save.
+35
View File
@@ -0,0 +1,35 @@
# esh-pve
Proxmox VE hypervisor for the ESH home lab (`pve.esteban.net`). Non-PFI scope.
## Network
- **LAN IP:** 10.0.250.35
- **FQDN:** `pve.esteban.net`
- **Web UI:** `https://10.0.250.35:8006`
- **SSH:** `root@esh-pve` (key auth)
## Hardware
- **CPU:** 13th Gen Intel Core i9-13900H
- **RAM:** 62.5 GB
- **Kernel:** `6.8.12-16-pve` (Proxmox 8.x)
- **Storage:** local `pve-root` at 94G (21% used) + two large NFS mounts from `10.0.50.50`:
- `/mnt/pve/esh-nas` — 92 TB available on `/mnt/pvestore`
- `/mnt/pve/tank-vmbu` — 93 TB, VM backup target (~1.4 TB used)
## What it runs
`esh-docker-vm` (`10.0.50.45`) is a VM here. Other home-lab VMs are not yet catalogued in this workspace — run `qm list` on the host for the live inventory.
## Refresh state
```bash
scripts/refresh-server-info.sh esh-pve
```
Same Proxmox-inspect caveat as `pfi-pve`.
## Placement rule
Hypervisor for ESH home-lab VMs. Not part of the PFI colo topology.
+1
View File
@@ -0,0 +1 @@
root@esh-pve
+91
View File
@@ -0,0 +1,91 @@
===== HOST =====
Hostname: pve.esteban.net
Date: 2026-04-20T14:50:55-07:00
Uptime: up 2 weeks, 6 days, 22 hours, 35 minutes
OS: Debian GNU/Linux 12 (bookworm)
Kernel: 6.8.12-16-pve
Arch: x86_64
===== HARDWARE =====
CPU cores: 20
CPU model: 13th Gen Intel(R) Core(TM) i9-13900H
MemTotal: 62.5 GB
MemAvailable: 27.5 GB
===== GPUS =====
nvidia-smi not present (no NVIDIA GPUs or driver not installed)
===== FILESYSTEMS (df) =====
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/pve-root 94G 18G 72G 21% /
efivarfs 192K 131K 57K 70% /sys/firmware/efi/efivars
/dev/nvme0n1p2 1022M 12M 1011M 2% /boot/efi
/dev/fuse 128M 32K 128M 1% /etc/pve
10.0.50.50:/mnt/pvestore 92T 2.7G 92T 1% /mnt/pve/esh-nas
10.0.50.50:/mnt/tank-vmbu 93T 1.4T 92T 2% /mnt/pve/tank-vmbu
===== PERSISTENT MOUNTS (/etc/fstab, non-comment) =====
/dev/pve/root / ext4 errors=remount-ro 0 1
UUID=E902-F78C /boot/efi vfat defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
===== TARGETED DATA PATHS =====
/tank (total: 12K)
total 12
drwxr-xr-x 3 root root 4096 2024-06-08 00:57 .
drwxr-xr-x 20 root root 4096 2025-12-02 15:01 ..
drwxr-xr-x 3 root root 4096 2024-06-08 00:57 vmbu
/opt (total: 4.0K)
total 8
drwxr-xr-x 2 root root 4096 2024-04-24 04:26 .
drwxr-xr-x 20 root root 4096 2025-12-02 15:01 ..
/srv (total: 4.0K)
total 8
drwxr-xr-x 2 root root 4096 2024-04-24 04:26 .
drwxr-xr-x 20 root root 4096 2025-12-02 15:01 ..
===== DOCKER =====
docker not installed
===== COMPOSE FILES (/opt/docker/compose/) =====
/opt/docker/compose not present
===== CONFIG LAYOUT (/opt/docker/conf/ — top 200 entries) =====
/opt/docker/conf not present
===== LISTENING PORTS =====
0.0.0.0:111
0.0.0.0:22
[::]:111
[::1]:25
127.0.0.1:25
127.0.0.1:85
[::]:22
*:3128
*:8006
===== MODEL / HUGGINGFACE CACHES =====
===== DOCKER-ADJACENT SYSTEMD SERVICES =====
(none matching)
===== DONE =====
Paste the above back into the chat, or pass a path as argv[1] to save.
+33
View File
@@ -0,0 +1,33 @@
# nh3-pve
Proxmox VE hypervisor for the NH3 site (`nh3-vmhost.phasefinal.com`).
## Network
- **LAN IP:** 10.100.250.60
- **FQDN:** `nh3-vmhost.phasefinal.com`
- **Web UI:** `https://10.100.250.60:8006`
- **SSH:** `root@nh3-pve` (key auth)
## Hardware
- **CPU:** 13th Gen Intel Core i9-13900H
- **RAM:** 62.5 GB
- **Kernel:** `6.8.12-11-pve` (Proxmox 8.x)
- **Storage:** mostly networked — `/mnt/pve/pfi-nh3-nas` (42 TB) mounted from the Synology at `10.100.50.50:/volume1/VMStorage`; ~27 TB used
## What it runs
`nh3-docker` (`10.100.50.40`) is a VM on this hypervisor. Other VMs (if any) aren't catalogued yet — run `qm list` on the host when you need the current inventory.
## Refresh state
```bash
scripts/refresh-server-info.sh nh3-pve
```
Same Proxmox-inspect caveat as `pfi-pve`: snapshots capture host-level detail only. VM/LXC/storage enumeration needs the Proxmox tooling manually.
## Placement rule
Hypervisor. New NH-site workloads land here as VMs.
+1
View File
@@ -0,0 +1 @@
root@nh3-pve
+89
View File
@@ -0,0 +1,89 @@
===== HOST =====
Hostname: nh3-vmhost.phasefinal.com
Date: 2026-04-20T14:50:55-07:00
Uptime: up 5 weeks, 5 days, 7 hours, 39 minutes
OS: Debian GNU/Linux 12 (bookworm)
Kernel: 6.8.12-11-pve
Arch: x86_64
===== HARDWARE =====
CPU cores: 20
CPU model: 13th Gen Intel(R) Core(TM) i9-13900H
MemTotal: 62.5 GB
MemAvailable: 39.3 GB
===== GPUS =====
nvidia-smi not present (no NVIDIA GPUs or driver not installed)
===== FILESYSTEMS (df) =====
Filesystem Size Used Avail Use% Mounted on
rpool/ROOT/pve-1 857G 6.2G 850G 1% /
efivarfs 192K 127K 61K 68% /sys/firmware/efi/efivars
rpool/var-lib-vz 851G 864M 850G 1% /var/lib/vz
rpool 850G 128K 850G 1% /rpool
rpool/ROOT 850G 128K 850G 1% /rpool/ROOT
rpool/data 850G 128K 850G 1% /rpool/data
rpool/data/subvol-103-disk-0 40G 831M 40G 3% /rpool/data/subvol-103-disk-0
/dev/fuse 128M 20K 128M 1% /etc/pve
10.100.50.50:/volume1/VMStorage 42T 27T 16T 64% /mnt/pve/pfi-nh3-nas
===== PERSISTENT MOUNTS (/etc/fstab, non-comment) =====
proc /proc proc defaults 0 0
===== TARGETED DATA PATHS =====
/opt (total: 512)
total 9
drwxr-xr-x 2 root root 2 2024-02-05 08:38 .
drwxr-xr-x 18 root root 22 2024-04-23 07:00 ..
/srv (total: 512)
total 9
drwxr-xr-x 2 root root 2 2024-02-05 08:38 .
drwxr-xr-x 18 root root 22 2024-04-23 07:00 ..
===== DOCKER =====
docker not installed
===== COMPOSE FILES (/opt/docker/compose/) =====
/opt/docker/compose not present
===== CONFIG LAYOUT (/opt/docker/conf/ — top 200 entries) =====
/opt/docker/conf not present
===== LISTENING PORTS =====
0.0.0.0:111
0.0.0.0:22
0.0.0.0:37105
0.0.0.0:59691
[::]:111
[::1]:25
127.0.0.1:25
127.0.0.1:85
[::]:22
*:3128
[::]:43035
[::]:45287
*:8006
===== MODEL / HUGGINGFACE CACHES =====
===== DOCKER-ADJACENT SYSTEMD SERVICES =====
pve-container@103.service running
===== DONE =====
Paste the above back into the chat, or pass a path as argv[1] to save.
+35
View File
@@ -0,0 +1,35 @@
# pfi-pve
Proxmox VE hypervisor for the Anaheim colo (`pve.phasefinal.com`). Hosts every VM in the PFI-ANA cluster.
## Network
- **LAN IP:** 10.250.250.31
- **FQDN:** `pve.phasefinal.com`
- **Web UI:** `https://10.250.250.31:8006`
- **SSH:** `root@pfi-pve` (key auth; `ssh-target` file uses the hostname)
## Hardware
- **CPU:** Intel Xeon Silver 4310 @ 2.10 GHz
- **RAM:** 188 GB
- **Kernel:** `6.8.12-8-pve` (Proxmox 8.x)
- **Storage:** local `pve-root` at 65G (49% used) + `pve` LVM pool for VM disks
## What it runs
The VMs in [`docs/pfi/proxmox-vms.md`](../../docs/pfi/proxmox-vms.md) live here — VM 100 (PFI-ANA-TRUENAS, now Debian NFS/SMB), VM 101 (DC), VM 102 (PFI-ANA-Docker = `ana-docker`), 103111 (Mongo, Postgres, Tailscale, Pteradactyl, Webhost, tacticalrmm, etc.).
`ana-ml2` (`10.250.50.54`) is a separate bare-metal box, not on this hypervisor.
## Refresh state
```bash
scripts/refresh-server-info.sh pfi-pve
```
The snapshot captures host/hardware/filesystem/network/ports but **not** VM-level detail (`server_inspect.sh` targets Docker hosts). Running `qm list`, `pvesh get /cluster/resources`, and `zpool list -v` manually is the current way to audit VMs and storage. A Proxmox-flavored inspect script is a future improvement.
## Placement rule
This is a hypervisor, not a target for Docker stacks. Add new workloads by standing up VMs here (or on ana-docker / ana-ml2, whichever fits) rather than deploying containers directly on the PVE host.
+1
View File
@@ -0,0 +1 @@
root@pfi-pve
+97
View File
@@ -0,0 +1,97 @@
===== HOST =====
Hostname: pve.phasefinal.com
Date: 2026-04-20T14:50:54-07:00
Uptime: up 34 weeks, 2 days, 1 hour, 32 minutes
OS: Debian GNU/Linux 12 (bookworm)
Kernel: 6.8.12-8-pve
Arch: x86_64
===== HARDWARE =====
CPU cores: 48
CPU model: Intel(R) Xeon(R) Silver 4310 CPU @ 2.10GHz
MemTotal: 188.1 GB
MemAvailable: 40.7 GB
===== GPUS =====
nvidia-smi not present (no NVIDIA GPUs or driver not installed)
===== FILESYSTEMS (df) =====
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/pve-root 65G 30G 32G 49% /
efivarfs 304K 212K 88K 71% /sys/firmware/efi/efivars
/dev/sdk2 1022M 356K 1022M 1% /boot/efi
ospool 11T 128K 11T 1% /ospool
NASPool 20T 128K 20T 1% /NASPool
NASPool/db 20T 282M 20T 1% /NASPool/db
NASPool/docker 20T 384K 20T 1% /NASPool/docker
ospool/subvol-113-disk-0 8.0G 623M 7.4G 8% /ospool/subvol-113-disk-0
ospool/subvol-109-disk-0 80G 812M 80G 1% /ospool/subvol-109-disk-0
ospool/subvol-112-disk-0 80G 813M 80G 1% /ospool/subvol-112-disk-0
ospool/backup 11T 240M 11T 1% /ospool/backup
NASPool/backupStore 20T 1.1G 20T 1% /NASPool/backupStore
NASPool/pve-VMStorage 22T 2.4T 20T 11% /NASPool/pve-VMStorage
NASPool/webdav 20T 256K 20T 1% /NASPool/webdav
/dev/fuse 128M 24K 128M 1% /etc/pve
===== PERSISTENT MOUNTS (/etc/fstab, non-comment) =====
/dev/pve/root / ext4 errors=remount-ro 0 1
UUID=C333-4BC2 /boot/efi vfat defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
===== TARGETED DATA PATHS =====
/opt (total: 8.0M)
total 12
drwxr-xr-x 3 root root 4096 2026-04-18 21:54 .
drwxr-xr-x 20 root root 4096 2024-06-12 11:08 ..
drwxr-xr-x 3 root root 4096 2026-04-18 21:54 MegaRAID
/srv (total: 4.0K)
total 8
drwxr-xr-x 2 root root 4096 2023-03-22 07:38 .
drwxr-xr-x 20 root root 4096 2024-06-12 11:08 ..
===== DOCKER =====
docker not installed
===== COMPOSE FILES (/opt/docker/compose/) =====
/opt/docker/compose not present
===== CONFIG LAYOUT (/opt/docker/conf/ — top 200 entries) =====
/opt/docker/conf not present
===== LISTENING PORTS =====
0.0.0.0:111
0.0.0.0:22
[::]:111
[::1]:25
127.0.0.1:25
127.0.0.1:85
[::]:22
*:3128
*:8006
===== MODEL / HUGGINGFACE CACHES =====
===== DOCKER-ADJACENT SYSTEMD SERVICES =====
pve-container@109.service running
pve-container@112.service running
pve-container@113.service running
===== DONE =====
Paste the above back into the chat, or pass a path as argv[1] to save.