Kokil Thapa - Professional Web Developer in Nepal
Freelancer Web Developer in Nepal with 15+ Years of Experience

Kokil Thapa is an experienced full-stack web developer focused on building fast, secure, and scalable web applications. He helps businesses and individuals create SEO-friendly, user-focused digital platforms designed for long-term growth.

Build a Homelab with Proxmox

By Kokil Thapa | Last reviewed: September 2026

You want to Build a Homelab with Proxmox because cloud bills add up and local staging beats guessing on production. A single used mini-PC or tower can host GitLab runners, Laravel sandboxes, MySQL replicas, and a pfSense gateway. I run Ubuntu servers daily for client deployments, and Proxmox gives the same isolation without renting another VPS. This guide walks from bare metal to a working lab you can trust before you push to EC2 or shared hosting.

For background on the platform itself, read the companion piece on Proxmox VE open-source virtualization. If you prefer someone else to run the Linux layer on your behalf, see Linux system administration services—the same patterns apply whether the metal sits in Kathmandu or a colo rack abroad.

What hardware do you need to build a homelab with Proxmox?

Proxmox VE is Debian-based and runs on almost any x86_64 CPU with hardware virtualization. You do not need enterprise gear on day one. You do need enough RAM and fast storage once you spin up more than two VMs.

A lab that runs one pfSense VM plus two Ubuntu guests wants 16 GB RAM and a 512 GB NVMe drive. A comfortable target for Laravel staging, Redis, MySQL 9.7, and a Jenkins or GitLab runner is 32 GB RAM and 1 TB NVMe. ECC memory helps on 24/7 hosts, but many homelabs run fine without it.

  • CPU: Intel i5/i7 or AMD Ryzen with VT-x/AMD-V enabled in BIOS.
  • RAM: 16 GB minimum; 32–64 GB for multiple PHP 8.3+ stacks and databases.
  • Storage: NVMe for OS and VM disks; optional second drive for ZFS mirror or bulk backups.
  • NIC: One port works; two ports simplify WAN/LAN separation with pfSense.
  • UPS: Essential in Nepal where load-shedding still hits some areas—budget Rs 8,000–15,000 (~USD 60–110) for a 600 VA unit.
Proxmox Homelab TopologyISP Router192.168.1.1Proxmox VE Host32 GB RAM · ZFS · vmbr0VM: pfSenseFirewall · VLANsVM: LaravelPHP 8.3 · NginxVM: GitLabCI Runner · DockerUPS + nightly vzdump to NAS or external USB
Typical Proxmox homelab layout: one physical host running firewall, app, and CI guest VMs behind a UPS.

Used Dell OptiPlex Micro PCs or HP EliteDesk units cost Rs 25,000–45,000 (~USD 185–335) in Kathmandu markets and sip power at 15–25 W idle. They beat loud rack servers for apartment labs. For projects like Adventure Third Pole Trek, I keep production on managed EC2 but replicate the stack locally before Deployer 7 releases go live.

BIOS checklist before install

  1. Enable Intel VT-x or AMD-V and VT-d/IOMMU if you pass through NICs or storage.
  2. Disable Secure Boot unless you plan to enroll Proxmox keys—most homelabs turn it off.
  3. Set boot order to USB first for the installer.
  4. Configure wake-on-LAN if the box sits in a closet and you remote in after power cuts.

How do you install and configure Proxmox VE from scratch?

Download the latest Proxmox VE ISO from the official site and flash it with Ventoy or balenaEtcher. The installer wipes the target disk, so back up anything on that drive first.

Installation steps

  1. Boot the USB installer and choose Install Proxmox VE.
  2. Select the target disk; use ext4 for simple labs or ZFS (RAID0/1) when you have two identical drives.
  3. Set root password—store it in a manager; generate a strong one with the password generator if needed.
  4. Enter a valid email for package notifications.
  5. Set hostname to something like pve.home.lab and a static management IP on your LAN.
  6. Finish install; the web UI listens on https://YOUR-IP:8006.
Proxmox Install FlowFlash ISOInstall PVESet Static IPWeb UI :8006apt update & dist-upgradepve-no-subscription repo (optional)Upload ISO · Create VMCloud-init or manual installConfigure vmbr0 BridgeMatch production VLAN layoutSchedule vzdumpBefore first prod deploy test
Install Proxmox VE, patch the host, bridge networking, then create VMs and schedule backups before loading production-like workloads.

Post-install host hardening

SSH into the host as root and update packages immediately. The Proxmox VE Admin Guide is the authoritative reference for every CLI flag below.

apt update && apt dist-upgrade -y
pveversion -v

# Optional: disable enterprise repo if you have no subscription
# Edit /etc/apt/sources.list.d/pve-enterprise.list and comment the line
# Add pve-no-subscription from Proxmox wiki docs

# Create a non-root admin (recommended)
pveum user add devops@pve -password 'CHANGE_ME'
pveum aclmod / -user devops@pve -role Administrator

Change the default SSH port only if you publish management to the internet—and avoid that. Keep port 8006 on a management VLAN or VPN. Pair the host with a pfSense or OPNsense guest; the guide on pfSense firewall for homelabs covers WAN rules that mirror what I use before exposing any service.

Networking: bridges and VLANs

Proxmox creates vmbr0 during install. All guest VMs attach to this Linux bridge by default. For segmented labs, add VLAN-aware bridges in /etc/network/interfaces:

auto vmbr0
iface vmbr0 inet static
    address 192.168.10.2/24
    gateway 192.168.10.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094

Tag guest NICs with VLAN 20 for DMZ services and VLAN 30 for databases. This mirrors how I isolate staging databases on client projects before domain and hosting migrations cut over.

Should you use KVM VMs or LXC containers in Proxmox?

Both run on the same Proxmox host. The choice affects density, kernel sharing, and how closely you mimic production cloud VMs.

CriteriaKVM VMLXC Container
IsolationFull kernel per guestShared host kernel
Boot time30–60 seconds2–5 seconds
Memory overheadHigher (full OS)Lower
Best forpfSense, Windows, full stack clonesRedis, lightweight APIs, dev DBs
Production parityMatches EC2/VPS closelyDiffers from typical cloud images
Backup (vzdump)Yes, snapshot modeYes, faster and smaller

My default: KVM for anything that must match Ubuntu 24.04 production images, LXC for Redis 8.10 caches and throwaway test databases. Laravel 13 apps with PHP-FPM and queue workers belong in a VM so systemd, opcache, and extension sets match Deployer targets on sister sites like Notary Kathmandu.

Proxmox Storage Choiceslocal-lvmDefault · fastNo redundancyZFS mirrorSnapshots · scrubRecommendedNFS backupOff-host copiesSynology · TrueNASGood for first labBest for 24/7 homelab3-2-1 backup targetvzdump schedule: daily diff · weekly fullKeep copies off the Proxmox boot disk
Storage tiers for a Proxmox homelab: local-lvm for speed, ZFS for resilience, NFS for off-host backup targets.

Creating your first Ubuntu VM

Download Ubuntu 24.04 Server ISO into Datacenter → local → ISO Images. Create a VM with VirtIO SCSI disk and VirtIO network drivers for best performance.

# On the Proxmox host CLI — example VM 101 specs
qm create 101 --name laravel-staging --memory 8192 --cores 4 \
  --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci \
  --scsi0 local-lvm:64,format=raw

qm set 101 --ide2 local:iso/ubuntu-24.04-live-server-amd64.iso,media=cdrom
qm set 101 --boot order=scsi0;ide2
qm start 101

Install openssh-server, UFW, fail2ban, and your PHP stack inside the guest. Cloud-init templates speed up repeatable clones when you rebuild staging every sprint.

How do you run Laravel and CI workloads on a Proxmox homelab?

A homelab earns its power bill when it replaces three cloud VMs you used to rent for testing. Here is a layout I repeat on production Laravel applications.

Reference VM layout

  • VM 110 — app: Nginx, PHP 8.3 or 8.5, Node.js 26 LTS for Vite 8.x asset builds.
  • VM 111 — data: MySQL 9.7 or PostgreSQL 18, Redis 8.10 for cache and queues.
  • VM 112 — ci: GitLab Runner or Jenkins agent executing pipeline steps from Jenkins CI/CD tutorials.
  • VM 113 — edge (optional): Reverse proxy with TLS termination mirroring production Apache/Nginx configs.

Validate API payloads against production schemas using the JSON formatter during integration tests. Keep .env.staging values distinct from production keys—especially payment gateways like eSewa and Khalti.

Dev → Homelab → ProductionLocal Laptopgit push · featureProxmox StagingLaravel 13 · tests · QAProductionEC2 · Deployer 7GitLab CI: lint → phpunit → deploy stagingRunner VM on Proxmox executes jobs locallyManual promote after staging sign-offSame playbook as Court Marriage and legal-tech portals
Use a Proxmox homelab as staging between local development and production Deployer releases on cloud infrastructure.

GitLab Runner on a Proxmox VM

Install the runner inside a dedicated VM—not on the Proxmox host itself. The host should only run virtualization. Register against GitLab.com or a self-hosted instance:

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | bash
apt install gitlab-runner

gitlab-runner register \
  --url https://gitlab.com/ \
  --token YOUR_REGISTRATION_TOKEN \
  --executor docker \
  --docker-image php:8.3-cli \
  --description proxmox-runner-01

Distributed agents reduce queue time; see Jenkins distributed builds with agents for parallel job patterns that translate directly to GitLab tags. Cache Composer and npm directories on a persistent volume to mimic Docker layer caching gains without pushing every build to the cloud.

On a legal-tech portal I built, staging had to replicate document upload paths, Spatie Media Library storage, and queued PDF jobs. One Proxmox VM ran the Laravel app; another held MariaDB 12.3 with anonymised dumps refreshed weekly. That caught permission bugs on storage/app before they hit production—same class of issue I fix during support and maintenance retainers.

For WooCommerce 11.1 or custom carts, clone production data with masked customer fields. Never sync live payment tokens into a homelab reachable from your LAN without firewall rules.

How do you back up and secure a Proxmox homelab?

Homelabs fail when someone treats them as disposable. One bad zfs destroy or disk failure wipes weeks of CI config. Automate backups on day one.

vzdump scheduling

Proxmox includes vzdump for snapshot-based backups to local disk, NFS, or S3-compatible storage via rclone hooks.

# /etc/pve/vzdump.cron — example nightly job at 02:00
0 2 * * * root vzdump --all --mode snapshot --compress zstd \
  --storage nfs-backup --maxfiles 7 --mailto admin@example.com

Follow the 3-2-1 rule: three copies, two media types, one off-site. Copy weekly archives to an external USB stored away from the server. Test restores monthly—restore VM 101 to ID 901 and confirm Laravel still boots.

Security practices that matter

  • Keep Proxmox management on a VLAN not exposed to guest Wi-Fi.
  • Enable two-factor auth for web UI logins via TOTP.
  • Run pveceph status or zpool status checks in weekly cron if you use ZFS.
  • Subscribe to the Proxmox security mailing list or watch the forum advisories.
  • Place pfSense or OPNsense in front of any port-forwards; never forward 8006 to the public internet.

The Proxmox Backup and Restore wiki documents retention flags and hook scripts. For TLS on internal services, use an internal CA or Let's Encrypt DNS challenges—same discipline as production web development projects.

Monitoring and alerts

Install a lightweight LXC with Prometheus node exporters on each VM, or use Proxmox's built-in email alerts for CPU, memory, and disk thresholds. I send Telegram notifications when staging disk crosses 80% because log-heavy queue workers fill partitions fast.

Document every VM in a simple inventory: ID, IP, role, and restore steps. Future you—or a teammate from about me engagements—will thank you at 11 PM when MySQL will not start after a kernel update.

Key Takeaways

  • Start with 32 GB RAM, NVMe storage, and a UPS if power cuts are common in your area.
  • Install Proxmox VE, patch immediately, and keep management off the public internet.
  • Use KVM VMs for production-parity Laravel stacks; use LXC for Redis and lightweight services.
  • Schedule vzdump backups before you load real data—not after the first incident.
  • Run GitLab or Jenkins runners on guest VMs to free cloud CI minutes for production pipelines.
  • Segment networks with VLANs or a pfSense guest before cloning production databases locally.

People Also Ask

Is Proxmox free for homelab use?

Yes. Proxmox VE is open source and free to install without a subscription. You get full virtualization features. A paid subscription adds the enterprise repository and vendor support, but homelab users commonly rely on the no-subscription repo and community forums.

Can Proxmox run on a mini PC?

Yes. Intel NUCs, Dell OptiPlex Micro, and similar 15–35 W systems run Proxmox well for two to four VMs. Add RAM first before buying more CPU cores—memory is the usual bottleneck for PHP and MySQL guests.

Proxmox vs VMware ESXi for homelab?

Proxmox wins on licensing cost and integrated LXC support. Broadcom's VMware licensing changes pushed many engineers toward Proxmox in 2024–2026. ESXi still suits teams already invested in vSphere skills, but Proxmox plus Debian tooling fits Laravel and Linux-heavy stacks natively.

How much power does a Proxmox homelab use?

A mini PC idles at 10–20 W and peaks under 80 W during builds. That is roughly Rs 500–1,200 (~USD 4–9) per month at Nepal residential rates if the box runs 24/7—often less than one small cloud VPS.

Build your lab, then ship with confidence

When you Build a Homelab with Proxmox, you gain a private staging ground that mirrors production without monthly VPS invoices. Patch the host, bridge your networks, snapshot your VMs, and run the same Deployer and GitLab CI flows you use on EC2. Start small—one app VM and one database VM—and expand when queue workers or CI jobs compete for RAM.

If you want help designing staging architecture for a Laravel app, WooCommerce store, or legal-tech portal, review the Court Marriage in Nepal portfolio and related work, or explore API development services and testing and optimization for production hardening after your homelab checks pass. For hands-on infrastructure support, contact us with your current stack and VM count—we can map a sensible first Proxmox layout in one conversation.

Frequently Asked Questions

Yes. Proxmox VE is open source and free to install without a subscription. You get full virtualization. Paid subscriptions add the enterprise repository and vendor support; most homelab users use the no-subscription repo and community forums instead.

You need a 64-bit x86_64 CPU with Intel VT-x or AMD-V enabled in BIOS, 16 GB RAM minimum (32–64 GB for multiple PHP 8.3+ stacks and databases), and NVMe storage—a 512 GB drive suits a small lab, while 1 TB is comfortable for Laravel staging, Redis 8.10, and MySQL 9.7. One NIC works; two simplify WAN/LAN separation with pfSense. Used Dell OptiPlex Micro or HP EliteDesk units cost Rs 25,000–45,000 (~USD 185–335) in Kathmandu and idle at 15–25 W. Budget a 600 VA UPS at Rs 8,000–15,000 (~USD 60–110) if load-shedding affects your area.

Yes. Intel NUCs, Dell OptiPlex Micro, and similar 15–35 W systems run Proxmox well for two to four VMs. Add RAM before buying more CPU cores—memory is usually the bottleneck for PHP and MySQL guests.

A mini PC idles at 10–20 W and peaks under 80 W during builds. Running 24/7 at Nepal residential rates costs roughly Rs 500–1,200 (~USD 4–9) per month—often less than one small cloud VPS.

Download the latest Proxmox VE ISO from the official site and flash it with Ventoy or balenaEtcher—the installer wipes the target disk, so back up first. Boot the USB, choose Install Proxmox VE, pick ext4 for simple labs or ZFS when you have two identical drives, set a strong root password, enter a valid email, and assign a static management IP with a hostname like pve.home.lab. After install the web UI listens on https://YOUR-IP:8006. SSH in immediately, run apt update and apt dist-upgrade, optionally switch to the no-subscription repo, and create a non-root admin with pveum before creating VMs.

Enable Intel VT-x or AMD-V in BIOS, and enable VT-d or IOMMU if you plan to pass through NICs or storage to guests. Disable Secure Boot unless you will enroll Proxmox keys—most homelabs turn it off. Set boot order to USB first for the installer. Configure wake-on-LAN if the box sits in a closet and you need to bring it back after power cuts, which matters in areas where load-shedding still occurs.

Both run on the same host but serve different roles. KVM gives full kernel isolation per guest, takes 30–60 seconds to boot, and matches EC2 or VPS production images closely—use it for pfSense, Windows, and full Laravel 13 stacks with PHP-FPM and queue workers. LXC shares the host kernel, boots in 2–5 seconds, uses less memory, and suits Redis 8.10 caches and throwaway test databases. Both support vzdump backups; LXC backups are faster and smaller. My default: KVM for anything that must mirror Ubuntu 24.04 production, LXC for lightweight services.

Proxmox wins on licensing cost and integrated LXC support. Broadcom's VMware licensing changes pushed many engineers toward Proxmox between 2024 and 2026. ESXi still suits teams already invested in vSphere skills, but Proxmox plus Debian tooling fits Laravel and Linux-heavy stacks natively—you get apt, standard SSH workflows, and LXC alongside KVM without a paid hypervisor license.

Proxmox creates vmbr0 during install and all guest VMs attach to this Linux bridge by default. For segmented labs, configure a VLAN-aware bridge in /etc/network/interfaces with bridge-vlan-aware yes and bridge-vids 2-4094, then tag guest NICs—for example VLAN 20 for DMZ services and VLAN 30 for databases. This mirrors how staging databases get isolated before domain and hosting migrations cut over on client projects. Pair the host with a pfSense or OPNsense guest VM for WAN rules before exposing any service from your LAN.

A practical layout repeats across production Laravel applications: VM 110 runs Nginx, PHP 8.3 or 8.5, and Node.js 26 LTS for Vite 8.x asset builds; VM 111 holds MySQL 9.7 or PostgreSQL 18 plus Redis 8.10; VM 112 runs a GitLab Runner or Jenkins agent; an optional VM 113 terminates TLS as a reverse proxy. Install the GitLab Runner inside a dedicated guest VM—not on the Proxmox host itself—with the docker executor and php:8.3-cli image. Keep .env.staging values distinct from production keys, especially payment gateways like eSewa and Khalti, and cache Composer and npm directories on a persistent volume.

Download Ubuntu 24.04 Server ISO into Datacenter, local, ISO Images. Create a VM with VirtIO SCSI disk and VirtIO network drivers for best performance—for example VM 101 with 8 GB RAM, 4 cores, and a 64 GB disk on local-lvm. Attach the ISO as a virtual CD-ROM, set boot order to disk then CD, and start the VM. Inside the guest install openssh-server, UFW, fail2ban, and your PHP stack. Cloud-init templates speed up repeatable clones when you rebuild staging every sprint, which saves time compared to manual reinstalls.

Proxmox includes vzdump for snapshot-based backups to local disk, NFS, or S3-compatible storage via rclone hooks. Schedule a nightly job in /etc/pve/vzdump.cron—for example at 02:00 with vzdump --all --mode snapshot --compress zstd --storage nfs-backup --maxfiles 7. Follow the 3-2-1 rule: three copies, two media types, one off-site. Copy weekly archives to an external USB stored away from the server. Test restores monthly by restoring VM 101 to ID 901 and confirming Laravel still boots. Automate this on day one, not after the first disk failure.

Keep Proxmox management on a VLAN not exposed to guest Wi-Fi and never forward port 8006 to the public internet. Enable two-factor authentication for web UI logins via TOTP. Create a non-root admin user instead of relying on root daily. Place pfSense or OPNsense in front of any port-forwards. Run pveceph status or zpool status checks weekly if you use ZFS. Subscribe to Proxmox security advisories. For TLS on internal services use an internal CA or Let's Encrypt DNS challenges—the same discipline as production web projects. Document every VM with ID, IP, role, and restore steps.

Always install GitLab Runner inside a dedicated guest VM, not on the Proxmox host itself. The host should only run virtualization. Register the runner against GitLab.com or a self-hosted instance using the docker executor with a php:8.3-cli image. Cache Composer and npm directories on a persistent volume to mimic Docker layer caching without pushing every build to the cloud. Distributed agents with tags reduce queue time when multiple pipeline jobs run in parallel, matching patterns from Jenkins distributed build setups.

Clone production architecture across separate VMs: one guest runs the Laravel app with Nginx and PHP-FPM, another holds MariaDB 12.3 or MySQL 9.7 with anonymised dumps refreshed weekly. Replicate document upload paths, Spatie Media Library storage, and queued PDF jobs to catch permission bugs on storage/app before they hit production. For WooCommerce 11.1 or custom carts, clone production data with masked customer fields. Never sync live payment tokens into a homelab reachable from your LAN without strict firewall rules segmenting guest traffic from management networks.

Share this article

0 Comments

Leave a comment

Your email is not published. Comments appear once they have been read. Sign in to have your details filled in.

Quick Contact Options
Choose how you want to connect me: