Building a Homelab with Proxmox
How I set up my self-hosted infrastructure using Proxmox VE, Docker containers, and a handful of open-source tools — and why you should consider it too.
Running your own server at home used to be reserved for sysadmins with enterprise budgets and racks of equipment. Today, all it takes is a second-hand mini PC, a weekend afternoon, and the willingness to break things a few times before they work perfectly.
This is the story of how I built my homelab — and why I haven’t looked back.
Why Self-Host?
Cloud services are convenient, but they come with trade-offs: your data lives on someone else’s hardware, pricing can change overnight, and features you rely on can disappear. After one too many “we’re sunsetting this feature” emails, I decided to take back control.
The core principle is simple: own your stack.
Hardware
I started with a refurbished Intel NUC (i5, 16 GB RAM, 512 GB NVMe). It consumes around 10–15W at idle — less than a light bulb — and sits silently on my desk. Total cost: €180.
For storage, I added a USB 3.0 external drive for backups and a second NVMe for VM storage.
Proxmox VE — The Hypervisor
Proxmox VE is a free, open-source bare-metal hypervisor based on Debian. It supports both KVM virtual machines and LXC containers, and it ships with a surprisingly polished web UI.
Installation is straightforward:
- Flash the ISO to a USB drive
- Boot from USB and follow the installer
- Access the web UI at
https://your-ip:8006
# Update after fresh install
apt update && apt dist-upgrade -y
My Container Stack
I run everything as Docker containers inside a dedicated Proxmox LXC container. Here’s what’s currently running:
| Service | Purpose |
|---|---|
| Nextcloud | File sync & sharing |
| Stirling PDF | PDF tools — no cloud needed |
| Beszel | Server monitoring |
| Portainer | Container management UI |
| MariaDB | Database for Nextcloud |
| Nginx Proxy Manager | Reverse proxy & SSL |
Networking & Security
Every service sits behind Nginx Proxy Manager with Let’s Encrypt SSL. I use a Cloudflare tunnel for external access — no port forwarding required, which keeps my home IP private.
# docker-compose snippet for Nginx Proxy Manager
services:
npm:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "81:81"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Backups — The Part Everyone Skips
I use Proxmox Backup Server for daily snapshots of each container and VM. Backups are rotated weekly and also synced to an offsite cloud bucket.
The rule I follow: 3-2-1. Three copies, on two different media, with one offsite.
What I Learned
- Start with one service and get it working perfectly before adding more
- Use LXC containers instead of full VMs where possible — they’re lighter and faster
- Document everything in a README inside your config repo
- Monitoring is not optional — Beszel pings me before problems become outages
Is It Worth It?
Absolutely. My monthly cloud spend dropped significantly. I have complete control over my data. And honestly, there’s something deeply satisfying about knowing exactly where your data lives and who has access to it.
If you’re curious, start with a Raspberry Pi 4 and Portainer. You’ll be running your first container within an hour, and down the rabbit hole by the end of the weekend.
The lab never closes. ⚗️