Homelab
A 2-node Proxmox lab I'm building from the ground up to actually understand hypervisors, storage and networking — not just following a video. It blocks ads and adult content network-wide with Pi-hole, backs up photos through Immich, and surfaces everything through a Homepage dashboard; VPN, a second node, Jellyfin, a Minecraft server, and Home Assistant are still on the wishlist.
Timeline
Click a stop to open the chapterFirst boot
The main node is an i5-10400F desktop (hostname mohammad-pve) with Proxmox VE 9.2.11 installed — my first real hands-on with a hypervisor instead of just reading about one.
Storage layout
Split the node's disks into two ZFS pools: a fast SSD pool for VM and container state (the "brains" of services), and a striped HDD pool for bulk data like media and files. Some of that storage didn't come from a store — I stripped an SSD and a 2.5" HDD out of an old laptop and installed them straight into the node.
Ad-blocking, take one
Stood up AdGuard Home as the network's first DNS-level ad blocker — the first real wishlist item checked off.
Pi-hole migration
We ran into some issues with parental controls and similar filtering on AdGuard, so I fully destroyed that container and rebuilt DNS filtering on Pi-hole instead, reusing the exact same static IP so nothing else on the network needed to change.
Immich + Homepage
Deployed Immich for photo and video backup — the real answer to the backup problem the striped hdd-pool created — plus Homepage as a single dashboard for finding and jumping into every service running on the node.
Second node & VPN
The second node — an older laptop — isn't set up yet. Planned role is a reverse proxy plus a backup target for the main node's data. WireGuard is installed on the main node but not configured, and the router still isn't pointed at Pi-hole by default.
Milestones
What broke
From the repo
# fast tier — VM/container state zpool create ssd-pool /dev/sda # bulk tier — striped for capacity, no redundancy zpool create hdd-pool /dev/sdb /dev/sdd zfs set compression=lz4 hdd-pool # cap ARC so it doesn't starve VMs echo "options zfs zfs_arc_max=4294967296" \ > /etc/modprobe.d/zfs.conf