Experimenting with Proxmox on Apple Silicon: Turning Your M1 MacBook Air into a Virtual Datacentre

Playing around with Proxmox on unsupported Apple Silicon hardware

In an effort to create an easy-to-manage VM environment that I can use on the go, even with spotty internet, I decided to try running Proxmox on my Apple Silicon MacBook Air. Parallels and VMware Fusion were options, but I chose Proxmox to support open-source software. For production-level workloads, I would purchase a Proxmox license and use a dedicated server. Proxmox doesn't distribute arm64/aarch64 packages, so this experiment depended on an unofficial port.

Editor's Note: These instructions are now out of date, as there are newer versions of Proxmox, and they may support Arm too. This post is kept up for historical reference.

Getting started

Proxmox is based on Debian but does not come packaged for arm64. A Debian installation can be converted to Proxmox, so I tried the same route used for x86_64.

UTM provides an interface for Apple's Hypervisor and QEMU. I could have used QEMU directly, but I chose UTM and created a Debian VM from one of the premade images in its gallery. Its presets supplied the VM configuration.

Converting Debian to Proxmox

With Debian running, I needed Proxmox packages for Arm. Since Proxmox doesn't support Arm or distribute their packages for Arm I would have to build those myself. Luckily, some other kind soul already did this and published them.

Warning: I'm installing packages from an unofficial source. My risk level is fine with this, but if you are considering doing this, I strongly recommend you evaluate the choice carefully. If you are not comfortable, you can build the packages from source.

Before installing the packages, I made sure the VM's hostname resolved through /etc/hosts. The VM already used debian, so I added 192.168.64.11 debian to the end of the hosts file. This allowed both the VM and the Proxmox installer to resolve the hostname.

Update: These packages depended on OpenSSL 1.1, which is now removed from Debian, and so you'll need to build from source and link the packages to OpenSSL 3+

These are the commands I used for the original package installation:

# Add the 3rd party repository
echo "deb https://global.mirrors.apqa.cn/proxmox/debian/pve bullseye port">/etc/apt/sources.list.d/pveport.list

# Download/Trust the key that signs the 3rd party packages
curl https://global.mirrors.apqa.cn/proxmox/debian/pveport.gpg -o /etc/apt/trusted.gpg.d/pveport.gpg 

# pull the latest updates from the repositories, and update the system
apt update && apt full-upgrade

# install ifupdown2, which is required for Proxmox
apt install ifupdown2

# and finally, install Proxmox
apt install proxmox-ve postfix open-iscsi

After running these commands, I rebooted the VM and opened the Proxmox admin interface at https://YOUR_IP_HERE:8006.

Running Proxmox

The resulting installation used the standard Proxmox interface. Any container or VM still needed an arm64/aarch64 image.

Alternatives considered

Other options included Parallels, VMware Fusion, or Asahi Linux with VMs running directly on the host. A separate device would avoid running Proxmox inside another hypervisor, but I did not want to carry one when I was away from home. I preferred keeping the environment on my laptop without disrupting my day-to-day desktop.

Results

On the M1 MacBook Air, I was able to run several VMs and containers without a noticeable performance hit. The experience was better than I expected from an x86_64 system with similar specifications, but I was not running a serious workload.

Terraform could've automated the environment setup, and the Proxmox API could script operations. I plan to keep experimenting with both.

Disclaimer

Editor's Note: This setup is not recommended for production use. The arm64/aarch64 packages are unofficial and not provided by Proxmox. An M1 MacBook Air is not intended to be a server.