My homelab runs on a single Proxmox server: the firewall, DNS, my reverse proxy, time tracking, home automation, all on one box. While setting up Traefik, I realised that box was still on Proxmox VE 8, which reached end of life in August 2026. So I upgraded it in place to Proxmox VE 9.2.
The full step-by-step, with every command, is in the Proxmox section: Upgrading My Homelab from Proxmox VE 8 to 9. This post is about the lessons, which apply well beyond Proxmox.
1. A backup isn’t proven until you restore it
Backing up everything took 40 minutes and ended with a reassuring TASK OK. But that only proves the backup was written. So I restored the one I cared about most to a spare slot, confirmed it came back, and deleted the copy. Only then did I trust the backups. Where they live matters too: a backup on the same disk as the originals protects against very little.
2. Let the checker write the plan
Proxmox ships a pre-upgrade checker that only reports problems and changes nothing. Mine found one real issue I’d never have spotted: an old line in /etc/hosts pointing the server’s name at an address it no longer had. It had caused no trouble so far, but it could have stopped the system from coming up properly after the upgrade. Running the checker before and after turned a vague “upgrade the server” into a short, concrete to-do list.
3. Don’t type at the console if you can avoid it
The upgrade can briefly drop the server’s network, so the textbook advice is to run it from a physical keyboard and monitor. I didn’t want to retype long commands with no copy-paste. The middle path: run it over SSH inside tmux, a tool that keeps the session alive on the server even if the connection drops. I also saved the long commands on the server as a script beforehand, and kept the keyboard plugged in as a backup.
4. Between the upgrade and the reboot, things get weird
After the packages installed, two services failed to restart with alarming errors. The cause: the new software was on disk, but the old system manager (systemd) keeps running until you reboot, and the new services couldn’t talk to it. The configs were fine, and the reboot fixed both. The general lesson: in that in-between window, read the logs before panicking. A failure can be about timing, not about anything being broken.
5. Paste one command at a time
My one real mistake: I accidentally pasted my own notes (the list of answers for the upgrade’s prompts) into the terminal while it was busy. When the upgrade finished, the shell tried to run each line as a command and printed a wall of command not found. Nothing was harmed, but I spent a few minutes proving that. Copying one line at a time costs seconds.
How it ended
Zero warnings, zero failures, every guest back up, and every service reachable by its usual hostname. The full walkthrough, including the exact commands, the prompt answers and the rescue notes I prepared but didn’t need, is here: Upgrading My Homelab from Proxmox VE 9 to 9.