Installing Proxmox VE 7 on Debian Bullseye
I recently tried to install Proxmox on my Dell Wyse 3040 thin client so it can act as a cluster member, since it’s arguably easier to setup a full Proxmox install on x64 based devices than it is to setup a QDevice. Proxmox has a great installer, you have the full GUI to manage the node (not that you need to do much with it as a QDevice), and you have the option of setting it up for other Proxmox services and containers even if it’s really not very capable. So, I’m committed to installing Proxmox on my 3040. But then the problems came. The Proxmox installer was unhappy with the eMMC storage, and wasn’t able to create a partition table on it. Well, I guess I’m diving down the more difficult path of installing Debian, and then installing Proxmox on top of it.
In addition to my use case, it’s not uncommon to install Proxmox on top of Debian if you want a specific root filesystem layout, since Proxmox will not install without LVM (or ZFS). In my case, I’m going to install ext4 on root with no LVM, since the disk is so small. Proxmox has a guide on instlaling Proxmox 6 on top of Debian Buster, but there are a few minor changes to be aware of with the more recent version. Not a big deal though, the guide is still mostly accurate and you should be able to follow it.
Video form of this, if you prefer to follow along there:
First we need to install Debian. I started with the Debian 11 (Bullseye) netinst image, ran through it, deseleted the desktop, and selected SSH server. From there, it’s pretty much a standard Debian install. Of course, if you’re going through the trouble of installing Proxmox on Debian instead of ’natively’, you probably want to use a custom partition layout on the boot partition, and here is where you’d configure that.
Before installing Proxmox we need to make sure we have a static IP address, and the hostname resolves back to our public static IP address by setting it in the hosts file.
First, let’s set that static address by editing
Find the line for your adapter (mine is
enp1s0) and modify it from dhcp to static and add the static IP. Here’s what mine looks like:
iface enp1s0 inet static address 172.27.1.154 netmask 255.255.240.0 gateway 172.27.0.1
After that, we need to add this static address to the hosts file by editing
By default, Debian will map
127.0.1.1 to your hostname and
127.0.0.1 to localhost. We need to change the second entry to point to our network-accessible IP instead. This is what mine looks like:
127.0.0.1 localhost.localdomain localhost 172.27.1.154 pve3040.palnet.net pve3040 # The following lines are desirable for IPv6- capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
You should only need to change the first two lines here.
Once you’re done, do
ifdown enp1s0 followed by
ifup enp1s0 (obviously put in your own interface name) so the new IP address takes effect. Be careful if you’re doing this over SSH! You can use
ip a to make sure the new IP is being used.
Add Proxmox Repository⌗
Create a new file (
nano /etc/apt/sources.list.d/pve-install-repo.list) and paste in the following contents for PVE 7 on Bullseye:
deb [arch=amd64] http://download.proxmox.com/debian/pve bullseye pve-no-subscription
Now download the Proxmox GPG key that the repository is signed with. The file naming convention has changed, so you can’t just go from
proxmox-ve-release-7.x.gpg like the Proxmox guide would let you believe. I believe this is because the same key now signs the PBS releases as well as PVE.
wget http://download.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
APT Update, Upgrade, Install Proxmox⌗
Now do the usual
apt update and
apt full-upgrade to prepare. This should also download package lists from PVE’s repo.
Now we can finally install Proxmox:
apt install proxmox-ve postfix open-iscsi
Postfix will ask you some questions, choose
Local Only unless you know you have a better answer.
Proxmox also suggests we remove
sudo apt remove os-prober
Now reboot, and DONE!