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.
Table of Contents
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.
| Feature | Proxmox VE | VirtualBox | VMware ESXi |
|---|---|---|---|
| Hypervisor type | Type 1 (bare-metal) | Type 2 | Type 1 |
| Cost | Free (Enterprise optional) | Free | Free (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:
| Resource | Minimum | Recommended |
|---|---|---|
| RAM | 2 GB | 4 GB or more |
| SSD storage | 32 GB | 50 GB or more |
| CPU | 2 vCPU (Intel/AMD x86-64) | 4+ vCPU |
| Base OS | Debian 12 Bookworm | Debian 12 Bookworm |
| KVM virtualization | Must be enabled | Must be enabled |
| Network | 1 public IP | Public IP + private network |
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
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.
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
- Click Create VM in the top-right corner.
- General: give the VM a name, e.g., "ubuntu-web".
- OS: select the ISO you uploaded.
- System: use the default SeaBIOS for most Linux guests.
- Disk: set the size, e.g., 20 GB (Bus/Device: VirtIO SCSI for best performance).
- CPU: assign sockets and cores as needed.
- Memory: set RAM in MB, e.g., 1024 for 1 GB.
- Network: use
vmbr0(the default bridge). - 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
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 type | Used for | Advantages |
|---|---|---|
| Directory (local) | ISO images, VM disks, backups | Simple, no extra setup |
| LVM-Thin | VM disks | Snapshots, thin provisioning |
| ZFS | VM disks | Data integrity, snapshots, RAID |
| NFS | Backups, ISO images | Shareable 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
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 PlansFrequently 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.