ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Virtualization & Host Nodes

How to Install Proxmox VE (PVE) on a Dedicated Server: Debian 12, PVE 8 and vmbr0 Bridge

7 steps 12 min read 5 views 0
On this page

This guide shows how to install Proxmox VE (PVE) on a dedicated server and turn it into a hypervisor host for KVM virtual machines and LXC containers. We follow the method recommended by Proxmox: start from Debian 12 and install PVE 8 from the official repository, which is handy when your provider pre-installs Debian 12 and you cannot mount an ISO. It also covers the vmbr0 bridge, the web UI on port 8006 and the "no valid subscription" message.

Proxmox VE runs on Debian only. It cannot be installed on CentOS, Rocky Linux, AlmaLinux or Ubuntu. If your server runs one of those, reinstall it with Debian 12 (64-bit) from the client area, or mount the official Proxmox VE ISO over IPMI/KVM.

Step 1: Set the hostname and /etc/hosts before installing Proxmox VE

PVE needs the hostname to resolve to the server's public IP (not 127.0.1.1), otherwise pve-cluster will not start. Replace 203.0.113.10 and the hostname with your own values. The last command must print your public IP.

hostnamectl set-hostname pve1.example.com
nano /etc/hosts
# public IP   FQDN   short hostname
203.0.113.10   pve1.example.com   pve1
hostname --ip-address

Step 2: Add the official Proxmox VE repository

Add the pve-no-subscription repository and its signing key. Compare the sha512sum output with the checksum published in the Proxmox documentation, then bring the system fully up to date.

echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
apt update && apt full-upgrade -y

Step 3: Install the Proxmox kernel and reboot

Install the Proxmox kernel first and boot into it; this makes the main package installation smoother. After the reboot, uname -r should show a kernel name containing "pve".

apt install -y proxmox-default-kernel
systemctl reboot

Step 4: Install the Proxmox VE packages

Install proxmox-ve together with postfix (choose "Local only" if you have no mail relay), open-iscsi and chrony. Then remove the stock Debian kernel and os-prober so the boot menu stays clean and guest disks are never scanned.

apt install -y proxmox-ve postfix open-iscsi chrony
apt remove -y linux-image-amd64 'linux-image-6.1*'
update-grub
apt remove -y os-prober

Step 5: Configure the vmbr0 bridge in Proxmox VE

To give VMs public IPs, create a Linux bridge vmbr0, attach the physical NIC to it (eno1 in this example; check the real name with ip -br link) and move the host IP onto the bridge. Back up the old file first and make sure you have IPMI/KVM access in case you lose connectivity.

# /etc/network/interfaces
auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
        address 203.0.113.10/24
        gateway 203.0.113.1
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

Apply the configuration with ifreload (PVE ships ifupdown2), then check the bridge address and outbound connectivity.

ip -br link
cp /etc/network/interfaces /etc/network/interfaces.bak
ifreload -a
ip -br addr show vmbr0
ping -c 4 1.1.1.1
Never edit network settings remotely without out-of-band console access. A wrong address or gateway disconnects the server immediately. If your data center filters MAC addresses, open a ticket first to confirm which IPs and MACs your VMs may use.

Step 6: Log in to the Proxmox web interface on port 8006

Open https://SERVER-IP:8006 in a browser, log in as root with the "Linux PAM standard authentication" realm and the server's root password. The browser will warn about the self-signed certificate; accept it to continue. If the page does not load, check pveproxy and make sure TCP 8006 is allowed by any firewall.

systemctl status pveproxy --no-pager
ss -tlnp | grep 8006
# open in a browser:
https://203.0.113.10:8006

Step 7: The "No valid subscription" notice and the enterprise repository

The "No valid subscription" pop-up is expected. Proxmox VE is free and fully functional without a subscription; a subscription adds the enterprise repository and vendor support. Without one, the enterprise repo returns HTTP 401 on apt update, so comment it out and keep using the no-subscription repo from Step 2. For production you may still choose to buy a subscription from Proxmox.

ls /etc/apt/sources.list.d/
# without a subscription: comment out the enterprise repo
sed -i 's/^deb/# deb/' /etc/apt/sources.list.d/pve-enterprise.list
apt update

FAQ

pve-cluster fails to start after installing Proxmox VE

This is almost always a hostname resolution issue in /etc/hosts. Fix it as in Step 1 and run systemctl restart pve-cluster pveproxy.

The server went offline after I configured vmbr0

Log in via the IPMI/KVM console, restore /etc/network/interfaces.bak, run ifreload -a, then double-check the NIC name, prefix length and gateway.

What server specs do I need to host VPS with PVE?

We recommend at least 64 GB RAM, NVMe SSDs and an additional IP block. For dense deployments consider IMIDC's 512 GB RAM hosts or servers with a /24 IP range.

Still stuck? Open a ticket and the IMIDC 24/7 support team will help you troubleshoot.

Was this answer helpful?

Related Tutorials