Proxmox Helper Scripts
Overview
The Proxmox VE Community Scripts project maintains a collection of open-source helper scripts for common Proxmox tasks. This chapter covers the four scripts relevant to a fresh node setup. All scripts are interactive — they use a terminal menu to walk you through each option. Run them in the order listed below.
Of the four scripts here, post-install and kernel-clean are the ones that matter on day one. Microcode is worth doing but the impact is invisible until you hit a specific CPU bug. Kernel-pin is the one people skip and then regret — usually three months later when an upgrade silently removes the kernel they were running and they come back after a reboot to a different kernel version than expected.
1 — Post-Install
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pve-install.sh)"
Cleans up the default Proxmox installation and configures repositories correctly for a no-subscription setup. The script presents a series of prompts — below is what each one does and what to select.
| Prompt | Recommended | What it does |
|---|---|---|
| Correct Proxmox VE sources | Yes | Fixes /etc/apt/sources.list to use the correct Debian Trixie mirrors |
| Disable pve-enterprise repository | Yes | Removes the enterprise repo that requires a paid subscription — without disabling it, apt update throws authentication errors |
| Enable pve-no-subscription repository | Yes | Adds the free tier repo — this is what we configured manually in chapter 2; the script ensures it is correctly set up in deb822 format |
| Correct Ceph package repositories | Yes | Adds the Ceph no-subscription repo and disables the enterprise one — same reasoning as above |
| Add pvetest repository | No | Adds the testing/unstable channel in a disabled state — leave off unless you specifically need pre-release packages |
| Disable subscription nag | Yes | Removes the “No valid subscription” popup that appears every time you log into the web interface |
| Disable high availability | Yes — single node only | Stops and disables the HA manager services (pve-ha-lrm, pve-ha-crm, corosync). Only disable this if you are running a single node. These services are required for cluster communication and quorum — if you plan to expand to a multi-node cluster at any point, select No to keep them running. Disabling HA on a node that later joins a cluster will cause cluster communication failures that require manual recovery. |
| Update Proxmox VE | Yes | Runs apt-get full-upgrade — do this here to pick up any updates from the newly corrected repos |
| Reboot | Yes | Reboots to apply all changes cleanly |
2 — Processor Microcode
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/microcode.sh)"
Installs CPU microcode updates for Intel or AMD processors. Microcode is firmware that runs inside the CPU itself — updates fix security vulnerabilities (Spectre, MDS, etc.) and stability bugs without replacing the physical chip. The running microcode revision is loaded by the kernel at boot from the installed package.
The script:
- Detects your CPU vendor automatically (Intel or AMD)
- Shows the currently loaded microcode revision
- Fetches available microcode packages directly from Debian’s non-free-firmware repository
- Presents a selection list — choose the latest version (highest version number)
- Downloads and installs the selected package
A reboot is required after installation for the new microcode to load.
3 — Kernel Pin
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/kernel-pin.sh)"
Pins a specific Proxmox kernel version to prevent it from being automatically removed during apt full-upgrade. Without pinning, a kernel upgrade can remove the currently running kernel, leaving the system in an inconsistent state until the next reboot — or worse, booting into a kernel that has not been tested with your configuration.
The script:
- Lists all installed Proxmox kernels
- Prompts you to select one via a radio list — select the kernel you are currently running (run
uname -rto confirm before starting) - Calls
proxmox-boot-tool kernel pinto mark it
To unpin later, run the script again and cancel the selection — it will unpin all pinned kernels automatically. Worth doing before a planned major upgrade so the new kernel can be tested before pinning it in turn.
A reboot is required after pinning for the boot tool to sync the EFI entries.
4 — Kernel Clean
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/kernel-clean.sh)"
Lists all installed Proxmox kernel packages that are not currently running and lets you select which to remove. Old kernels accumulate with each upgrade and consume disk space — on a server with a modest /boot partition this can eventually block new kernel installs.
Run this after kernel-pin to avoid accidentally removing a kernel you intended to keep.
The script:
- Shows the currently running kernel
- Lists all other installed kernels with index numbers
- Prompts for a comma-separated list of indices to remove (e.g.
1,2) - Asks for confirmation before removing anything
- Runs
apt-get autoremoveandupdate-grubafter removal
If only one kernel is installed, the script exits immediately with no action.
No comments to display
No comments to display