Post

Tuning a fresh Proxmox install with ProxMenux: a homelab walkthrough

I installed ProxMenux on my AMD Ryzen 7 5800H mini-PC running Proxmox VE 9.1.1 and walked through every numbered option, picking only the ones that actually matter for a single-node homelab. Here's exactly what I ran, what I skipped, and why.

Tuning a fresh Proxmox install with ProxMenux: a homelab walkthrough

After standing up a fresh Proxmox VE 9.1.1 install on my mini-PC, I had two annoyances staring at me from the web UI: a yellow warning that the Enterprise repository needed a valid subscription, and the “no valid subscription” popup that greets you on every login. Plus the usual question every Proxmox user faces on day one — what should I tweak before I start running VMs and containers on this thing?

I’d seen ProxMenux (by MacRimi) recommended in a few homelab forums. It’s a menu-driven post-install script that wraps a curated set of Proxmox tweaks behind a friendly TUI, organized into numbered options. Perfect — except that it has a lot of options, and most write-ups about it just dump the full list at you without any opinion on what to actually run. I wanted a shorter list: only the things that genuinely help a single-node homelab on AMD hardware, skipping anything cluster-related, anything purely cosmetic, and anything with no real impact.

This post is that shorter list, with the reasoning behind each pick.

TL;DR — On a single-node homelab running PVE 9.1.1, I ran options 1, 2, 3, 4, 7, 8, 10, 13, 14, 17, 20, 23, 28, 31 from the ProxMenux Customizable Post-Install Script. I skipped options 5, 6, 9, 11, 12, 15, 16, 18, 19, 21, 22, 24, 25, 26, 27, 29, 30, 32, 33. The single most important one was option 4 (Update and upgrade system) — it switches your repos from Enterprise to no-subscription and resolves the apt-get errors most people see on a fresh install.

The hardware I was tuning

Before I get into the menu, here’s the box I was working with. This matters — a few of ProxMenux’s options are written for enterprise setups (Ceph, HA clustering) or for hardware I don’t have (Intel iGPUs, low-RAM systems), so the right answer for “should I run this?” depends heavily on what you’ve got.

SpecValue
Hostnamepm1
Proxmox VE version9.1.1 (pve-manager/9.1.1/42db4a6cf33dac83)
KernelLinux 6.17.2-1-pve (2025-10-21)
Boot modeEFI
CPUAMD Ryzen 7 5800H with Radeon Graphics (16 threads, 1 socket)
RAM59.77 GiB
Storage~1.76 TiB total
Repository statusEnterprise enabled, no valid subscription

That’s a Cezanne-class APU (Zen 3), 64 GB of RAM, and a couple TB of local storage — a fairly typical “mini-PC homelab” loadout. Headless, on 24/7, single node, no cluster ambitions.

pm1 Proxmox summary screen showing the hardware specs above and the "Enterprise repository needs valid subscription" warning The starting state — note the yellow “Enterprise repository needs valid subscription” warning on the right.

The yellow warning at the bottom right of that screenshot is exactly what we’re going to fix first.

Installing ProxMenux

Installation is a single command, run as root from the Proxmox shell:

1
bash -c "$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)"

After it finishes, you launch the menu by typing:

1
menu

You’ll get a top-level menu. The one we care about is Post-Install Settings for Proxmox → Customizable Post-Install Script, which is where the numbered options live.

ProxMenux is community software — it’s not endorsed by Proxmox themselves, and the install method is the classic wget | bash pattern. If you’re paranoid (and you should be a little paranoid), download the script first, read it, then run it. The project is GPL-3.0 and actively maintained, but caveat installator.

How I decided what to run and what to skip

Before clicking anything, I had Claude do a deep-dive on ProxMenux’s docs and changelog and tell me which options were actually worth running for my specific situation. The rules I gave were straightforward:

  • Skip cluster and enterprise stuff — I have one node, so anything that exists for Ceph, HA, or multi-node clustering is just dead weight.
  • Skip cosmetic changes — I don’t need a custom MOTD or an ASCII-art banner.
  • Skip things with no measurable impact — if a tweak only matters in some narrow edge case I don’t have, skip it.
  • Include things with trade-offs — but be explicit about what the trade-off is.

What follows is the result, walked through in the order ProxMenux numbers them.

The Customizable Post-Install Script: what I selected

When you open the script, you get a checkbox-style multi-select menu. You space-bar to toggle each option, then hit Enter to run all the selected ones in sequence. Here’s the first page of the menu:

ProxMenux Customizable Post-Install Script options 1 through 12, showing Basic Settings, System, and Virtualization categories Options 1–12: Basic Settings, System, Virtualization.

Basic Settings (1–4): all four, no exceptions

These four options were the easiest call of the entire run:

  • 1. Install common system utilities — multi-select sub-menu of CLI tools (more on this below). Useful, low-risk.
  • 2. Skip downloading additional languages — adds Acquire::Languages "none"; to APT config. Faster updates, smaller downloads. The trade-off is that you lose translated package descriptions, which I never read anyway.
  • 3. Synchronize time automatically — sets timezone (optionally via IP geolocation) and configures chrony. The geolocation lookup hits ipapi.co, which is a minor privacy footnote but nothing dramatic.
  • 4. Update and upgrade systemthis is the one that matters most. It comments out pve-enterprise.list and ceph.list, adds the pve-no-subscription repo, configures Debian’s main/contrib/non-free/non-free-firmware/security sources, and runs apt dist-upgrade. This is the option that resolves the “Enterprise repository needs valid subscription” warning and the failing apt-get update errors visible in the task log on a fresh install.

If you only run one option, run option 4.

System (5–10): only the tuning, none of the boot-risky stuff

This category is mixed — some genuinely useful tuning, some options with surprising downsides.

  • 5. Enable fast rebootsskipped. Marginal benefit on a server that reboots maybe once a month after a kernel update.
  • 6. Enable restart on kernel panicskipped. Sounds nice, but on a homelab where I have direct console access, an automatic reboot loop on a persistent failure is worse than just letting the machine sit there and tell me what went wrong.
  • 7. Increase various system limitsselected. Bumps inotify, file descriptor limits (nofile), and similar. Stops “too many open files” errors when you have a bunch of containers and VMs running simultaneously.
  • 8. Optimize journaldselected. Caps journal size so logs don’t slowly eat your root partition. Especially important on SSDs/NVMe, where unbounded journal growth is a real wear concern.
  • 9. Optimize logrotateskipped. Minor improvement that overlaps with what option 8 already does.
  • 10. Optimize Memoryselected. Tunes vm.swappiness and similar memory-management knobs. Sensible defaults for a system with 60 GiB of RAM.

Virtualization (11–12): conditional and a misleading one

  • 11. Enable VFIO IOMMU supportskipped, but only because I’m not doing PCIe passthrough yet. If you plan to pass through a GPU, NIC, or other PCIe device to a VM, you want this. For my AMD CPU it adds amd_iommu=on and the four VFIO modules. Caveat for EFI installs: ProxMenux writes to /etc/default/grub, but PVE 9 EFI installs commonly use systemd-boot via proxmox-boot-tool, in which case GRUB edits are silently inert. After running, verify with cat /proc/cmdline that amd_iommu=on actually shows up; if not, you’ll need to add it to /etc/kernel/cmdline and run proxmox-boot-tool refresh manually.
  • 12. Install relevant guest agentskipped. This one’s misleading. It installs qemu-guest-agent on the Proxmox host itself, which only matters if Proxmox is running nested inside another hypervisor. The guest agent belongs inside your VMs, not on the host. I’m bare-metal, so this option does nothing useful for me.

Network (13–17): three out of five

ProxMenux options 13 through 23, showing Network, Storage, Security, and Customization categories Options 13–23: Network, Storage, Security, Customization.

  • 13. Apply network optimizationsselected. Writes /etc/sysctl.d/99-network-performance.conf with sane buffer sizes, conntrack scaling, and security hardening (rp_filter=1, accept_redirects=0, etc.). ProxMenux’s recent releases dropped obsolete params like tcp_tw_recycle for kernel 6.14+ compatibility, so kernel 6.17.2 accepts the current set cleanly.
  • 14. Enable TCP BBR/Fast Open controlselected. Sets the queueing discipline to fq and the congestion control to tcp_bbr, plus enables TCP Fast Open. Real-world win for any internet-facing VM (including stuff like a Tailscale relay or a self-hosted reverse proxy). Safe on modern kernels.
  • 15. Force APT to use IPv4skipped. Only useful if you’re hitting slow APT pulls over IPv6, which I’m not.
  • 16. Install Open vSwitchskipped. A single-node homelab with one Linux bridge gets nothing from OVS; it just adds complexity to your network stack. The default vmbr0 bridge is the right tool here.
  • 17. Interface Names (persistent)selected. Pins your NIC name (e.g., enp2s0) to its MAC address using a .link file. Worth doing before you ever add a second NIC or do PCI passthrough — it prevents your interface from silently renaming itself when hardware changes.

Storage (18–20): just the ZFS one (if you have ZFS)

  • 18. Increase vzdump backup speedskipped. Only matters if you’ll run scheduled VM backups, which I’ll set up later when I actually have VMs.
  • 19. Install ZFS auto-snapshotskipped. The community consensus is that cv4pve-autosnap is a better tool — it handles fsfreeze for guests and shows up in the PVE UI, neither of which zfs-auto-snapshot does.
  • 20. Optimize ZFS ARC sizeselected, conditionally. Only run this if you’re actually using ZFS. With 60 GiB of RAM, I want the ARC capped at something reasonable like 8–12 GiB instead of the default 50% of RAM. If you installed PVE on ext4 or LVM, skip this option entirely.

Security (21): conditional, and easy to misuse

  • 21. Disable portmapper/rpcbindskipped. Only run this if you don’t serve NFS from the host. rpcbind is required for NFS server functionality. I want the option of mounting an NFS share later, so I’m leaving it alone. If your host is purely a hypervisor and never an NFS server, you can disable it for a slight attack-surface reduction.

Customization (22–24): one with a known footgun

  • 22. Customize bashrcskipped. Pure cosmetic. If you like a fancier shell prompt, run it; I don’t care.
  • 23. Remove subscription bannerselected, with eyes open. This is the option that kills the “no valid subscription” popup on every login. ProxMenux patches proxmoxlib.js and registers an APT DPkg::Post-Invoke hook so updates re-apply the patch. The known failure mode: when proxmox-widget-toolkit shipped a 5.0.5 → 5.0.6 update a while back, it broke the web UI on patched nodes (you’d get a “Failed to load /PVE/StdWorkspace.js” error). ProxMenux’s recent versions use a safer patching method and ship a Restore Banner uninstall option for exactly this scenario. If your GUI ever fails to load after a Proxmox point update, your first move is to SSH in and run that uninstall option.
  • 24. Set up custom MOTD bannerskipped. Cosmetic.

Monitoring & Performance (25–26): both situational

ProxMenux options 23 through 33, showing the remaining Customization, Monitoring, Performance, and Optional entries Options 23–33: the rest of the menu, including the Optional category.

  • 25. Install OVH Real Time Monitoringskipped. Specific to OVH-hosted servers; not relevant for a home network.
  • 26. Use pigz for faster gzip compressionskipped. Marginal speedup on backup compression. Not zero benefit, but negligible enough that I didn’t bother.

Optional (27–33): one cluster-killer, one CPU win, one wear-saver

  • 27. Add latest Ceph supportskipped. Cluster-only storage. Irrelevant on a single node.
  • 28. Apply AMD CPU fixesselected. Adds AMD-specific kernel parameters (idle=nomwait, kvm.ignore_msrs=1) that reduce some weird KVM warning spam and improve idle behavior on Zen-architecture CPUs. Perfect for the 5800H.
  • 29. Enable High Availability servicesskipped, and you should actively skip this on a single node. The HA stack (corosync, pve-ha-lrm, pve-ha-crm) burns CPU and floods your logs with quorum-related warnings when there’s no cluster to be high-availability for. Leave it off.
  • 30. Install and configure Fastfetchskipped. Cosmetic — pretty system-info display at login.
  • 31. Install and configure Log2RAMselected. Mounts /var/log in RAM and syncs to disk periodically. Reduces SSD/NVMe write wear from constant log churn. Caveat: there’s an open GitHub discussion (#107) where a verbose service filled the RAM ring, which then filled the rootfs as it sync’d; ProxMenux’s recent journald sizing (option 8 above) mitigates this by capping log volume in the first place. The two pair well — I ran them together.
  • 32. Install Figurineskipped. Cosmetic ASCII-art hostname banner at SSH login.
  • 33. Update Proxmox VE Appliance Managerskipped. Situational; only relevant if you’re using PVE’s appliance manager features.

My final selection

Here’s what I had checked when I hit Enter:

Run: 1, 2, 3, 4, 7, 8, 10, 13, 14, 17, 20, 23, 28, 31

Skip: 5, 6, 9, 11, 12, 15, 16, 18, 19, 21, 22, 24, 25, 26, 27, 29, 30, 32, 33

That’s 14 of 33 options — a touch under half the script.

A detour into option 1: which utilities to install

Option 1 — “Install common system utilities” — opens its own multi-select sub-menu where you pick which CLI tools to install. Some of these are obviously useful, some are situational, and some are misleading on AMD hardware.

ProxMenux utility selection menu, page 1, showing axel through msr-tools Utility selection, first page.

ProxMenux utility selection menu, page 2, showing iptraf-ng through chntpw Utility selection, second page.

Here’s what I picked from the list, and what I left behind.

Selected:

  • htop — better-looking process viewer than top. The default for anyone who’s used Linux for more than a week.
  • iotop — disk I/O monitoring per process. Indispensable when you’re trying to figure out which VM is hammering your storage.
  • iftop — real-time per-connection network usage.
  • iperf3 — network bandwidth testing between hosts and VMs. I use this constantly when bringing up new VLANs.
  • ipset — needed if you ever use Proxmox firewall rules with IP lists.
  • iptraf-ng — network monitoring with a nicer UI than iftop for some workflows.
  • plocate — fast locate replacement. locate filename is the laziest way to find a file you misplaced.
  • net-tools — gives you the legacy ifconfig, netstat, route, etc. They’re “deprecated” in favor of ip and ss, but old habits.
  • tmux — terminal multiplexer. If you ever SSH in to do something that takes more than 30 seconds, you want tmux so a dropped connection doesn’t kill your session.
  • unzip + zip — basic archive handling.
  • libguestfs-tools — lets you inspect and modify VM disk images from the host. Useful for “I need to recover a file from a VM that won’t boot” scenarios.
  • dos2unix — handy when dealing with files copied from Windows VMs.
  • grc — colorizes the output of common commands (logs, traceroute, ping). Makes log-skimming faster.
  • msr-tools — tools for reading and writing CPU MSRs. ProxMenux’s option 28 (AMD CPU fixes) wants this.

Skipped:

  • axel and aria2 — download accelerators. I never need to download anything fast enough for these to matter.
  • btop — modern resource monitor. Picked htop instead since I don’t need both.
  • intel-gpu-tools — would be useful for an Intel iGPU. I have an AMD Radeon iGPU, so this package is meaningless on my hardware.
  • s-tui — stress-testing UI. Niche use case.
  • sshpass — non-interactive SSH password authentication. I use SSH keys, so this is mostly irrelevant (and discouraged for security reasons).
  • cabextract, wimtools, chntpw, genisoimage — all Windows-VM-related utilities (CAB extraction, WIM image manipulation, Windows registry editing, ISO creation). Useful if you build or repair Windows VMs from the Proxmox host. I don’t, so I left them out.

If you want a “just give me the safe defaults” pick: htop, iotop, iftop, iperf3, ipset, iptraf-ng, plocate, net-tools, tmux, unzip, zip, libguestfs-tools, dos2unix, grc, msr-tools.

Running the script

Once everything was selected, hitting Enter kicked off the run. ProxMenux processes selected options sequentially, with progress feedback for each. Total runtime was a few minutes — most of that was the apt dist-upgrade from option 4 pulling down the differences between the Enterprise and no-subscription repos.

Things to expect during the run:

  • Option 4 will likely prompt you a couple of times during the upgrade for things like “keep or replace /etc/sysctl.conf?” — keep the local version unless you have a reason not to.
  • Option 23 (banner removal) takes effect after a hard refresh of the web UI (Ctrl-Shift-R in the browser).
  • A reboot is recommended after the run — both for kernel updates from option 4 and to let Log2RAM (option 31) properly initialize.

After the reboot, the web UI’s yellow subscription warning was gone, the login popup was gone, apt update ran clean, and the system was tuned and ready for VMs.

What I’d actually verify after the run

A few quick sanity checks I ran after rebooting:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Confirm the Enterprise repo is disabled and no-subscription is active
cat /etc/apt/sources.list.d/*.list

# Confirm apt update has no errors
apt update

# Check that Log2RAM is mounted
df -h /var/log
# /var/log should show as a tmpfs mount

# Check that journald is size-capped
journalctl --disk-usage

# Verify NIC name is now persistent
cat /etc/systemd/network/*.link

# (If you ran option 11 IOMMU): confirm it's in the live kernel cmdline
cat /proc/cmdline | grep amd_iommu

If any of these come back unexpected — especially apt update still erroring, or /proc/cmdline not showing your IOMMU flag despite running option 11 on an EFI install — that’s where to start troubleshooting.

What I didn’t run, and what I might run later

A few options I deliberately deferred rather than rejected:

  • Option 11 (IOMMU/VFIO) — I’ll run this when I’m ready to do PCIe passthrough, which I’ll cover in a separate post. The verification step on EFI/systemd-boot installs is fiddly enough that I want to do it deliberately rather than as part of a batch.
  • Option 18 (vzdump backup speed) — I’ll enable this when I actually have scheduled backups configured. No point optimizing speed for a workload that doesn’t exist yet.

And a few that I’m confident I’ll never run on this box:

  • Options 27, 29 (Ceph and HA) — single-node, never will be a cluster.
  • Options 22, 24, 30, 32 — cosmetic, not my taste.
  • Option 16 (Open vSwitch) — overkill for one bridge.

Closing thoughts

ProxMenux is a solid tool, but its menu is structured like a buffet — everything is laid out in front of you with very little opinion on what belongs on your plate. For a homelab user who’s seen a Proxmox install screen for the first time, that’s overwhelming. The right framing, for me, was treating the script as a menu of optional tweaks rather than a checklist to complete. Skip anything cluster-related, skip anything cosmetic, skip anything that solves a problem you don’t have, and you end up with a pretty short list of high-value options.

The single biggest win was option 4 — switching to the no-subscription repo and getting apt update working clean. Everything else was incremental. The next time I do a fresh Proxmox install, this is the exact list I’ll come back to.

If you’ve run a different selection or have strong opinions on the ones I skipped, I’d love to hear about it. The whole point of writing this down was to have a baseline to push back on.

Special thanks to Claude (Anthropic) for the deep research on each ProxMenux option — going through every numbered entry against the docs, changelog, and known issues, and helping me build the actual selection list above. The recommendations and the writing are mine; the patient cross-referencing was the AI’s.

Notes

A quick note

This blog is a hobby project, and I’m not an expert on the topics I write about — just someone who enjoys learning in public and sharing what I find along the way. That means I’ll sometimes get things wrong, oversimplify, or miss nuance, and I’d genuinely love to hear about it.

If you have thoughts, corrections, questions, or just want to chat about this post, please join the conversation over on GitHub Discussions.

All friendly perspectives are welcome — I’m here to learn.

🤖 AI Generated Content

Last updated: [Saturday, 9th May 2026].

This post is licensed under CC BY 4.0 by the author.