# Virtualization: Proxmox VE

This page outlines how I installed, configured, and currently use **Proxmox VE** as the foundation of my home lab virtualization platform. It includes steps for installing Proxmox, setting up storage, creating virtual machines and LXC containers, and using templates for rapid deployment.

### 📥 1. Proxmox VE Installation

#### 🛠 Requirements: 

- CPU with virtualization support (Intel VT-x / AMD-V)
- 8GB+ RAM (16GB recommended)
- SSD/HDD storage
- Bootable USB with Proxmox ISO

#### 🔧 Steps:

1. Download the latest ISO: <a class="cursor-pointer" data-end="872" data-start="836" rel="noopener" target="_new">https://www.proxmox.com/en/downloads</a>
2. Create a bootable USB drive with Rufus or the `dd` command.
3. Boot from USB and follow the installation wizard:
    
    
    - Accept EULA
    - Select target disk (use ZFS if using multiple disks or for snapshots)
    - Set country, time zone, and keyboard
    - Set root password and email
    - Assign a static IP, hostname (e.g., `proxmox.local`), and gateway
4. Reboot and access the web GUI:  
    `https://<proxmox-ip>:8006`

---

### ⚙️ 2. Initial Configuration

#### ✅ Post-Install Checklist:

- Update system:

```
apt update && apt full-upgrade -y
```

- (Optional) Remove subscription nag:

```
sed -i.bak "s|data.status !== 'Active'|false|" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy
```

- Add no-subscription repo in `/etc/apt/sources.list.d/pve-enterprise.list`:

```
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
```

- Add SSH key for secure login
- Set up storage (local-lvm, additional disks via ZFS or ext4)

### 🧱 3. Creating a Virtual Machine (VM)

#### Steps:

1. Upload ISO to `local` or `local-lvm` storage
2. Go to **Create VM**
3. General:
    
    
    - Name: `ubuntu-server`
4. OS:
    
    
    - Select ISO image
5. System:
    
    
    - Use default (UEFI or BIOS)
6. Hard Disk:
    
    
    - Choose `local-lvm`, disk size
7. CPU &amp; Memory:
    
    
    - 2 cores, 4GB RAM (example)
8. Network:
    
    
    - Select `vmbr0` (bridge to LAN)
9. Confirm and finish

#### Post-VM:

- Start VM
- Install OS (e.g., Ubuntu, Debian, Windows)
- Set static IP, install guest agent:

```
apt install qemu-guest-agent
systemctl enable --now qemu-guest-agent
```

### 📦 4. Creating LXC Containers

#### LXC Benefits:

- Lightweight, fast
- Ideal for services like DNS, Pi-hole, NGINX, Git, etc.

#### Steps:

1. Go to **Create CT**
2. General:
    
    
    - Set hostname and password
3. Template:
    
    
    - Download from Proxmox template library
4. Root Disk:
    
    
    - Choose size and storage
5. CPU &amp; Memory:
    
    
    - Allocate as needed
6. Network:
    
    
    - Assign static IP or DHCP
7. Confirm and finish

#### Example Services via LXC:

- Pi-hole
- NGINX reverse proxy
- Node Exporter
- Lightweight Docker host (with nesting enabled)

---

### 🧰 5. Using and Creating Templates

#### VM Templates:

1. Create and configure a VM (e.g., Ubuntu minimal)
2. Shutdown VM
3. Convert to template:

```
qm template <vmid>
```

#### LXC Templates:

1. Download from **CT Templates** in Proxmox GUI
2. Or upload custom `.tar.gz` template to:

```
/var/lib/vz/template/cache/
```

### 🛡️ 6. Best Practices &amp; Tips

- **Backups:** Schedule daily/weekly backups to external storage (e.g., NFS or USB)
- **Snapshots:** Take before major updates or reconfigurations
- **Networking:** Use VLANs and firewall rules via pfSense
- **High Availability (Optional):** Use Proxmox cluster for HA with shared storage
- **Resource Monitoring:** Integrate with **Zabbix** or built-in usage graphs