Install Proxmox VE on a VPS to run virtual machines

Proxmox VE is one of the most popular open-source hypervisors for self-hosted virtual machines. This guide walks you through installing Proxmox VE on a VPS, creating your first VM, configuring networking with NAT, and hardening the setup — all from start to finish.

What is Proxmox VE

Proxmox Virtual Environment (Proxmox VE) is an open-source platform that merges KVM-based full virtualization with LXC containers into a single, browser-based management interface. Developed by Proxmox Server Solutions GmbH in Austria and built on Debian Linux, it is released under the AGPL v3 license — free for personal and commercial use without a subscription.

FeatureProxmox VEVirtualBoxVMware ESXi
Hypervisor typeType 1 (bare-metal)Type 2Type 1
CostFree (Enterprise optional)FreeFree (Basic)
Web UI✅ Full❌✅
LXC containers✅❌❌
Cluster support✅❌✅ (vSphere)
Suitable for VPS✅ Excellent⚠️ Limited⚠️ Licensing complexity

System Requirements

Before installing Proxmox VE on your VPS, verify that it meets these requirements:

ResourceMinimumRecommended
RAM2 GB4 GB or more
SSD storage32 GB50 GB or more
CPU2 vCPU (Intel/AMD x86-64)4+ vCPU
Base OSDebian 12 BookwormDebian 12 Bookworm
KVM virtualizationMust be enabledMust be enabled
Network1 public IPPublic IP + private network
Check KVM support first: Run egrep -c '(vmx|svm)' /proc/cpuinfo. A result of 1 or more confirms KVM is available. If the output is 0, contact your VPS provider to enable nested virtualization.

Installing Proxmox VE

The easiest installation path is to add the Proxmox repository on top of a fresh Debian 12 system.

1. Update Debian and set a FQDN hostname

apt update && apt full-upgrade -y
hostnamectl set-hostname proxmox.yourdomain.com
echo "1.2.3.4 proxmox.yourdomain.com proxmox" >> /etc/hosts

2. Add the Proxmox VE repository

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
apt update

3. Install Proxmox VE packages

apt install -y proxmox-ve postfix open-iscsi chrony

When the Postfix configuration dialog appears, select Local only and press OK.

4. Remove the old kernel and reboot

apt remove -y linux-image-amd64 'linux-image-6.1*'
update-grub
reboot
Note: After reboot the system boots with the Proxmox kernel. Verify with uname -r — the output should include pve.

Accessing the Web UI

The Proxmox management interface runs on HTTPS port 8006. Open a browser and navigate to:

https://YOUR_VPS_IP:8006

Log in with username root and your VPS root password. Accept the browser's certificate warning — Proxmox uses a self-signed certificate by default.

Open the firewall: Allow port 8006 before connecting: ufw allow 8006/tcp

Creating Your First VM

Once inside the Proxmox web UI, follow these steps to create a virtual machine.

Upload an ISO image

Go to local (pve) → ISO Images → Upload and upload your OS ISO, e.g., Ubuntu Server 24.04 or Debian 12.

Create the VM

  1. Click Create VM in the top-right corner.
  2. General: give the VM a name, e.g., "ubuntu-web".
  3. OS: select the ISO you uploaded.
  4. System: use the default SeaBIOS for most Linux guests.
  5. Disk: set the size, e.g., 20 GB (Bus/Device: VirtIO SCSI for best performance).
  6. CPU: assign sockets and cores as needed.
  7. Memory: set RAM in MB, e.g., 1024 for 1 GB.
  8. Network: use vmbr0 (the default bridge).
  9. Confirm: review and click Finish.

Start the VM and double-click it to open the console and proceed with the OS installation.

VM Network Configuration

Proxmox uses Linux bridges (vmbr0) as virtual switches. On a single-IP VPS, use NAT so all VMs share the host IP.

NAT configuration (recommended for single-IP VPS)

# /etc/network/interfaces
auto vmbr0
iface vmbr0 inet static
    address  10.10.10.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eth0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eth0 -j MASQUERADE

Port forwarding into a VM

# Forward host port 2222 → VM SSH (10.10.10.100:22)
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.10.10.100:22
iptables -A FORWARD -p tcp -d 10.10.10.100 --dport 22 -j ACCEPT
Tip: Install iptables-persistent to preserve rules across reboots: apt install iptables-persistent

Storage Management

Proxmox supports several storage backends. For a typical VPS deployment these are the most useful:

Storage typeUsed forAdvantages
Directory (local)ISO images, VM disks, backupsSimple, no extra setup
LVM-ThinVM disksSnapshots, thin provisioning
ZFSVM disksData integrity, snapshots, RAID
NFSBackups, ISO imagesShareable across nodes

Add an LVM-Thin pool

pvcreate /dev/sdb
vgcreate vg0 /dev/sdb
lvcreate -l 100%FREE -T vg0/data
# Then add via UI: Datacenter → Storage → Add → LVM-Thin

Configure automated backups

Go to Datacenter → Backup → Add, set a schedule (e.g., 02:00 daily), and select the VMs to back up. Backups are stored as compressed .vma.zst files in the target storage.

Using LXC Containers

If your VPS has limited RAM, LXC containers consume 50–80% less memory than full VMs because they share the host kernel. They are ideal for Linux workloads such as web servers, databases, and proxies.

Download a template and create a container

# Download Ubuntu 24.04 template
pveam update
pveam download local ubuntu-24.04-standard_24.04-2_amd64.tar.zst

# Create container via CLI
pct create 100 local:vztmpl/ubuntu-24.04-standard_24.04-2_amd64.tar.zst \
  --hostname mycontainer \
  --memory 512 \
  --net0 name=eth0,bridge=vmbr0,ip=10.10.10.100/24,gw=10.10.10.1 \
  --storage local-lvm \
  --rootfs 10 \
  --password yourpassword
LXC vs VM: Use LXC for Linux-only workloads where memory efficiency matters. Use KVM VMs when you need a different OS, isolated kernel, or Windows.

Security Hardening

Proxmox exposes port 8006 to the public internet by default. Apply these hardening steps before going live.

Restrict Web UI access by IP

ufw allow from YOUR_IP to any port 8006
ufw deny 8006

Change the Web UI port

# Edit /etc/default/pveproxy
LISTEN_PORT=8443
systemctl restart pveproxy

Install Fail2Ban

apt install fail2ban
# Create /etc/fail2ban/jail.d/proxmox.conf
[proxmox]
enabled = true
port = https,8006
filter = proxmox
logpath = /var/log/daemon.log
maxretry = 3
bantime = 3600

Keep Proxmox updated

apt update && apt dist-upgrade -y

Need a VPS for Proxmox?

AsiaGB Thailand VPS starts at 500 THB/month — SSD storage, KVM virtualization support, 99% uptime, fast support.

View VPS Plans

Frequently Asked Questions

What is Proxmox VE?

Proxmox VE is a free, open-source Type 1 hypervisor based on Debian Linux that lets you create and manage KVM virtual machines and LXC containers through a web browser.

Does AsiaGB VPS support Proxmox VE?

Yes. Choose a plan with at least 4 GB RAM and contact support to confirm KVM virtualization is enabled on your node before ordering.

How much RAM does Proxmox VE need?

Proxmox itself uses roughly 1–2 GB. We recommend at least 4 GB total to have headroom for VMs or LXC containers.

What is the difference between a VM and an LXC container?

A KVM VM runs its own kernel and can host any OS including Windows. An LXC container shares the host kernel, uses far fewer resources, and is ideal for Linux workloads.

Can I migrate a Proxmox VM elsewhere?

Yes. Export the disk with qm export as .qcow2 or .raw, then import it on any KVM-compatible host or cloud platform that accepts those formats.

Is Proxmox VE free?

Yes. Proxmox VE is free open-source software (AGPL v3). Personal and homelab use requires no subscription.