{
"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": "."
}
]
}
}