Skip to content

Proxmox Configuration — proxfold

Proxmox VE 9.1.9 host configuration (Debian trixie base, kernel 6.14.11-6-pve). Covers network setup, access methods, and key config files that must be manually reconfigured after a fresh install.

Access

Method Address
Web UI https://192.168.1.250:8006
SSH root@192.168.1.250
iDRAC Present (separate management interface)

Network

The four onboard NICs are pinned to stable names (nic0nic3) via systemd .link files matched on MAC address, so the name doesn't change if a NIC is replaced or reordered by the PCIe enumeration. nic0 is bridged to vmbr0. All VMs and containers use vmbr0 for network access.

Interface Role
nic0 (was eno1) Bridged to vmbr0
nic1–nic3 Unused (manual)
vmbr0 VM bridge — 192.168.1.250/24, gateway 192.168.1.1

The MAC-pinning .link files live under /etc/systemd/network/ — see Config Files.

Full file contents are in Config Files — /etc/network/interfaces.

Proxmox repositories

After a fresh install (PVE 9 / trixie), disable the enterprise repos and enable the no-subscription community repos. PVE 9 ships repo definitions in deb822 .sources format under /etc/apt/sources.list.d/; the files of interest are pve-enterprise.sources, ceph.sources, and the base OS debian.sources.

# Disable the PVE enterprise repo
sed -i 's/^Enabled: true/Enabled: false/' /etc/apt/sources.list.d/pve-enterprise.sources

# Enable the no-subscription repo (classic .list format is fine on trixie too)
echo "deb http://download.proxmox.com/debian/pve trixie pve-no-subscription" > \
  /etc/apt/sources.list.d/pve-no-subscription.list

apt update && apt dist-upgrade -y

Note

If you mix deb822 and classic .list entries, apt warns about duplicates — it is safe but noisy. On this host the no-subscription entry is kept in /etc/apt/sources.list itself as a single line to avoid the duplicate warning.

Kernel pin (stay on 6.14) via proxmox-boot-tool

PVE 9.1 ships the 6.17.x kernel as default, but proxfold pins the 6.14.x kernel to keep compatibility with the Nvidia 550.x driver (see Plex — GPU passthrough). Since the Phase 4C boot-drive swap to ZFS RAID1 the host boots via proxmox-boot-tool (systemd-boot on each ESP), not GRUB — pin via proxmox-boot-tool kernel pin:

# Pin the running kernel
proxmox-boot-tool kernel pin 6.14.11-6-pve

# Verify
proxmox-boot-tool kernel pin           # shows the pinned version
proxmox-boot-tool status               # both ESPs configured + populated
uname -r                               # 6.14.11-6-pve after reboot

Verify after reboot with uname -r. The pin is kernel-version-specific — when a 6.14 point release lands, re-run kernel pin against the new version. Codified in the proxmox role.

Pre-2026-04-22

Before the Phase 4C boot-drive swap, proxfold ran a single 128 GB Samsung 840 PRO booting via UEFI+GRUB without proxmox-boot-tool. The kernel pin was managed via GRUB_DEFAULT in /etc/default/grub. That path is no longer in use here but applies if you ever roll back to a single-disk LVM-thin boot drive.

IPMI fan control

The Dell R430 aggressively ramps fans when it detects an unrecognised PCIe card (the Nvidia T400). This command disables that behaviour:

ipmitool raw 0x30 0xce 0x00 0x16 0x05 0x00 0x00 0x00 0x05 0x00 0x01 0x00 0x00

Verify (response ending in 01 00 00 = disabled):

ipmitool raw 0x30 0xce 0x01 0x16 0x05 0x00 0x00 0x00

Note

This persists across reboots but may reset after a BIOS or iDRAC firmware update. Re-run the disable command if fans suddenly become loud.

Thermal baseline

Captured 2026-04-25 on PVE 9.1.7, BMC auto fan curve with panic-ramp disabled (see above), 22 °C inlet, Nvidia T400 installed. Xeon E5-2680 v4 (14C/28T, 120W TDP). Intel sensor thresholds: high = 90 °C (pre-warning), TjMax throttle = 100 °C.

State Package °C Core max °C All-core freq Fans (A-bank RPM) Throttle events
Idle (load ~0.2) 73–74 68–70 ~3.0 GHz 2520–3720 0
Sustained 28-thread load (stress-ng --matrix 28 for 120s) 91–92 (ceiling) 91–92 ~2.82 GHz (all-core turbo) 5640–8640 0
Cooldown +15s 73 69 2520–3600 0

Key takeaways:

  • Idle sits in the 70s because a 120W Xeon in a 1U chassis with conservative fans runs warm by design — not a cooling failure.
  • Under full load the chip held all-core turbo (2.82 GHz is the E5-2680 v4's all-core spec); zero package_throttle_count increments confirms no thermal throttling.
  • BMC ramps fans appropriately in response to real heat (~3000 → ~8640 RPM across the test) and drops them back within 15 s of load ending. The panic-ramp disable is not suppressing that response.
  • Margin watch: peak 92 °C at 22 °C inlet leaves ~8 °C to TjMax. If inlet rises materially (summer room temps, dusty filters, HVAC failure), that margin shrinks — revisit if the rack routinely sees >30 °C ambient.

Reproducing the test

# On proxfold. Needs ipmitool + lm-sensors + stress-ng installed.
stress-ng --matrix 28 --timeout 120s --metrics-brief &
# While running, sample:
ipmitool sdr type temperature      # inlet + iDRAC CPU temp
ipmitool sdr type fan              # per-fan RPMs
sensors                            # per-core + package temps
cat /sys/devices/system/cpu/cpu0/thermal_throttle/package_throttle_count

package_throttle_count is the definitive throttle signal — if it ticks up during a run, the fan envelope is insufficient for that workload.

Key host config files

These files are not included in vzdump backups and must be manually reconfigured after a fresh Proxmox install.

File Purpose
/etc/network/interfaces Bridge and IP configuration
/etc/systemd/network/*.link MAC-pinned NIC names (nic0nic3)
/etc/hosts Hostname resolution
/etc/resolv.conf DNS
/etc/exports NFS exports
/etc/pve/storage.cfg Proxmox storage backends
/etc/apt/sources.list PVE no-subscription repo (trixie)
/etc/default/grub GRUB_DEFAULT kernel pin to 6.14.x
/etc/modprobe.d/zfs.conf ZFS ARC memory cap
/etc/modprobe.d/blacklist-nouveau.conf Nvidia nouveau driver blacklist
/etc/lvm/lvm.conf global_filter excluding ZFS zvols and RBD (keep on upgrade)

Full contents of each are in Config Files.

Note

The nasbackup CIFS storage is not in storage.cfg — it is added via pvesm command and stored separately. See Storage for the add command.