Skip to content
Go back

Three ways to upload ISOs to Proxmox

Updated:
By SumGuy 4 min read
Three ways to upload ISOs to Proxmox

Getting ISOs into Proxmox is straightforward, but there are three legit ways to do it — and which one you pick depends on where your ISO lives and how much bandwidth you’ve got. Let me walk you through all three so you can stop fumbling around.

The Web UI Upload (Best for Small Files)

This is the most obvious path, and it works fine if you’ve got the ISO on your local machine and it’s not huge.

  1. Log into the Proxmox web console (usually https://your-proxmox-ip:8006)
  2. Click the Datacenter dropdown on the left sidebar
  3. Expand local storage and click it
  4. Click the Content tab on the right
  5. Hit the Upload button
  6. Select your ISO file and watch it upload

That’s it. For a 2–4 GB file over a decent local network, this works great. For 8+ GB ISOs or slow connections, your browser will time out and ruin your day — which is where method two comes in.

The Direct URL Download (For Remote ISOs)

If your ISO lives on a web server somewhere (or you can get a direct download link), Proxmox can fetch it for you without hogging your local bandwidth.

  1. Go back to that Content tab we visited above
  2. Click Download from URL
  3. Paste in the full ISO URL (e.g., https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso)
  4. Give it a moment — Proxmox downloads directly to storage in the background

This is clean because your Proxmox server does the downloading, not your laptop. Perfect if you’re deploying from home and the Proxmox host has better internet than you do.

Tip: Some sites (looking at you, Debian mirrors) rate-limit downloads. A slower download beats a stalled upload every time.

The CLI Method (For Power Users)

Sometimes you want to bypass the web UI entirely. SSH into your Proxmox node and drop the ISO directly into the storage directory:

Terminal window
# SSH into your Proxmox host
ssh root@proxmox-host
# Navigate to the ISO storage directory
cd /var/lib/vz/template/iso/
# Option 1: wget a file directly
wget https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso
# Option 2: curl if you prefer it
curl -O https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso
# Option 3: copy from an NFS mount or local USB drive
cp /mnt/usb/debian-12.1-amd64-netinst.iso /var/lib/vz/template/iso/

The web UI will auto-discover ISOs in that directory within a minute or two. No restart needed — just refresh the storage tab.

Why use this? When you’re SSHed into the host anyway, it’s faster than bouncing through the web UI. Also solid if you’re scripting deployments or have automation pulling ISOs from a mirror.

Verify Checksums (You Should Do This)

Downloaded an ISO? Check it before you spin up a VM. Corrupted install media is a 2 AM nightmare waiting to happen.

Terminal window
# If you have an SHA256 checksum file
cd /var/lib/vz/template/iso/
wget https://releases.ubuntu.com/jammy/SHA256SUMS
sha256sum -c SHA256SUMS | grep ubuntu-22.04
# Output: ubuntu-22.04.3-live-server-amd64.iso: OK

If the checksum doesn’t match, delete the ISO and download again. Don’t assume it’ll work anyway — odds are low but not zero.

Storage Pools and Where ISOs Live

By default, ISOs go to /var/lib/vz/template/iso/ on your local storage. If you’ve configured different storage pools (NFS, iSCSI, whatever), you can:

  1. Go to Datacenter → Storage and pick which pool has ISO support
  2. Use that pool’s path when uploading or copying files

Check your storage config if ISOs aren’t showing up where you expect them.

Cleaning Up Old ISOs

Over time your ISO directory gets cluttered. Clean it up:

Terminal window
# SSH in and list what you’ve got
cd /var/lib/vz/template/iso/
ls -lh
# Delete old ISOs you don’t need anymore
rm ubuntu-20.04-live-server-amd64.iso

The web UI will refresh automatically. No need to restart Proxmox.

Which Method Should You Use?

All three land the ISO in the same place. Pick what feels least annoying for your situation. Your 2 AM self will appreciate not fumbling with USB drives.


Share this post on:

Send a Webmention

Written about this post on your own site? Send a webmention and it'll show up above once verified.


Previous Post
MySQL CLI: From Connection to Maintenance
Next Post
Recursively delete all empty subdirectories

Discussion

Powered by Garrul . Sign in with GitHub or Google, or post anonymously.

Related Posts