8 min read1 day ago
–
Overview
In this first phase of our series on building a production-ready local private cloud, we’ll cover the basics: what Proxmox is, KVM fundamentals, recommended hardware, and a note for those on a budget (like me). We’ll explore the Proxmox web UI and CLI tools, dive into their capabilities, and test by creating a simple VM and LXC container. By the end, you’ll have a solid foundation to build upon in later phases, like automation with Packer and Terraform.
This guide is based on Proxmox VE 9.1, the latest version as of December 2025. Always check the official site for updates.
The Why?
Why build your own private cloud instead of using AWS or Azure? To truly optimize and push systems to their limits, you need to understand the underlying me…
8 min read1 day ago
–
Overview
In this first phase of our series on building a production-ready local private cloud, we’ll cover the basics: what Proxmox is, KVM fundamentals, recommended hardware, and a note for those on a budget (like me). We’ll explore the Proxmox web UI and CLI tools, dive into their capabilities, and test by creating a simple VM and LXC container. By the end, you’ll have a solid foundation to build upon in later phases, like automation with Packer and Terraform.
This guide is based on Proxmox VE 9.1, the latest version as of December 2025. Always check the official site for updates.
The Why?
Why build your own private cloud instead of using AWS or Azure? To truly optimize and push systems to their limits, you need to understand the underlying mechanics. Plus, it’s fun and educational — two birds with one shotgun! In a world of cloud abstraction, rolling your own teaches resilience, cost-efficiency, and customization.
Virtualization Basics: What Is It All About?
Virtualization abstracts physical computer resources, allowing multiple isolated environments to share the same hardware as if each had its own dedicated machine. This is powered by hypervisors.
Hypervisors are software that allocate virtual resources to virtual machines (VMs). They come in two flavors:
- **Type 1 (Bare-Metal): **Runs directly on hardware (e.g., KVM, ESXi, Hyper-V).
- Type 2: Runs on top of a host OS (e.g., VirtualBox, VMware Workstation).
Kernel-Based Virtual Machine (KVM) is a Type 1 hypervisor built into the Linux kernel, transforming Linux into a full virtualization platform.
QEMU (Quick EMUlator) is a user-space emulator that, paired with KVM, delivers high-performance VM runtime by emulating hardware.
A VM uses these virtual resources to run a full OS, essentially emulating hardware inside another computer for tasks any physical machine can handle. For broader appeal, note that Proxmox supports Windows VMs alongside Linux (use VirtIO drivers and OVMF UEFI for modern guests).
Proxmox
Proxmox Virtual Environment (PVE) is a Debian-based, open-source platform integrating KVM, QEMU, and LXC into a unified system with centralized management, clustering, and storage.
The architecture below illustrates Proxmox internals:
Press enter or click to view image in full size
Proxmox Internals
Hardware Recommendations
Minimum requirements:
- CPU: 64-bit (Intel 64 or AMD64) with Intel VT/AMD-V support for KVM.
- RAM: 1 GB base, plus more for guests.
- Network: One NIC.
If hardware is unaffordable, install Proxmox in a VM (e.g., VirtualBox with nested virtualization enabled). How to setup it up is out of the scope of this post.
PreInstallation
- Grab the ISO from Proxmox Official Website.
How to Install
- Boot from USB; select “Install Proxmox VE (Graphical)” — if you wanna do it some other way read the fucking menual.
Press enter or click to view image in full size
PVE grub menu
2. Accept their EULA¹, no one reads that stuff so we can just click on “I agree”.
Press enter or click to view image in full size
EULA
3. Select target disk (erases all data):
Press enter or click to view image in full size
Target Harddisk Selection
- Click Options for customization (e.g., filesystem: EXT4 default; ZFS for advanced with RAID²)
Press enter or click to view image in full size
Advanced Harddisk Options
4. Set country, timezone, keyboard.
5. Set strong root password (12+ chars, mixed types) and email for notifications.
6. Network config (hostname, IP — remember for UI access):
Press enter or click to view image in full size
Network Setup
8. Review, install, reboot. Grab a snack you deserve it!
Post-Installation
Access UI at https://<IP>:8006/ and you will be prompted to login, the credentials are root and the password is the one you’ve already setup previously during the installation or you can ssh root@<IP>.
Press enter or click to view image in full size
PVE Dashboard
- Dark mode: Profile > Color Theme > Proxmox Dark (For the love of god, don’t use the light theme).
- Add the Proxmox IP to your
hostsfile for easy access. - Update:
apt update && apt full-upgrade. - Disable
pve-enterpriserepository
Press enter or click to view image in full size
Disable PVE Enterprise Repositories
- Or by
sshing into the PVE node and edit theEnabledparameter tofalsein/etc/apt/sources.list.d/pve-enterprise.sources
Press enter or click to view image in full size
- Enable 2FA in UI. By click on Datacenter, then the Two Factor option under Permissions, click on Add and fill the necessary info
Press enter or click to view image in full size
- Enable and configure the
[pve-firewall](https://pve.proxmox.com/wiki/Firewall). - Run the post-installation script by extremeshok to automate common Proxmox VE post-install configuration and optimization steps.
PS: While widely used, review the code and test in non-prod to ensure alignment.
- Reboot after configuration.
Terminology
Core Proxmox concepts
- Node: A physical server running Proxmox VE. Multiple nodes can be joined to form a cluster.
- Cluster: A group of Proxmox nodes managed as one system. Enables centralized management, live migrations, and High Availability (HA).
- Datacenter: A logical grouping inside Proxmox (mostly an organizational layer, not physical) containing nodes, storage, networks, and permissions.
Virtualization technologies
- Virtual Machine (VM): A fully virtualized system with its own kernel, OS, and virtual hardware (used for strong isolation or different OSes).
- Container (LXC): Lightweight OS-level virtualization that shares the host kernel; faster and more efficient than VMs.
- KVM (Kernel-based Virtual Machine): The Linux kernel module enabling hardware-accelerated virtualization. Proxmox uses KVM to run VMs.
- QEMU: The userspace emulator that works with KVM to emulate hardware and manage VM I/O (KVM + QEMU = Proxmox VM engine).
- LinuX Containers (LXC): The container runtime used by Proxmox for system containers (not Docker).
Storage Terminology
- Storage Backend: Defines where VM disks are stored. Common types: ZFS, LVM/LVM-thin, NFS, Ceph, Directory.
- ZFS: A combined filesystem + volume manager with snapshots, compression, checksums, and replication.
- LVM / LVM-thin: Logical Volume Manager; LVM for traditional block storage, LVM-thin for thin-provisioned volumes (more cloud-like).
- Ceph: A distributed storage system providing block storage (RBD), replication, and high availability.
- Volume: A virtual disk attached to a VM or container.
- Snapshot: A point-in-time copy of a VM or container disk state. Used for backups, rollbacks, and testing.
Networking Concepts
- Bridge (
**vmbr**): A virtual switch connecting VMs and containers to the host and physical network. - VLAN: Used to segment traffic inside your private cloud (e.g., management, storage, public services).
- SDN (Software-Defined Networking): Advanced feature allowing virtual networks, zones, and VNETs.
Availability & Operations
- Live Migration: Move a running VM from one node to another with no downtime.
- High Availability (HA): Automatically restarts VMs or containers on another node if a node fails.
- Quorum: A cluster safety mechanism that prevents split-brain scenarios. Requires a majority of nodes (or a QDevice).
- QDevice: A lightweight quorum device used in 2-node clusters to maintain quorum.
Backup & Automation
- Proxmox Backup Server (PBS): A dedicated backup solution with incremental backups, deduplication, compression, and encryption.
- Templates: A pre-configured VM or container image used to rapidly deploy new workloads.
- Cloud-Init: Automates VM initialization (hostname, SSH keys, users, networking).
- API: Proxmox exposes a full REST API for automation with Terraform, Ansible, and CI/CD pipelines.
Creating a Simple VM
For a visual demo, watch Proxmox Beginner’s Guide: Everything You Need to Get Started by WunderTech an excellent video i must say.
1. First, upload or download your target OS ISO. In this test, we’ll use Ubuntu Server 24.04.3:
Press enter or click to view image in full size
Uploading ISO
Press enter or click to view image in full size
Download ISO from URL
Now after upload your ISO image, you have two routes:
- The normal route for those who touch grass: Web UI.
- The hacker route, for those whose only close encounter is with family: CLI.
Using the WebUI
Click the big blue “Create VM” button in the top right (get your eyes checked if you missed it) and explore the wizard settings. Assign CPU (2 cores), RAM (2GB), disk (16GB), network (bridge=vmbr0). For Windows guests, select VirtIO drivers.
Press enter or click to view image in full size
Using the CLI
- For more details RTFM.
qm create 100 --name test-vm --net0 virtio,bridge=vmbr0 --cores 2 --memory 2048 --scsi0 local-lvm:16 --cdrom local:iso/ubuntu-24.04.3-live-server-amd64.iso
Accessing your VM
As you’ve noticed, a new entry appears under your node (e.g., ‘pve’). Congrats, you’re a parent now! Customize via options tabs. Click “Console” for access (noVNC/HTML5 default; SPICE for better perf). Install the OS, then add the guest agent for metrics.
Press enter or click to view image in full size
VM Console
Creating a Simple LXC Container
LXCs are efficient for Linux apps; avoid running Docker on the host — use a privileged LXC or VM instead.
- UI: Download a template (e.g., Debian from CT Templates tab).
- Create CT: Set hostname, root password, network (
bridge=vmbr0, DHCP or static IP). - CLI:
pct create 101 local:vztmpl/debian-12-standard_12.0–1_amd64.tar.zst --hostname test-lxc --cores 1 --memory 1024 --net0 name=eth0,bridge=vmbr0,ip=dhcp
Access via console or SSH after start.
Next Steps
With Proxmox running, next we’ll automate provisioning in Phase 2. Try your first VM/LXC and share your hardware specs in the comments! Check the repo for my scripts and configs.
Notice
These posts are meant to guide you, rather than provide a step-by-step tutorial. Part of the process is developing your ability to research, read documentation, and problem-solve on your own. Building these skills is an important part of learning, and I hope this approach will help you gain confidence.
Footnotes
¹: Make sure to read it. Since we are building in a test environment (even though we are trying to get as close as possible to a production ready state) we are going to skip it.
²: Redundant Array of Independent Disks, is a data storage virtualization technology that combines multiple physical data storage components into one or more logical units. Note that in production environments it is highly recommended to use RAID to ensure data redundancy, performance improvements, or both.