← All Guides
beginner

Proxmox Post-Install Checklist: 10 Things to Do Right After Installing

A practical checklist of everything to configure after a fresh Proxmox VE install — repos, updates, email alerts, storage, and more.

Budget Homelab ·
proxmoxvirtualizationself-hosting

Proxmox is working right after install, but the default configuration has a few rough edges that will bite you later if you don’t address them now. This is the checklist I run through every time I set up a new node.

If you haven’t installed Proxmox yet, start with the install guide first.

All commands below run in the Proxmox shell — either via SSH (ssh root@your-proxmox-ip) or through Node → Shell in the web UI.


1. Switch to the no-subscription repository

The enterprise repository (enabled by default) requires a paid subscription. Update attempts will fail with a 401 error until you switch.

# Disable enterprise repo
echo "# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list

# Add no-subscription repo
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

# Also handle the Ceph enterprise repo if present
if [ -f /etc/apt/sources.list.d/ceph.list ]; then
  sed -i 's|https://enterprise.proxmox.com/debian/ceph-quincy|http://download.proxmox.com/debian/ceph-quincy|' /etc/apt/sources.list.d/ceph.list
fi

apt update

2. Run full system update

apt dist-upgrade -y

Reboot after this completes. Updates sometimes include kernel changes that require a restart to take effect.

reboot

3. Remove the subscription nag dialog

Every login to the Proxmox web UI shows a popup complaining you don’t have a subscription. It’s harmless but irritating. This one-liner removes it:

sed -Ezi.bak "s/(Ext.Msg.show\(\{[^}]*title: gettext\('No valid subscription'\).*?Ext.Msg.show\(\{)/\/\/ Subscription warning removed\n\/\//s" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy

If that sed command looks scary, there’s a simpler version that works on Proxmox 8:

# Find and comment out the subscription check
sed -i.bak "s/if (res === null || res === undefined || \!res || res/if (true || res/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy

Note: This change will be overwritten when proxmox-widget-toolkit updates. You’ll need to rerun it after updates — or just dismiss the dialog. It doesn’t affect functionality.

4. Set up email alerts

Proxmox can email you when backups fail, when VMs stop unexpectedly, or when the system runs into problems. This is worth configuring before you deploy anything important.

If you have a Gmail account, configure postfix to relay through it:

apt install -y libsasl2-modules

Edit /etc/postfix/main.cf and add to the bottom:

relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Create /etc/postfix/sasl_passwd:

[smtp.gmail.com]:587 [email protected]:your-app-password

Generate an App Password in your Google account (Account → Security → 2-Step Verification → App Passwords). Do not use your regular Gmail password here.

chmod 600 /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
systemctl restart postfix

Test it:

echo "Test from Proxmox" | mail -s "Proxmox test" [email protected]

Then update the notification email in the Proxmox UI under Datacenter → Options → Email from address.

5. Configure storage

By default, Proxmox creates a local storage pool (for ISOs and templates) and local-lvm (for VM disks). This is fine for a single-disk setup, but you may want to add additional directories.

Check what Proxmox sees:

pvesm status

If you have a second disk for data, add it under Datacenter → Storage → Add → Directory.

6. Set a static IP (if you didn’t during install)

The IP you set during installation should be static already, but double-check /etc/network/interfaces:

cat /etc/network/interfaces

You should see something like:

iface vmbr0 inet static
    address 192.168.1.10/24
    gateway 192.168.1.1

If it says dhcp, change it to static now — a Proxmox node with a changing IP is a headache.

7. Set your hostname correctly

If you want your Proxmox node to have a proper hostname on your network:

hostnamectl set-hostname pve.home

Update /etc/hosts to match:

nano /etc/hosts

Make sure there’s a line mapping your node’s IP to both its short and full hostname:

192.168.1.10    pve.home pve

For a home server, unattended security updates are worth enabling:

apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

Proxmox VE packages aren’t included in standard unattended-upgrades, so you’d still need to manually upgrade those, but this keeps the underlying Debian packages patched automatically.

9. Configure QEMU guest agent

If you’re going to run virtual machines (not just LXC), install the guest agent package so Proxmox can communicate with VMs cleanly:

This is done inside each VM after you create it, not on the Proxmox host. Inside any Debian/Ubuntu VM:

apt install qemu-guest-agent
systemctl enable --now qemu-guest-agent

Then enable it in the VM’s hardware settings in the Proxmox UI (VM → Hardware → Add → QEMU Guest Agent).

10. Create your first snapshot of a working VM

Once you have a VM or LXC configured, take a snapshot immediately. This creates a rollback point before you make changes.

In the Proxmox UI:

  1. Select your VM or container
  2. Go to Snapshots
  3. Click Take Snapshot
  4. Give it a name like fresh-install and a description

Get in the habit of taking a snapshot before any significant change. It takes seconds and has saved me more than once.


Proxmox is ready. The next guide covers VM templates — which let you clone a pre-configured system in under a minute instead of reinstalling from scratch every time. After that, head to the Docker guide to start deploying services.