Installing Proxmox VE 8 on Debian 12 (Bookworm)

Virtualization allows for a better and efficient compute resources utilization. One of the most used open source virtualization solutions available is Proxmox VE. It is based on Debian Linux distribution with a modified LTS kernel for stability. In Proxmox VE you can run both virtual machines and containers, with unified storage for better efficiency.

In this tutorial we will be able to install and configure Proxmox VE 8 virtualization on Debian 12 (Bookworm) Linux system. This is done on a Baremetal server server using Debian 12 ISO. It is recommended to use Proxmox VE ISO for the installation as opposed to performing the installation on top of Debian 12 Linux OS.

Setup Pre-requisites

For the installation of Proxmox VE 8 on Debian 12 (Bookworm), you need the following requirements to be met;

  • A running instance of Debian Bookworm
  • A 64-bit processor with support for the Intel 64 or AMD64 CPU extensions.
  • Access to Debian server terminal as root or user with sudo
  • Internet access on the server
  • Adequate hardware resources required to run the instances

For Debian 12 OS installation refer to the following tutorial.

With all the requirements satisfied, proceed with the installation of Proxmox VE 8 with the steps discussed in the next sections.

Update Debian OS

Confirm the system has been updated.

sudo apt -y update && sudo apt -y upgrade

The system might need a reboot after updating.

[ -f /var/run/reboot-required ] && sudo reboot -f

Set Proxmox Server hostname

Set a FQDN for your server hostname.

sudo hostnamectl set-hostname pve01.example.com --static

Where pve01.example.com is replaced with the correct hostname for the system.

Check the IP address of your primary interface.

$ ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:ef:22:c5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.50/24 brd 192.168.200.255 scope global dynamic noprefixroute enp1s0
       valid_lft 1982sec preferred_lft 1982sec
    inet6 fe80::5054:ff:feef:22c5/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Edit your /etc/hosts file to update IP address and DNS name entry. Remove any hostname reference to 127.0.0.1

$ sudo vim /etc/hosts
192.168.200.50 pve01.example.com pve01

Next set correct timezone on the server.

sudo timedatectl set-timezone Africa/Nairobi

Let’s logout of the server and back in to

logout

Test if configured hostname is is ok using the hostname command:

$ hostname --ip-address
192.168.200.50

Add the Proxmox VE repository

Install required dependencies before adding the repo.

sudo apt install curl gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates

Proxmox VE 8 server packages are contained in the official Proxmox maintained APT repository. Configure the repository in your system.

echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" | sudo tee /etc/apt/sources.list.d/pve-install-repo.list

Import GPG keys used in signing of the repositories.

curl -fsSL http://download.proxmox.com/debian/proxmox-release-bookworm.gpg|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/proxmox.gpg

Update your APT sources list

$ sudo apt update
Hit:1 http://security.debian.org/debian-security bookworm-security InRelease
Hit:2 http://deb.debian.org/debian bookworm InRelease
Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
Get:4 http://download.proxmox.com/debian/pve bookworm InRelease [2,768 B]
Hit:5 http://mirror.hetzner.com/debian/packages bookworm InRelease
Hit:6 http://mirror.hetzner.com/debian/packages bookworm-updates InRelease
Hit:7 http://mirror.hetzner.com/debian/security bookworm-security InRelease
Get:8 http://download.proxmox.com/debian/pve bookworm/pve-no-subscription amd64 Packages [129 kB]
Fetched 131 kB in 2s (86.7 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
9 packages can be upgraded. Run 'apt list --upgradable' to see them.

Upgrade new packages after adding the repository.

$ sudo apt full-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  ifupdown
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 82.0 kB of archives.
After this operation, 2048 B disk space will be freed.
Do you want to continue? [Y/n] y
....

Adding Proxmox VE Ceph Repository (Optional)

This is Proxmox VE’s main Ceph repository and holds the Ceph packages for production use. If you plan on configuring ceph storage, you can also use this repository to update only the Ceph client.

echo "deb http://download.proxmox.com/debian/ceph-quincy bookworm main" | sudo tee /etc/apt/sources.list.d/ceph.list

Install Proxmox VE 8 packages

Begin by installing the official Proxmox VE kernel.

sudo apt install pve-kernel-6.2

After the kernel change, it’s recommended to perform a system reboot.

sudo systemctl reboot

Then perform the installation of Proxmox base packages by running the following commands:

sudo apt update && sudo apt install proxmox-ve postfix open-iscsi

If you have a mail server in your network, you should configure postfix as a satellite system, and your existing mail server will be the ‘relay host’ which will route the emails send by the proxmox server to the end recipient. If you don’t know what to enter here, choose local only.

Confirm the installation completes without any errors:

...
Setting up pve-manager (8.3.4) ...
update successful
Created symlink /etc/systemd/system/multi-user.target.wants/pvedaemon.service → /lib/systemd/system/pvedaemon.service.
Created symlink /etc/systemd/system/multi-user.target.wants/pveproxy.service → /lib/systemd/system/pveproxy.service.
Created symlink /etc/systemd/system/multi-user.target.wants/spiceproxy.service → /lib/systemd/system/spiceproxy.service.
Created symlink /etc/systemd/system/multi-user.target.wants/pvestatd.service → /lib/systemd/system/pvestatd.service.
Created symlink /etc/systemd/system/getty.target.wants/pvebanner.service → /lib/systemd/system/pvebanner.service.
Created symlink /etc/systemd/system/multi-user.target.wants/pvescheduler.service → /lib/systemd/system/pvescheduler.service.
Created symlink /etc/systemd/system/timers.target.wants/pve-daily-update.timer → /lib/systemd/system/pve-daily-update.timer.
Created symlink /etc/systemd/system/sysinit.target.wants/pvenetcommit.service → /lib/systemd/system/pvenetcommit.service.
Created symlink /etc/systemd/system/pve-manager.service → /lib/systemd/system/pve-guests.service.
Created symlink /etc/systemd/system/multi-user.target.wants/pve-guests.service → /lib/systemd/system/pve-guests.service.
  Configuration node devices/global_filter not found
Backing up lvm.conf before setting pve-manager specific settings..
'/etc/lvm/lvm.conf' -> '/etc/lvm/lvm.conf.bak'
Setting 'global_filter' in /etc/lvm/lvm.conf to prevent zvols and rbds from being scanned:
 => global_filter=["r|/dev/zd.*|","r|/dev/rbd.*|"]
  LVM configuration valid.
Setting up proxmox-ve (8.3.0) ...
Processing triggers for libc-bin (2.36-9+deb12u9) ...
Processing triggers for pve-ha-manager (4.0.6) ...

Remove enterprise repos if no license acquired.

echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" | sudo tee /etc/apt/sources.list.d/pve-install-repo.list
sudo rm /etc/apt/sources.list.d/pve-enterprise.list

Uninstall Debian default kernel:

sudo apt remove linux-image-amd64 'linux-image-6.1*'

Update and check grub2 config by running the following command.

sudo update-grub

Remove os-prober package.

sudo apt remove os-prober

Block rpcbind port 111.

sudo iptables -A INPUT -p tcp -m tcp --dport 111 -j DROP
sudo iptables -A INPUT -p udp -m udp --dport 111 -j DROP
sudo /sbin/iptables-save

Reboot your Debian system after installation to boot into Proxmox environment.

sudo systemctl reboot

Proxmox VE Proxy service should be listening on port 8006.

$ sudo ss -tunelp | grep 8006
tcp   LISTEN 0      4096                *:8006             *:*    uid:33 ino:25414 sk:18 cgroup:/system.slice/pveproxy.service v6only:0 <->

Access Proxmox VE web interface

Open your browser and input the Proxmox VE web console URL – (https://serverip_or_hostname:8006).

Select “PAM Authentication” and authenticate with server’s root user password to access Proxmox VE dashboard which has a look like below:

If you don’t remember root password, update:

passwd root

Once logged in, create a Linux Bridge called vmbr0,

Add the first network interface to be used by the bridge being created.


For Private bridge using NAT check below article:

The official Proxmox Documentation has more guides on the advanced configurations and Proxmox VE Administration.

Your IT Journey Starts Here!

Ready to level up your IT skills? Our new eLearning platform is coming soon to help you master the latest technologies.

Be the first to know when we launch! Join our waitlist now.

Join our Linux and open source community. Subscribe to our newsletter for tips, tricks, and collaboration opportunities!

Recent Post

Leave a Comment

Your email address will not be published. Required fields are marked *

Related Post

In this article we show you how to create a private and virtual network bridge on Proxmox with NAT configured […]

In this article we will perform an installation of Proxmox VE 8.x on Hetzner Root Server. Hetzner is a cloud hosting company […]

Borrowing its definition from Wikipedia, VMware ESXi (formerly ESX) is an enterprise-class, type-1 hypervisor developed by VMware for deploying and […]

Let's Connect

Unleash the full potential of your business with CloudSpinx. Our expert solutions specialists are standing by to answer your questions and tailor a plan that perfectly aligns with your unique needs.
You will get a response from our solutions specialist within 12 hours
We understand emergencies can be stressful. For immediate assistance, chat with us now

Contact CloudSpinx today!

Download CloudSpinx Profile

Discover the full spectrum of our expertise and services by downloading our detailed Company Profile. Simply enter your first name, last name, and email address.