{ "meta": { "title": "Automated Post-Install Script | ProxMenux Documentation", "description": "The ProxMenux Automated post-install script applies a curated set of 14 safe, hardware-aware optimizations to a fresh Proxmox VE host with zero prompts. Reversible configuration changes are registered for later restoration.", "ogTitle": "Automated Post-Install Script | ProxMenux Documentation", "ogDescription": "14 curated optimizations applied to a fresh Proxmox VE host with zero prompts. Hardware-aware, with reversible configuration changes tracked." }, "header": { "title": "Automated Post-Install Script", "description": "One click, zero prompts — ProxMenux applies a curated set of 14 safe optimizations that almost every Proxmox host benefits from. Reversible configuration changes are registered for Uninstall Optimizations; package upgrades are not described as reversible.", "section": "Post-Install · Automated" }, "intro": { "title": "When to pick Automated", "body": "Run this on a freshly installed Proxmox host when you want the sensible baseline without making decisions. The script is idempotent — running it twice is safe, it just re-applies the same configurations. Opt-in features (Fastfetch, IOMMU, Ceph repo, HA, AMD fixes…) are intentionally not part of this path; pick them from Customizable if you need them." }, "applies": { "heading": "What the script applies", "intro": "The optimizations are applied in this exact order. The Category column links to the detailed documentation of each change in the Customizable reference.", "headerNum": "#", "headerTool": "Tool", "headerWhat": "What it does", "headerCategory": "Category" }, "optimizations": [ { "tool": "APT repositories + full upgrade", "what": "Disables the enterprise pve-enterprise.sources and ceph.sources, writes a clean no-subscription source for the host's Debian codename, then runs apt update && apt full-upgrade -y (Proxmox's official upgrade command).", "category": "Basic Settings", "categorySlug": "basic-settings" }, { "tool": "Subscription banner removal", "what": "Patches the web UI to hide the 'No valid subscription' banner. Asks for confirmation before applying; reversible from Uninstall Optimizations.", "category": "Customization", "categorySlug": "customization" }, { "tool": "Force IPv4", "what": "Writes /etc/apt/apt.conf.d/99-force-ipv4 so apt uses IPv4 only — bypasses flaky IPv6 mirror setups.", "category": "Network", "categorySlug": "network" }, { "tool": "Skip language packages", "what": "Writes /etc/apt/apt.conf.d/99-disable-translations to stop downloading locale-specific packages. Faster, lighter apt updates.", "category": "Basic Settings", "categorySlug": "basic-settings" }, { "tool": "Increase system limits", "what": "Raises inotify watches, nofile/nproc limits, kernel keyring limits and fs.file-max across sysctl.d, limits.d, pam and systemd — high enough for container-heavy hosts.", "category": "System", "categorySlug": "system" }, { "tool": "Memory tuning", "what": "Sets vm.swappiness=10, balanced dirty ratios, vm.max_map_count=262144 and compaction proactiveness when supported. The kernel's memory-overcommit policy is left at the Proxmox default.", "category": "System", "categorySlug": "system" }, { "tool": "Kernel panic behaviour", "what": "Configures the host to reboot 10 seconds after a panic / oops / hardlockup instead of freezing indefinitely.", "category": "System", "categorySlug": "system" }, { "tool": "Network stack tuning", "what": "TCP buffer sizing, IPv4 hardening (redirects off, rp_filter=2, martian log off), local port range 1024-65535, TCP MTU probing, RFC 1337, plus a helper at /usr/local/sbin/proxmenux-fwbr-tune wired to a oneshot systemd unit and a udev rule, so rp_filter=0 / log_martians=0 are re-applied to fwbr*/fwln*/fwpr*/tap* interfaces every time Proxmox recreates them at VM start/stop, reboot or live migration.", "category": "Network", "categorySlug": "network" }, { "tool": "Bashrc customisation (root)", "what": "Colored PS1, common aliases (l/la/ll/ls/grep), timestamped history and bash-completion sourcing, all inside a PMX_CORE_BASHRC fenced block so it is easy to remove.", "category": "Customization", "categorySlug": "customization" }, { "tool": "Log2RAM (SSD-aware, auto)", "what": "Reduces SSD/NVMe wear by moving /var/log to a tmpfs ramdisk with periodic disk sync. Installed from the upstream project when the root disk is SSD or NVMe. Sizes the ramdisk by host RAM (128M / 256M / 512M), schedules periodic sync and an auto-sync guard that vacuums at 80% and truncates hot logs at 92% before writing. Adjusts journald limits to fit in the ramdisk. Full details on Log2RAM.", "category": "Storage", "categorySlug": "storage" }, { "tool": "ZFS autotrim (SSD-only)", "what": "Enables zpool autotrim=on on every ZFS pool whose vdevs are all SSD/NVMe with TRIM support (checks /sys/block/[dev]/queue/rotational and discard_granularity). Pools backed by HDDs are skipped automatically. Only pools actually changed by ProxMenux are recorded for uninstall — pools you set autotrim on manually are left alone.", "category": "Storage", "categorySlug": "storage" }, { "tool": "Journald size limits", "what": "Forces persistent storage, caps SystemMaxUse=64M / RuntimeMaxUse=60M, sets compression, info-level logging (required for the Monitor). Skipped automatically when Log2RAM is active (it does its own adjustment).", "category": "System", "categorySlug": "system" }, { "tool": "Logrotate tuning", "what": "Daily rotation with size cap 10M, 7 rotations, compression and copytruncate — Log2RAM-friendly.", "category": "System", "categorySlug": "system" }, { "tool": "Persistent interface names", "what": "Writes one /etc/systemd/network/10-proxmenux-<iface>.link per physical NIC (each starting with a 'Managed by ProxMenux' header) that pins the MAC to the current name, so eth0 / enp… names stay stable across reboots and new NIC additions.", "category": "Network", "categorySlug": "network" } ], "hardwareTitle": "Hardware-aware defaults", "hardwareBody": "The script reads the host hardware before applying settings. Log2RAM is only installed on SSD / NVMe root disks by default (it prompts if detection says otherwise). Log2RAM ramdisk size is picked from total RAM (≤ 8 GB → 128M, ≤ 16 GB → 256M, '>' 16 GB → 512M). The journald limits are matched to the ramdisk size when Log2RAM is active, to avoid filling it.", "upgrade": { "heading": "Update and upgrade system", "intro": "The very first step of the Automated bundle is the Proxmox upgrade. Proxmox's own upgrade guidance for a running host (within the same major version) is to run:", "after": "That single line is the official command on any current Proxmox release. The Automated script runs exactly that, and wraps it with the repo hygiene and post-upgrade cleanup the official upgrade guide also recommends — same steps as the standalone Proxmox System Update utility:", "items": [ "Disables the enterprise pve-enterprise.sources / ceph.sources, removes legacy repo files, writes a clean no-subscription source for the host's codename.", "Runs the upgrade non-interactively with DEBIAN_FRONTEND=noninteractive and --force-confdef --force-confold — config files you customised stay yours when upstream also changed them.", "Installs essential Proxmox packages if missing (zfsutils-linux, proxmox-backup-restore-image, chrony).", "LVM metadata sanity check, apt-get autoremove -y + apt-get autoclean -y, and a reboot prompt only if the kernel actually changed." ], "sameTitle": "Same updater, two entry points", "sameBody": "The Automated bundle and the standalone Proxmox System Update utility share the same underlying scripts (update-pve8.sh / update-pve9_2.sh). Use the utility on its own when you only want to upgrade the host without applying the rest of the optimizations." }, "endResult": { "heading": "Expected end result", "body": "When the script finishes, you will see a success message with the per-step output and a reboot prompt (some kernel settings require a restart to take effect). Declining the reboot is safe; the settings apply at the next boot.", "imageAlt": "Automated post-install script — final terminal output showing each optimization applied successfully" }, "notDoes": { "heading": "What this script does NOT do", "items": [ "Timezone auto-detection (commented out upstream; use Customizable if you want it).", "Disable portmapper / rpcbind (see Security).", "Enable IOMMU / VFIO (see Virtualization).", "Install Fastfetch / Figurine / Ceph repo / HA / AMD CPU fixes (see Optional).", "Install pigz or apply ZFS ARC tuning (see Performance / Storage)." ] }, "xshokTitle": "xshok-proxmox detection", "xshokBody": "If the host has previously run the xshok-proxmox script, ProxMenux detects the marker file and warns you before continuing. Some tweaks can overlap. The companion script is deprecated — if you decide to continue anyway, review the overview for context.", "revert": { "heading": "Reverting", "body": "Every tool in the table above registers itself in /usr/local/share/proxmenux/installed_tools.json. Open Uninstall Optimizations to pick individual items to revert. Backups of modified config files are placed next to the originals with a .bak suffix." }, "related": { "heading": "Related", "items": [ { "label": "Customizable Post-Install", "href": "/docs/post-install/customizable", "tail": " — pick exactly what you want from the same catalog." }, { "label": "Uninstall Optimizations", "href": "/docs/post-install/uninstall", "tail": " — revert any subset of what was applied here." }, { "label": "Useful System Commands", "href": "/docs/help-info/system-commands", "tail": " — verify the changes (uptime, free, journalctl, etc.)." }, { "label": "Post-Install overview", "href": "/docs/post-install", "tail": "." } ] } }