//Technology

Build a Production‑Ready Bare Metal Hypervisor with Proxmox VE 8

Proxmox VE 8 on bare‑metal: hardware prep, install Debian‑based OS, set storage, bridges, backups, harden SSH, firewall, and automate updates for a reliable VPS platform.

8 min read
Build a Production‑Ready Bare Metal Hypervisor with Proxmox VE 8

Running a production‑grade VPS service requires a stable, flexible, and manageable hypervisor. Proxmox Virtual Environment (VE) 8 offers a bare‑metal solution combining KVM for full virtualization and LXC for lightweight containers, all managed through a single web interface. This guide walks you through preparing hardware, installing Proxmox VE 8 on a bare‑metal server, and configuring essential settings to host virtual private servers for Indian customers.

1. Preparing the Server Hardware

Before installing the operating system, ensure your server meets the minimum requirements and is set up for optimal performance.

  • CPU: 64‑bit processor with VT‑x or AMD‑V support (Intel Xeon, AMD EPYC, or comparable).
  • Memory: At least 16 GB RAM; allocate more based on the number and size of VPS instances you plan to run.
  • Storage: SSDs are strongly recommended for the OS and VM disks. Use RAID‑1 or RAID‑10 for redundancy.
  • Network: Two network interface cards (NICs)—one for management (web UI, SSH) and one or more for VM traffic. Enable jumbo frames if you plan to use a large MTU.
  • BIOS/UEFI Settings:
    1. Enable VT‑x (Intel) or AMD‑V (AMD) virtualization support.
    2. Disable Secure Boot, as the Proxmox installer uses unsigned kernels.
    3. Set the boot order to prioritize the USB or CD/DVD drive for installation.

2. Downloading and Creating the Proxmox VE 8 Installation Media

Proxmox VE 8 is based on Debian 12 (Bookworm). The installer is provided as an ISO image.

  1. Visit the official download page: Proxmox VE 8 ISO.
  2. Verify the ISO checksum (SHA256) to ensure file integrity.
  3. Write the ISO to a USB drive using dd on Linux/macOS or Rufus on Windows:
    # Example on a Linux workstation to write the image to a USB drive
    sudo dd if=proxmox-ve_8.0-1.iso of=/dev/sdX bs=4M status=progress && sync
    # Replace /dev/sdX with your actual USB device node identifier.

3. Installing Proxmox VE 8 on Bare Metal

The Proxmox installer runs in a graphical environment. Follow the prompts below to complete the setup.

3.1. Boot the Installer

Insert the USB drive into the host machine, power on the server, and select Install Proxmox VE from the boot menu.

3.2. Accept the License and Select the Target Disk

Accept the GNU AGPL‑3.0 license agreement. Next, select the target disk or RAID array where Proxmox will be installed. By default, the installer automatically partitions the drive:

  • /dev/sda1: EFI system partition (for UEFI boot mode).
  • /dev/sda2: ZFS or LVM‑thin root volume.
  • /dev/sda3: Swap partition (proportional to installed RAM).

3.3. Configure Regional Settings

Select India as the country, choose your timezone (such as Asia/Kolkata), and set your preferred keyboard layout.

3.4. Set Root Password and Contact Email

Create a strong password for the root administrative account and enter a valid email address to receive system alerts.

3.5. Configure Network Settings

Proxmox requires a static IP address for the primary management interface. Enter your network details:

  • Static IP address (for example, 203.0.113.10/24)
  • Gateway address (for example, 203.0.113.1)
  • DNS resolvers (for example, 1.1.1.1 and 8.8.8.8)

3.6. Complete the Installation

The installer copies necessary system files, configures the bootloader (GRUB for legacy BIOS or systemd‑boot for UEFI), and prompts for a system reboot. Once rebooted, access the administration web interface in a browser at https://203.0.113.10:8006 using the root credentials.

4. Post‑Installation Configuration via Web UI and Shell

Perform these initial administration steps before creating virtual machine instances on Proxmox VE 8 (Debian 12 Bookworm base).

4.1. Update System Packages

Connect to the server over SSH as root or open the shell in the web UI. Run these commands to update package listings and upgrade all installed packages to their latest versions:

# Refresh package repositories and perform a full upgrade
apt update && apt full-upgrade -y

# Reboot the server if a new kernel was installed
reboot

4.2. Configure the No‑Subscription Repository (Optional)

If operating without an enterprise subscription, switch to the public community package repository to keep system software updated:

# Disable the enterprise repository file
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list

# Add the no‑subscription community repository
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
    > /etc/apt/sources.list.d/pve-no-subscription.list

# Refresh the local package index
apt update

4.3. Configure a Dedicated Storage Pool

Separating guest virtual machine disks from the main system drive improves organization and performance. To create an LVM‑thin pool on a secondary drive (such as /dev/sdb):

# Initialize /dev/sdb as a physical volume
pvcreate /dev/sdb

# Create a volume group named 'vgsrv' using the physical volume
vgcreate vgsrv /dev/sdb

# Create a thin pool named 'thinpool' using 90% of the volume group space
lvcreate -L 90%VG -T vgsrv/thinpool

After running these commands, register the storage in the Proxmox web interface by navigating to Datacenter → Storage → Add → LVM‑Thin.

4.4. Configure a Network Bridge for VM Traffic

Proxmox uses Linux network bridges to bind guest virtual interface cards to host physical network ports. To attach a secondary interface (such as ens2) to a bridge named vmbr0, update /etc/network/interfaces:

# Append bridge configuration to /etc/network/interfaces
auto vmbr0
iface vmbr0 inet manual
    bridge_ports ens2
    bridge_stp off
    bridge_fd 0

Apply the network updates without rebooting:

# Restart the network service to bring up the new bridge
systemctl restart networking

4.5. Enable Automated Backups

Protect host and virtual machine data by attaching backup storage, such as an NFS mount at /mnt/backup. Add this path in the web UI under Datacenter → Storage → Add → Directory.

Configure a backup job under Datacenter → Backup with the following recommended parameters:

  • Schedule: Daily
  • Retention: Keep last 7 backups
  • Mode: snapshot (for LVM‑thin or ZFS storage) or stop (for file‑based storage)

5. Provisioning Your First Virtual Private Server

Once storage and networking are configured, you can build and provision guest VPS instances.

5.1. Download an OS Cloud Image

Download an official Cloud‑Init image to set up automated virtual machine deployments easily:

# Download an Ubuntu 22.04 LTS Cloud‑Init image to the Proxmox ISO storage folder
wget -O /var/lib/vz/template/iso/ubuntu-22.04-server-cloudimg-amd64.img \
    https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-amd64.img

5.2. Create the Virtual Machine

In the Proxmox web interface, click Create VM and configure the basic details:

  • General: Set Name to customer01.
  • OS: Select the uploaded Ubuntu image or ISO.
  • System: Choose OVMF (UEFI) for modern system firmware.
  • CPU: Allocate 2 vCPU cores.
  • Memory: Assign 4 GB RAM.
  • Hard Disk: Select the LVM‑thin storage pool and allocate a 40 GB disk size.
  • Network: Select vmbr0 and set the device model to virtio.

5.3. Apply Hardware and Resource Limits

Prevent individual tenant instances from overconsuming host resources by assigning limits under VM → Hardware → CPU/Memory:

  • CPU Limit: Restrict max execution cores or host CPU percentage.
  • Memory Limit: Set hard allocation ceilings along with soft limits for memory‑allocation burst capabilities.
  • Disk Bandwidth: Apply I/O throttling rules (read/write limits in MB/s) on guest drive hardware options.

5.4. Set Up Host Monitoring

In addition to Proxmox built‑in metrics, connect host monitoring tools like Prometheus and Grafana:

# Install the Prometheus Node Exporter package on the Debian host
apt install prometheus-node-exporter

Add the server address to your central prometheus.yml configuration file to collect host CPU, memory, and storage metrics.

6. Securing the Hypervisor Node

Harden the hypervisor OS environment against unauthorized access.

6.1. Harden SSH Access

Edit /etc/ssh/sshd_config to disable password authentication and restrict direct root login via password:

# Apply configuration changes in /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin prohibit-password

Reload the SSH service to enforce key‑based authentication:

# Reload SSH daemon to apply security settings
systemctl reload sshd

6.2. Enable the Proxmox Firewall

Proxmox includes an integrated firewall service to protect host nodes and virtual networks.

# Start and enable the Proxmox firewall engine
pve-firewall start

In the web interface, navigate to Datacenter → Firewall, enable the firewall, and configure allow rules for management access (ports 8006/tcp for Web UI and 22/tcp for SSH) while blocking unrequested traffic.

6.3. Enable Automated Security Updates

Install the unattended-upgrades utility to automatically install critical system security patches on Debian:

# Install the automated upgrade package
apt install unattended-upgrades

# Configure automated update execution schedules
dpkg-reconfigure unattended-upgrades

6.4. Configure Fail2Ban Protection

Mitigate brute‑force authentication attacks on the Proxmox management web interface using Fail2Ban:

# Install Fail2Ban system service
apt install fail2ban

Create a custom jail configuration file at /etc/fail2ban/jail.d/proxmox.conf:

[proxmox-api]
enabled = true
port = 8006
filter = proxmox-api
logpath = /var/log/pveproxy/access.log
maxretry = 5
bantime = 3600

Restart the Fail2Ban service to apply protection rules against repeated failed login attempts:

# Restart Fail2Ban daemon
systemctl restart fail2ban

Conclusion

Proxmox VE 8 provides a versatile, open‑source hypervisor environment built directly on bare‑metal architecture. Following these setup instructions—preparing hardware, installing the base OS, configuring custom storage, defining networking bridges, implementing backups, and applying host security—provides a solid virtual private server deployment base tailored for production host workloads.

proxmoxvirtualizationkvmlxcdebianlinuxserverhosting

Try it on your own server

Follow along on a Cloud VPS with full root access, or read the step-by-step knowledge base guides.

Guides: VPS for WordPress · Node.js hosting · VPS or dedicated server · Paying by UPI