Skip to content

Practical technology help for homes and small businesses, from someone who knows how to make it work. Based in Martinez, serving Contra Costa County.

Practical IT guides, cheatsheets, and references from Jeremiah Ellington, drawn from more than 20 years of IT work in public sector and higher education.

Contact Info
Location Martinez, CA (Serving Contra Costa County)
Contact Info
Location Martinez, CA (Serving Contra Costa County)

Cheatsheet

Proxmox VE Command-Line Cheatsheet

The Proxmox VE shell commands you'll use most: VMs (qm), containers (pct), storage, backups and restores, templates, networking, updates, and troubleshooting.

  • Applies to: Proxmox VE 9.x (9.2 current on 2026-10-27); run as root on the host. Commands checked against Proxmox VE 9.x docs, not lab-tested on a 9.2 host. Most also work on 8.x, which reached end of support in August 2026
  • Last reviewed

Free, no email required.

Ask AI about this cheatsheetChatGPT, Claude, or any assistant

These open a new chat with a prompt that points the assistant to this cheatsheet. It only sees the cheatsheet if it can open the link. If it says it can't, use Copy cheatsheet for AI and paste the text into the chat.

Nothing goes to an AI service unless you choose one. AI answers can be wrong: check them against the cheatsheet before you change anything important.

Every command here is checked against Proxmox VE 9.x docs, not lab-tested on a 9.2 host (re-checked October 27, 2026). Replace 100 (VM), 200 (container), and storage names such as local-lvm and backups with your own. Run qm help <command> or pct help <command> for every option.

Host and version#

Bash
pveversion -v                # Proxmox VE and package versions
apt update && apt full-upgrade   # update the host (never plain "apt upgrade")
pvesm status                 # storage, type, and free space
ip -br addr                  # network interfaces and addresses
systemctl status pveproxy    # web interface service

Virtual machines (qm)#

Bash
qm list                      # all VMs with status
qm config 100                # a VM's configuration
qm start 100
qm shutdown 100              # clean shutdown (needs ACPI or the guest agent)
qm reboot 100
qm set 100 --memory 4096 --cores 2
qm set 100 --onboot 1        # start at host boot
qm set 100 --agent enabled=1 # use the QEMU guest agent
qm disk resize 100 scsi0 +10G   # grow a disk ("qm resize" is an alias); then grow the filesystem inside the guest
qm guest cmd 100 network-get-interfaces   # guest IPs via the agent
BashDestructive: use with care
qm stop 100                  # hard power-off, like pulling the plug
qm destroy 100 --purge       # deletes the VM and its disks; --purge also removes it from backup, replication and HA jobs
qm unlock 100                # clears a stuck lock: only if no task is running

Containers (pct)#

Bash
pct list
pct config 200
pct start 200
pct shutdown 200
pct enter 200                # root shell inside the container
pct exec 200 -- df -h        # run one command inside
pct set 200 --memory 1024 --cores 1
pct resize 200 rootfs +4G    # grow the root disk
pct push 200 ./file.conf /etc/app/file.conf   # copy a file in
pct pull 200 /var/log/app.log ./app.log       # copy a file out
BashDestructive
pct stop 200                 # immediate stop
pct destroy 200 --purge      # deletes the container and its volumes; --purge also removes it from backup, replication and HA jobs

Snapshots#

Bash
qm snapshot 100 before-update --description "Before updates"
qm listsnapshot 100
qm rollback 100 before-update     # destructive: discards changes since the snapshot (a snapshot with RAM also starts the VM)
qm delsnapshot 100 before-update
pct snapshot 200 before-update    # same idea for containers

Backups and restores#

Bash
vzdump 100 --storage backups --mode snapshot --compress zstd
vzdump 100 200 --storage backups --mode snapshot --compress zstd --notes-template "{{guestname}}"
ls /var/lib/vz/dump/         # backups on the "local" storage
qmrestore /var/lib/vz/dump/vzdump-qemu-100-<date>.vma.zst 150 --storage local-lvm   # restore to new VM ID 150
pct restore 250 /var/lib/vz/dump/vzdump-lxc-200-<date>.tar.zst --storage local-lvm  # restore to new CT ID 250

Templates and clones#

Bash
pveam update                         # refresh the container template list
pveam available --section system     # OS templates you can download
pveam list local                     # templates already downloaded
qm template 100                      # convert a VM into a template
qm clone 100 101 --name web01 --full # full clone of template 100 as VM 101

Networking#

Bash
cat /etc/network/interfaces   # host network configuration
ifreload -a                   # apply changes to the interfaces file
bridge vlan show              # VLANs on VLAN-aware bridges

ZFS (if you installed on ZFS)#

Bash
zpool status                  # health of each pool and disk
zpool list                    # size and free space
zfs list                      # datasets and volumes
zpool scrub rpool             # start a data integrity check

Troubleshooting#

Bash
journalctl -b -p err          # errors since the last boot
journalctl -u pveproxy -b     # web interface logs
systemctl restart pveproxy pvedaemon   # restart the web interface services
qm showcmd 100 --pretty       # the QEMU command line a VM starts with
grep -Ec '(vmx|svm)' /proc/cpuinfo     # 0 = virtualization not enabled in firmware

Sources and official documentation

Review history

  • Technical review: Jeremiah Ellington,
  • Editorial review: Jeremiah Ellington,
  • Next scheduled review:

Spotted something out of date or wrong? Email a correction and I'll fix it. See how these guides are made.