Turning an Old Laptop into a Bare-Metal Hypervisor: Proxmox VE Setup (Part 1)
For a while, I had been wanting to dive deeper into server architectures, get my hands dirty with computer networking, and gain practical experience to back up what I study in Computer Science at BFH. At the same time, I needed a dedicated machine at home to host a few personal services. Instead of spending money on expensive enterprise gear, I decided to repurpose an old laptop sitting idle on my desk.
Once I started digging in—watching dozens of YouTube breakdowns, reading documentation, and browsing homelab forums—I realized there were two main paths: take the easy route by running VirtualBox on top of a desktop OS, or wipe the machine clean and install a bare-metal hypervisor directly on the hardware. I chose the latter. It is less forgiving, but far more educational.
In this series, I document how I turned an old laptop into an isolated homelab server. First step: Proxmox Virtual Environment (PVE).
1. Why Proxmox VE? (Architectural Choice)
Virtualization generally falls into two categories:
- Type-2 Hypervisors (VirtualBox, VMware Workstation): Run as software on top of an existing host OS (Windows/Linux). They are convenient for quick tests, but the host operating system adds overhead and prevents you from experiencing true bare-metal hardware control.
- Type-1 Hypervisors (Proxmox VE, ESXi): Sit directly on the physical hardware. There is no middleman operating system; Proxmox itself is the operating system.
I went with Proxmox VE because it is open-source, built on Debian, and natively combines two virtualization models:
- KVM: Full hardware virtualization for running independent OS images.
- LXC (Linux Containers): OS-level virtualization sharing the host kernel, consuming minimal RAM and CPU.
This dual approach allows me to run resource-heavy workloads in isolated VMs while spinning up microservices in lightweight containers side by side without choking a 16GB RAM limit.
+-------------------------------------------------------+
| Hardware (Laptop) |
| (CPU, 16GB RAM, SSD, Ethernet NIC) |
+-------------------------------------------------------+
|
+-------------------------------------------------------+
| Proxmox VE (Debian Kernel) |
| - KVM (Full Hardware Isolation) |
| - LXC (Lightweight Containers) |
| - Linux Bridge (Kernel-Level Virtual Switching) |
+-------------------------------------------------------+
| |
+-----------------------+ +-----------------------+
| LXC Container | | KVM VM |
| (Web Services, etc.) | | (Isolated Workloads) |
+-----------------------+ +-----------------------+
2. Hardware Preparation & BIOS Tweaks
Before installing anything on laptop hardware, a few firmware settings must be adjusted:
- Virtualization Flags: Boot into BIOS/UEFI and make sure Intel Virtualization Technology (Intel VT-x) and VT-d (Direct I/O Virtualization) are enabled. Without these flags, the KVM kernel module cannot offload instructions to the CPU.
- Dedicated Wired Network: Do not attempt to run your hypervisor bridge over Wi-Fi. Linux bridge interfaces (
vmbr0) require Layer-2 promiscuous mode, which most consumer Wi-Fi chipsets drop or handle poorly. Use a reliable Cat6 Ethernet cable straight to the router.
3. Installation Steps
Step 1: Boot Media
Download the official Proxmox VE ISO. Flash it to a USB drive using BalenaEtcher or dd in raw block-writing mode:
Bash
# Example raw write command on Linux/macOS:
sudo dd if=proxmox-ve_8.x.iso of=/dev/sdX bs=4M status=progress conv=fsync
Step 2: Filesystem Selection
The installer will prompt you to select the target drive and filesystem. The two main choices are:
- ZFS: Offers snapshots, self-healing, and RAID features, but its ARC (Adaptive Replacement Cache) consumes significant RAM out of the box.
- ext4 (LVM-Thin): Lightweight, stable, and leaves nearly all RAM available for containers and VMs.
Because this node runs on a single internal 512GB SSD and 16GB of total RAM, I chose ext4 with an LVM-Thin provision pool.
Step 3: Network Parameters
A server cannot rely on dynamic DHCP leases. It needs a predictable static IP outside your router’s default DHCP scope:
- FQDN:
pve.home.lab - IP Address:
192.168.1.100(Assigned static IP) - Netmask:
255.255.255.0(/24) - Gateway:
192.168.1.1(Router IP) - DNS Server:
1.1.1.1
Once the installation finishes, remove the flash drive and reboot.
4. Post-Install Base Tweaks
Once the machine boots, the terminal display provides the web GUI address: [https://192.168.1.100:8006](https://192.168.1.100:8006). Log in as root using the password configured during installation.
Before spinning up any workloads, run these two fundamental tweaks in the Proxmox shell (PVE Node > Shell):
1. Enable the Community (No-Subscription) Repository
Proxmox points to the enterprise repo by default, which throws errors on apt update without an enterprise license key. Switch to the community repository:
Bash
# Disable the enterprise repo
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
# Add the free no-subscription repository
cat <<EOF > /etc/apt/sources.list.d/pve-no-subscription.list
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
EOF
# Update package lists and upgrade system components
apt update && apt dist-upgrade -y
2. Disable Laptop Lid Sleep Mode
By default, closing a laptop lid triggers an ACPI suspend signal. To keep the server running headless with the lid closed:
Bash
nano /etc/systemd/logind.conf
Find the following parameters, uncomment them, and set their values to ignore:
Ini, TOML
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore
Save the file (CTRL+O, Enter, CTRL+X) and reload the service:
Bash
systemctl restart systemd-logind
The system now runs quietly in the corner as a dedicated, low-power bare-metal hypervisor node.