Proxmox: Complete Installation and Configuration Guide

Proxmox VirtualEnvironment is a robust, open-source platform for enterprise virtualization. It combines KVM hypervisor and Linux Containers (LXC) to provide a powerful infrastructure virtualization platform. Whether you're a system administrator, IT professional, or hobbyist, Proxmox delivers enterprise-grade features without the enterprise price tag. This comprehensive guide covers installation, configuration, and advanced management of Proxmox.
What is Proxmox?
Proxmox is a Type 1 hypervisor (bare-metal virtuvisor) that runs directly on hardware, unlike Type 2 hypervisors (like VirtualBox) that run on top of an operating system. Proxmox integrates two powerful virtualization technologies:
Key Features:
KVM (Kernel-based Virtual Machine)
- Full hardware virtualization
- Run any operating system as a VM
- Near-native performance
- Supports nested virtualization
LXC/Linux Containers
- Lightweight containerization
- Lower resource overhead than VMs
- Faster deployment
- Ideal for Linux-based services
Web Management Interface
- User-friendly dashboard
- Remote access via HTTPS
- REST API for automation
- Multi-user support
Clustering
- Multiple nodes in one cluster
- Shared storage management
- Live VM migration
- High availability (HA)
System Requirements
Minimum Requirements:
- CPU: x86-64 processor with virtualization support
- RAM: 8GB (16GB+ recommended)
- Storage: 50GB SSD (more for VMs)
- Network: Gigabit Ethernet
- Power: Reliable power supply (UPS recommended)
Recommended Setup:
- CPU: Multi-core Intel/AMD with virtualization
- RAM: 32GB or more
- Storage: Multiple SSDs (RAID configuration)
- Network: 10Gb Ethernet for production
- Redundancy: Multiple nodes for clustering
Step 1: Download and Create Installation Media
Get Proxmox ISO
# Download latest Proxmox VE ISO
wget https://www.proxmox.com/en/downloads/category/proxmox-ve
# Verify download integrity
sha256sum proxmox-ve_*.iso
Create Bootable USB
Using Linux:
# List devices
lsblk
# Write ISO to USB (replace sdX with your USB device)
sudo dd if=proxmox-ve_*.iso of=/dev/sdX bs=4M status=progress
sudo sync
Using balenaEtcher (Recommended):
- Download balenaEtcher
- Select ISO file
- Select USB drive
- Click Flash
Step 2: Installation Process
Boot and Initial Setup
- Insert bootable USB and reboot
- Select "Proxmox VE" from boot menu
- Accept license terms
- Select target disk for installation
- Configure keyboard layout
- Enter system password (strong password recommended)
- Set hostname (e.g., "pxmx01.kaushal.local")
- Configure network:
- Hostname: pxmx01
- IP Address: 192.168.1.50/24
- Gateway: 192.168.1.1
- DNS: 8.8.8.8
- Confirm settings and start installation
- Remove USB and reboot after completion
Post-Installation
Access the web interface:
https://192.168.1.50:8006
Default Credentials:
- Username:
root - Password: (the one you set during installation)
- Realm:
PAM
Step 3: Access Proxmox Management Interface
First Login
- Navigate to
https://your-ip:8006 - Accept SSL certificate warning
- Enter credentials:
- Username: root
- Password: Your installation password
- Realm: PAM (Proxmox Authentication Manager)
Navigate the Dashboard
The Proxmox dashboard shows:
- Node overview - CPU, memory, disk usage
- VM/Container status - Running instances
- Storage pools - Available storage
- System alerts - Warnings and events
- Resource graphs - Performance metrics
Step 4: Storage Configuration
Remove local_lvm (Recommended)
By default, Proxmox creates local (for OS) and local_lvm (for VMs) storage. Remove unused LVM:
Via Web Interface:
- Navigate to Datacenter → Storage
- Select
local_lvm - Click Remove
- Confirm deletion
Via CLI:
# SSH into Proxmox
ssh [email protected]
# List logical volumes
lvs
# Remove local_lvm
lvremove /dev/pve/data
# Extend local volume with freed space
lvextend -l +100%FREE /dev/pve/root
resize2fs /dev/mapper/pve-root
Add Additional Storage
Add Local Directory:
- Create directory:
mkdir -p /mnt/storage - Web UI: Datacenter → Storage → Add
- Select Directory
- Configure:
- ID: storage (or custom name)
- Directory: /mnt/storage
- Content: Disk image, Container, ISO
- Click Add
Add NFS Storage:
- Web UI: Datacenter → Storage → Add
- Select NFS
- Configure:
- Server: 192.168.1.100
- Export: /export/proxmox
- Target: /mnt/nfs
- Click Add
Step 5: Disable Display Shutdown
Proxmox automatically shuts down the display to save power. Disable this:
# SSH into Proxmox
ssh [email protected]
# Create/edit systemd override
sudo systemctl edit getty@tty1
# Add section:
[Unit]
After=
Before=
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM
# Disable screensaver
sudo systemctl mask systemd-logind
sudo reboot
Step 6: Configure SSH Access
Generate SSH Key Pair
On your local machine:
# Generate ECDSA key (faster, smaller than RSA)
ssh-keygen -t ecdsa -b 521 -f ~/.ssh/proxmox
# Create key
# Keep passphrase for security
Deploy Public Key
# Copy public key to Proxmox
ssh-copy-id -i ~/.ssh/proxmox.pub [email protected]
# Verify (should not ask for password)
ssh -i ~/.ssh/proxmox [email protected] "hostname"
Step 7: Configure Remote Access - VNC
Method 1: Web Console
- Create or select VM/Container
- Click Console in top menu
- Browser-based access (via spice/vnc)
Method 2: VNC Server (Direct IP)
Configure VNC in VM:
- Create VM with suitable OS
- Boot and configure Linux (e.g., Ubuntu)
- Install VNC server:
sudo apt install -y tightvncserver
# Create VNC session
vncserver -geometry 1920x1080 -depth 24 :1
- In Proxmox Web UI:
- VM ID: Select VM
- Console tab → Configure VNC
- Set VNC display (usually :5900)
Connect from Local Machine:
# Using vncviewer
vncviewer 192.168.1.50:5900
# Using SSH tunnel (more secure)
ssh -L 5900:localhost:5900 [email protected]
# Then: vncviewer localhost:5900
Method 3: XSPICE (Advanced)
Edit VM config for SPICE access:
# SSH into Proxmox
ssh [email protected]
# Edit VM config (replace 100 with VM ID)
nano /etc/pve/nodes/pxmx01/qemu-server/100.conf
# Add or modify:
spice: "hostname=192.168.1.50,port=60100"
# Save and restart VM
qm stop 100
qm start 100
Step 8: File Management and Storage
ISO Location
/var/lib/vz/template/iso/
Upload ISO via CLI:
scp ~/ubuntu-22.04.iso [email protected]:/var/lib/vz/template/iso/
VM Template Storage
/var/lib/vz/template/qemu/
Container Template Storage
/var/lib/vz/template/cache/
Mount Remote Directory Locally
# Mount Proxmox storage on local machine
sshfs [email protected]:/var/lib/vz/ /mnt/proxmox-local
# Unmount when done
fusermount -u /mnt/proxmox-local
Step 9: Basic VM Operations
Create a Virtual Machine
- Web UI: Click Create VM (top right)
- General:
- Name: web-server
- VM ID: Auto or custom
- Node: Select node
- OS: Select Linux or Windows image
- System: Keep defaults (UEFI, BIOS as needed)
- Disks:
- Storage: local or local_lvm
- Size: 50GB+ for OS + applications
- CPU: 4 cores for web server
- Memory: 8GB RAM
- Network:
- Bridge: vmbr0 (default)
- Confirm: Click Finish
Create Container (LXC)
- Click Create CT (top right)
- General: Name and VM ID
- Template: Select OS template (Ubuntu, Debian, etc.)
- Disk: 20GB for OS
- CPU: 2 cores
- Memory: 2GB RAM
- Network: IP address 192.168.1.60/24
- Confirm: Click Finish
Start/Stop/Restart VM
# Via Web UI: Right-click VM → Start/Stop/Restart
# Via CLI:
ssh [email protected]
# Start VM (ID 100)
qm start 100
# Stop VM
qm stop 100
# Restart VM
qm reboot 100
# Shutdown gracefully
qm shutdown 100
# Force stop (if stuck)
qm stop 100 --force-stop
Step 10: Live Migration
Migrate VMs between nodes without downtime:
# Via Web UI:
1. Right-click VM
2. Select **Migrate**
3. Choose target node
4. Click **Migrate**
# Via CLI:
qm migrate 100 target-node
Advanced Configuration
Clustering (Multiple Nodes)
- Install Proxmox on additional servers
- On new node: Datacenter → Cluster
- Click Create Cluster
- Or Join Cluster if adding to existing
High Availability (HA)
- Datacenter → HA → Edit Resources
- Select VMs to protect
- Configure HA priority and behavior
- Automatic restart on node failure
Backup Configuration
# Enable automatic backup
# Web UI: **Datacenter** → **Backup**
# Configure:
# - Node: Select node
# - Storage: Select storage
# - Schedule: Daily at specific time
# - Retention: Keep 7-30 days
Update Proxmox
# SSH into Proxmox
ssh [email protected]
# Check updates
apt update
apt list --upgradable
# Install updates
apt upgrade
# Reboot if needed
reboot
Troubleshooting
Issue 1: Can't Access Web Interface
# Check if pveproxy is running
systemctl status pveproxy
# Restart proxy
systemctl restart pveproxy
# Check firewall
ufw status
ufw allow 8006/tcp
Issue 2: VM Won't Start
# Check logs
tail -f /var/log/pveproxy.log
# Check VM config
qm config 100
# Test VM start
qm start 100 -verbose
Issue 3: Network Issues
# Check bridge
ip a
# Ping gateway
ping 192.168.1.1
# Check DHCP (if used)
dhclient -v
Best Practices
- Regular Backups - Backup VMs weekly
- Resource Monitoring - Monitor CPU, RAM, disk
- Security Updates - Update regularly
- Documentation - Document VM purposes and configs
- Redundancy - Use clustering for critical services
- Testing - Test disaster recovery procedures
- Capacity Planning - Monitor growth and plan upgrades
Conclusion
Proxmox provides a powerful, flexible virtualization platform for enterprise and small-to-medium environments. Its combination of KVM and LXC, along with a user-friendly web interface, makes it an excellent choice for infrastructure virtualization. With proper configuration and maintenance, Proxmox can reliably host hundreds of virtual machines.