Installing Proxmox VE on Raspberry Pi 5: Ultra Low-Cost ARM64 Home Lab with Debian Port

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

The Familiar Problem: Power-Hungry Homelabs

I run a homelab with Proxmox VE managing 12 VMs and containers — it’s my playground for testing everything before pushing to production. The problem is that the x86 server draws around 180–220W continuously, 24/7. The monthly electricity bill adds up fast, not to mention the constant fan noise.

The Raspberry Pi 5 is equipped with the BCM2712 chip (ARM Cortex-A76, quad-core 64-bit) and options up to 8GB RAM. Most importantly, it has hardware virtualization extensions (VHE) — something the previous Pi generations completely lacked. Power consumption is just 5–12W, price is around $80 USD, while that 220W x86 server burns 15–20× more electricity.

What sets this apart from a typical Proxmox installation: Proxmox has no official ISO installer for ARM64. Instead, we install Debian Bookworm ARM64 first, then inject Proxmox VE on top — exactly how Proxmox builds their own product.

Before You Start: ARM64 and What You Need to Know

Why ARM64 and Not x86?

The Raspberry Pi 5 uses the ARM64 (aarch64) architecture, which is fundamentally different from the x86_64 found in typical laptops and desktops. This sounds simple, but it has some direct consequences:

  • VM guests must also be ARM64 — you can’t run Windows x86 or standard x86 ISOs
  • LXC Linux containers work fine since they share the kernel with the host
  • Most popular Linux distros (Debian, Ubuntu, Alpine) have ARM64 builds

How Does Proxmox VE Work on ARM64?

Proxmox VE is a management layer built on top of Debian. On x86, they provide a custom kernel with many patches. On ARM64, we use the Debian/Raspberry Pi kernel but install the full Proxmox VE stack: web UI, KVM, LXC, storage management, and cluster support. For homelab purposes — creating VMs, managing containers, configuring storage — the interface and experience is nearly identical to the x86 version.

Hardware and Software Requirements

Here’s what you need before getting started:

  • Raspberry Pi 5 8GB (4GB works but gets tight when running multiple containers)
  • 64GB+ NVMe SSD via PCIe HAT (strongly recommended — microSD is slow and unreliable)
  • Official Raspberry Pi 27W USB-C power supply (insufficient wattage will cause throttling)
  • Ethernet cable connected directly to your router (don’t use WiFi for a server)
  • Another computer for SSH access and management

Step-by-Step Installation

Step 1: Flash Debian Bookworm ARM64

Download Raspberry Pi Imager on your computer and select Raspberry Pi OS Lite (64-bit) — this is Debian Bookworm ARM64. In the Advanced Settings before flashing:

  • Enable SSH
  • Set hostname: proxmox-pi
  • Create a user and password

Flash to SSD/SD, plug into the Pi and wait for it to boot. SSH in from your computer:

ssh [email protected]
# Or use a specific IP if mDNS doesn't work
ssh [email protected]

Step 2: Configure Hostname and Static IP

Proxmox requires the hostname to be resolvable via /etc/hosts. Skipping this step will cause errors during installation:

sudo hostnamectl set-hostname proxmox-pi
sudo nano /etc/hosts

Add this line to the file (replace the IP with your machine’s actual IP):

192.168.1.100   proxmox-pi.local proxmox-pi

Set a static IP to avoid losing your connection after a reboot:

sudo nano /etc/network/interfaces.d/eth0
auto eth0
iface eth0 inet static
    address 192.168.1.100/24
    gateway 192.168.1.1
    dns-nameservers 1.1.1.1 8.8.8.8

Update the system before continuing:

sudo apt update && sudo apt full-upgrade -y
sudo apt install -y curl wget gnupg2

Step 3: Add the Proxmox Repository for ARM64

This is the key difference — completely unlike installing on x86:

# Add the Proxmox GPG key
wget -qO /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg \
  https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg

# Add the no-subscription repo (free, supports both amd64 and arm64)
echo "deb [arch=amd64,arm64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
  | sudo tee /etc/apt/sources.list.d/pve-no-sub.list

sudo apt update

Step 4: Install Proxmox VE

On ARM64, do not install proxmox-default-kernel — that’s an x86 kernel. Keep the Raspberry Pi kernel and install the Proxmox VE stack directly:

sudo apt install -y proxmox-ve postfix open-iscsi chrony

This process takes 10–20 minutes depending on your internet speed. When postfix asks for configuration, select “Local only”.

After installation is complete, reboot:

sudo reboot

Step 5: Access the Proxmox Web UI

Open your browser and navigate to:

https://192.168.1.100:8006

The browser will warn about a self-signed certificate — ignore it and proceed. Log in with:

  • Username: root
  • Password: your Debian root password
  • Realm: Linux PAM standard authentication

If the Proxmox dashboard loads — you’re done. There’s something genuinely impressive about seeing Proxmox running on a board the size of your palm for the first time.

Step 6: Disable the License Nag Popup

Using the free community edition means a popup on every login. Here’s how to get rid of it:

# This command may change between Proxmox versions — check your version first
pve6to7 --version || pveversion

# Patch the JS file (adjust the path if needed)
sudo sed -i.bak "s/if (res === null || res === undefined || \!res || res/if (false || res/g" \
  /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

sudo systemctl restart pveproxy

If the sed command doesn’t work (Proxmox updated their code), search for the new string in that file to patch it — the community usually updates the instructions whenever a new Proxmox version is released.

Step 7: Create Your First LXC Container

LXC containers are much lighter than VMs, making them a great fit for the RPi 5’s 8GB RAM. Download a Debian ARM64 template:

# In the Proxmox shell, download the LXC template
pveam update
pveam available | grep debian
pveam download local debian-12-standard_12.7-1_arm64.tar.zst

Or via the UI: Datacenter → Node → local → CT Templates → Templates → Download. Select the arm64 version.

Create a new container via UI or command line:

# Create container ID 100, 512MB RAM, 8GB disk, bridged network
pct create 100 local:vztmpl/debian-12-standard_12.7-1_arm64.tar.zst \
  --hostname mycontainer \
  --memory 512 \
  --rootfs local-lvm:8 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp

# Start the container
pct start 100

# Enter the container shell
pct enter 100

Real-World Limitations to Know

I’ll be upfront so you don’t set the wrong expectations:

  • No PCI passthrough: you can’t pass a GPU or NIC card into a VM
  • Guests must be ARM64: no Windows, no x86 ISOs
  • 8GB RAM is tight for full VMs: each minimal Debian VM uses 256–512MB, so you can comfortably run 3–4 VMs
  • Avoid microSD as primary storage: slow I/O and prone to failure — investing in an NVMe HAT is well worth it

On this setup, Pi-hole, Uptime Kuma, Nginx Proxy Manager, and Gitea all run in parallel inside LXC containers — totaling around 1.5GB RAM. For services that need to run 24/7 without hammering the CPU, this is an ideal environment.

Conclusion

$80 in hardware, a few hours of setup, and you have a Proxmox node consuming under 12W of power. It can’t replace an x86 server for heavy workloads, but for learning virtualization, running small home services, or acting as a secondary node in a cluster — the Raspberry Pi 5 exceeds expectations.

What I appreciate most about this setup: I can freely create, delete, and break VMs without any risk to the production server. That’s the real value of a homelab.

Share: