Uninstall Optimizations

Settings post-install Proxmox

Reverse any change made by the Automated or Customizable post-install scripts. ProxMenux keeps a registry of every optimization it applied and has a dedicated reversal function for each one — pick which to revert, and the host goes back.

Why this exists

Every tweak the post-install scripts apply is tracked in a JSON registry at /usr/local/share/proxmenux/installed_tools.json. That registry is what powers the uninstall flow — it shows you the list of optimizations currently applied, and a reversal function that restores the original state for each one (from backup files where possible, or by reinstalling the affected packages).

How to open it

From ProxMenux's main menu, Settings post-install Proxmox → Uninstall optimizations. You will see a checklist of currently applied optimizations — items you have not applied don't show up.

Uninstall Optimizations checklist showing items currently applied on the host, with checkboxes to select which to revert

How the reversal works

Step 1

Registry and auto-detection

On first run, ProxMenux walks the host looking for fingerprint files (e.g. /etc/sysctl.d/99-memory.conf, /etc/apt/apt.conf.d/99-force-ipv4, haveged package installed, Log2RAM service active…). Anything found is added to the registry as reversible, even if it was applied by an older ProxMenux version that predates the registry.

This migration only runs once. After that, every apply/revert updates the registry directly.

Step 2

Pick what to revert

The checklist shows a human-readable label per item (e.g. Memory Settings Optimization, IOMMU/VFIO PCI Passthrough, Log2RAM (SSD Protection)). Tick the ones you want to reverse. Nothing you don't tick will be touched.

Step 3

Reversal runs

For each selected item, ProxMenux calls its matching uninstall function. Most reversals follow one of three patterns:

  • Backup-based — restore a .bak captured at apply time (bashrc, logrotate.conf, journald.conf, GRUB/kernel cmdline).
  • Delete-the-config — remove ProxMenux's /etc/sysctl.d/99-*.conf, /etc/apt/apt.conf.d/99-*, or systemd unit, then reload.
  • Package reinstall — for UI changes like the subscription banner, reinstall the upstream packages with --force-confnew to restore shipped configuration.

Each reversal logs its progress. Items that require a reboot (VFIO, persistent interface names) set a flag that triggers the reboot prompt at the end.

Step 4

Reboot if needed

If any reversed item modified kernel parameters, kernel modules, or network naming, you'll be offered a reboot. Otherwise the changes are live immediately.

What is reversible

Every optimization the post-install scripts apply has a matching uninstaller. Grouped here by area:

Repositories & APT

Subscription Banner Removal
Reinstalls pve-manager, proxmox-widget-toolkit, libjs-extjs and libpve-http-server-perl with force-confnew to restore the original UI files. Also clears cached .js / .gz copies.
APT Language Skip
Removes /etc/apt/apt.conf.d/99-disable-translations. APT will download language packages again.
APT IPv4 Force
Removes /etc/apt/apt.conf.d/99-force-ipv4.

Kernel, memory and system limits

Memory Settings
Removes /etc/sysctl.d/99-memory.conf and reloads sysctl.
Kernel Panic Configuration
Removes /etc/sysctl.d/99-kernelpanic.conf.
System Limits Increase
Removes /etc/sysctl.d/99-maxwatches.conf, 99-maxkeys.conf, 99-swap.conf, 99-fs.conf and /etc/security/limits.d/99-limits.conf. Reverts PAM limits and systemd DefaultLimitNOFILE.

Networking

Network Optimizations
Removes /etc/sysctl.d/99-network.conf and the proxmenux-fwbr-tune.service unit. Reloads sysctl and systemd.
Persistent Interface Names
Removes every .link file from /etc/systemd/network/. Interface names return to systemd's default behaviour on next reboot.

Logging

Journald Optimization
Rewrites /etc/systemd/journald.conf with vanilla defaults and restarts systemd-journald.
Logrotate Optimization
Restores /etc/logrotate.conf from the .bak file captured before the change.
Log2RAM
Stops and disables the service and timer. Purges cron jobs, systemd units, binaries, config files and the /var/log.hdd directory. Also uninstalls the apt package if it was installed that way.
ZFS autotrim
Reads /usr/local/share/proxmenux/zfs_autotrim_pools (the list of pools ProxMenux actually changed) and runs zpool set autotrim=off on each one. Pools you set autotrim on manually before ProxMenux ran are not touched.

Shell & appearance

Bashrc Customization
Restores /root/.bashrc from the .bak backup. If no backup exists, removes the PMX_CORE_BASHRC block by markers.
Fastfetch
Removes the binary, config directory, update-motd hook and the bashrc block. Purges the apt package if installed.
Figurine
Removes the binary, profile.d entry and the alias block in bashrc/profile.

Hardware & virtualization

IOMMU / VFIO
Removes vfio modules from /etc/modules, the nouveau / radeon / nvidia blacklist entries, and intel_iommu=on / amd_iommu=on / iommu=pt / pcie_acs_override parameters from /etc/kernel/cmdline (ZFS) or GRUB. Rebuilds initramfs.
AMD CPU fixes (Ryzen/EPYC)
Removes idle=nomwait from kernel cmdline (ZFS) or GRUB, and the ignore_msrs / report_ignored_msrs options from /etc/modprobe.d/kvm.conf.

Services & extras

Time Synchronization
Sets timezone back to UTC (safe default) via timedatectl.
Entropy Generation (haveged)
Stops, disables and purges the haveged package.
kexec (fast reboots)
Disables kexec-pve.service, removes the unit file and the reboot-quick alias, purges kexec-tools.

Edge cases and caveats

Package reinstall touches live Proxmox packages

Reverting Subscription Banner Removal reinstalls pve-manager, proxmox-widget-toolkit, libjs-extjs and libpve-http-server-perl with --force-confnew. This is generally safe but does touch the running web UI — refresh your browser afterwards, and expect a few seconds of reconnection. Don't run this in the middle of a migration or clone operation.

Persistent names and VFIO need a reboot

Removing the .link files (Persistent Interface Names) and reverting IOMMU/VFIO do not affect the running system — they only matter after a reboot. ProxMenux sets the reboot flag automatically for these.

You can revert one thing and keep the rest

The uninstaller operates per-item. If you only want to remove Log2RAM but keep the network tuning and bashrc changes, tick only Log2RAM. Nothing else is touched, and the registry is updated accordingly.

Inspecting the registry manually

If you want to see what's tracked without opening the menu:

cat /usr/local/share/proxmenux/installed_tools.json | jq

Each "tool": true entry corresponds to something ProxMenux applied and can reverse. Removing an entry manually is not recommended — always use the menu, which also runs the reversal function instead of just forgetting the change.

Reinstall after uninstall

Reverting an optimization doesn't prevent you from re-applying it later. Open the Post-Install menu again and run either Automated or Customizable — the registry will track the new state.

Related