Config Files¶
Key host configuration files for proxfold. These are not included in vzdump backups and must be manually reconfigured after a fresh Proxmox install. See the Boot Drive Swap runbook for the full post-install procedure.
/etc/network/interfaces¶
NICs are referenced by their pinned names (nic0–nic3) rather than the kernel-assigned enoX names. The pinning itself is defined in /etc/systemd/network below.
auto lo
iface lo inet loopback
iface nic0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.250/24
gateway 192.168.1.1
bridge-ports nic0
bridge-stp off
bridge-fd 0
iface nic1 inet manual
iface nic2 inet manual
iface nic3 inet manual
source /etc/network/interfaces.d/*
/etc/systemd/network¶
One .link file per NIC, pinning the kernel-assigned name to a stable nicN name via MAC match. Example for nic0:
The three other NICs have equivalent files (11-nic1.link, 12-nic2.link, 13-nic3.link) with their own MACs. This removes any dependency on PCIe enumeration order, so replacing the motherboard or adding a PCIe NIC does not renumber the onboard ports.
/etc/apt/sources.list¶
deb http://deb.debian.org/debian trixie main contrib
deb http://deb.debian.org/debian trixie-updates main contrib
deb http://security.debian.org/debian-security trixie-security main contrib
deb http://download.proxmox.com/debian/pve trixie pve-no-subscription
PVE 9 also ships deb822 .sources files under /etc/apt/sources.list.d/ (notably pve-enterprise.sources and ceph.sources). The enterprise entry has Enabled: false on this host. To avoid apt's duplicate-source warning, the PVE no-subscription entry is kept only in /etc/apt/sources.list, not duplicated as a .sources file.
/etc/default/grub (GRUB_DEFAULT only)¶
Pins boot to kernel 6.14.11-6-pve rather than the PVE 9.1 default (6.17.x). Motivation: keep a kernel compatible with Nvidia 550.x and the Dell 13G platform. Run update-grub after edits. The exact UUID and menuentry ID can be read from /boot/grub/grub.cfg.
/etc/hosts¶
/etc/resolv.conf¶
/etc/exports¶
/etc/pve/storage.cfg¶
Current state (post Phase 4C, boot drive is now a ZFS mirror rpool):
dir: local
path /var/lib/vz
content vztmpl,iso,backup
prune-backups keep-all=1
shared 0
zfspool: local-zfs
pool rpool/data
content rootdir,images
mountpoint /rpool/data
sparse 1
cifs: nasbackup
path /mnt/pve/nasbackup
server 192.168.1.253
share backup
content backup
prune-backups keep-all=1
smbversion 2.0
username admin
Note
Pre-Phase 4C (single 128GB Samsung 840 PRO boot drive) this file listed lvmthin: local-lvm instead of local-zfs. If you restore from a pre-4C vzdump onto a ZFS-mirror rebuild, VM disks land on local-zfs automatically — but container/VM configs referencing ide2: local:iso/... for detached CD images will fail to start until the stale ide2 line is removed (see the Proxfold rebuild runbook for the recovery step).
Note
The nasbackup CIFS storage is codified in the proxmox Ansible role and appears here automatically after a converge — no manual pvesm add cifs call needed on a rebuild.
/etc/lvm/lvm.conf (global_filter only)¶
Prevents LVM from scanning ZFS zvols and Ceph RBD devices — without this, LVM prints spurious errors and can latch onto guest disks that happen to contain LVM metadata. On a PVE upgrade, dpkg will offer a new lvm.conf that drops this filter; keep the old file (D at the conffile prompt). Reviewed during the 2026-04 PVE 9 upgrade.
/etc/pve/lxc/100.conf (GPU passthrough block)¶
lxc.cgroup2.devices.allow: c 195:* rwm
lxc.cgroup2.devices.allow: c 234:* rwm
lxc.cgroup2.devices.allow: c 237:* rwm
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-caps/nvidia-cap1 dev/nvidia-caps/nvidia-cap1 none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-caps/nvidia-cap2 dev/nvidia-caps/nvidia-cap2 none bind,optional,create=file
See Plex — GPU passthrough for the warning about dynamic major numbers — the 234/237 values shift whenever the Nvidia kernel module is rebuilt.
/etc/modprobe.d/zfs.conf¶
See Storage — ZFS ARC cap for the value reference table.
/etc/modprobe.d/blacklist-nouveau.conf¶
Required to prevent the open-source Nouveau driver from conflicting with the proprietary Nvidia driver used for GPU passthrough to the Plex LXC.
/etc/nut¶
Network UPS Tools configuration for the CyberPower PR1500ERT2U UPS. All files are owned root:nut with mode 640 (they contain monitoring credentials and must not be world-readable).
/etc/nut/nut.conf¶
/etc/nut/ups.conf¶
[cyberpower]
driver = usbhid-ups
port = auto
vendorid = 0764
productid = 0601
desc = "CyberPower PR1500ERT2U"
/etc/nut/upsd.conf¶
Loopback only — there are no NUT clients on other hosts. See UPS — guest shutdown behaviour.
/etc/nut/upsd.users¶
[upsmon]
password = <REDACTED>
upsmon master
[admin]
password = <REDACTED>
actions = SET
instcmds = ALL
The upsmon user is consumed by the local upsmon daemon. The admin user is used for interactive upsrw / upscmd calls.
/etc/nut/upsmon.conf (relevant lines)¶
MONITOR cyberpower@localhost 1 upsmon <REDACTED> master
SHUTDOWNCMD "/sbin/shutdown -h +0"
POWERDOWNFLAG /etc/killpower
Note
The /etc/nut/*.conf files are not in vzdump — they live on the Proxmox host filesystem, so they must be captured alongside the other host configs in the Boot Drive Swap runbook before any OS reinstall. After a fresh Proxmox install, apt install nut and restore these files, then systemctl enable --now nut-server nut-monitor.
UDM-Pro port forwards¶
Tracked here manually since the UDM has no Ansible automation in this homelab. Configured via UDM controller → Settings → Security → Port Forwarding.
| Name | WAN port | Protocol | Forward IP | Forward port | Phase | Purpose |
|---|---|---|---|---|---|---|
| matrix-rtc-ice-tcp | 7881 | TCP | 192.168.1.243 | 7881 | 6E.4 | LiveKit ICE TCP |
| matrix-rtc-ice-udp-mux | 7882 | UDP | 192.168.1.243 | 7882 | 6E.4 | LiveKit ICE UDP-mux |
| matrix-rtc-turn-udp | 3479 | UDP | 192.168.1.243 | 3479 | 6E.4 | LiveKit TURN UDP (port shifted from default 3478 to avoid Coturn collision) |
| matrix-rtc-turn-tcp | 5350 | TCP | 192.168.1.243 | 5350 | 6E.4 | LiveKit TURN-TLS (port shifted from default 5349 to avoid Coturn collision) |
| matrix-rtc-turn-relay | 30000-30020 | UDP | 192.168.1.243 | 30000-30020 | 6E.4 | LiveKit relay range (21 ports) for Element Call group calls |
(Plus the pre-existing forwards for the four *.rampancy.cloud hostnames going to CT 107 edge Caddy: TCP 80 + 443. Those are tracked in edge-cutover runbook.)
These bypass edge CrowdSec — see accepted-risks: MatrixRTC port-forwards.