Skip to content

Containers & Virtualization

The compute layer of the home lab — the hypervisors and containerization platform that everything else in this site (self-hosted apps, core services, the Microsoft and Tanium labs) actually runs on top of.

What's Covered

  • Proxmox VE


    Primary hypervisor for the lab — VMs, LXC containers, and datacenter-wide management.

    Start here

  • VMware ESXi


    Enterprise-grade hypervisor used alongside Proxmox for select workloads.

    Start here

  • Docker


    Containerization platform for lightweight, portable service deployment — used throughout the Applications & Core Services sections.

    Start here


Proxmox VE: Section Breakdown

Proxmox is the primary hypervisor for this lab, so its section is the deepest:

Page Covers
Overview What Proxmox VE is and why it's used here
Installation Initial install on bare metal
Post-Installation Baseline configuration after a fresh install
Virtual Machines Creating and managing VMs
Containers Creating and managing LXC containers
Datacenter Manager Multi-node management

How This Section Fits the Rest of the Lab

Almost everything documented elsewhere on this site runs on top of what's covered here:

  • Applications & Integrations — most self-hosted apps (Nextcloud, Bookstack, Authentik, etc.) run in individual Proxmox LXC containers
  • Core Services — Mailcow, Cloudflare tunnels, and the Ansible automation stack all run on hosts provisioned here
  • Microsoft Lab — the SCCM/MECM environment runs on Hyper-V VMs, documented separately since it uses a different virtualization stack for that specific lab

If you're setting up a new service anywhere else in this documentation, this is the section to start from: provision the VM or LXC here first, then move on to the app-specific guide.


Choosing Between a VM and an LXC Container

A quick rule of thumb used throughout this lab:

  • LXC container — default choice for most self-hosted apps (Nextcloud, Bookstack, Authentik, etc.). Lighter weight, faster to provision, shares the host kernel.
  • Full VM — used when a workload needs its own kernel, isn't Linux, or needs strong isolation (e.g. the Microsoft Lab's Hyper-V-based Windows Server environment isn't applicable here, but any Windows workload on Proxmox itself would go this route).

See Proxmox Virtual Machines and Proxmox Containers for the actual creation steps once you've decided which fits.


Once a new LXC is created here, the Ansible LXC Bootstrap playbook in Core Services takes over — creating the automation service account, hardening SSH, and installing baseline packages — so it's ready for the patch and backup automation from day one.