Miran Arnaut logo Miran Arnaut logo
Technology 3 min read

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:

  1. Flash the ISO to a USB drive
  2. Boot from USB and follow the installer
  3. 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:

ServicePurpose
NextcloudFile sync & sharing
Stirling PDFPDF tools — no cloud needed
BeszelServer monitoring
PortainerContainer management UI
MariaDBDatabase for Nextcloud
Nginx Proxy ManagerReverse 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. ⚗️

(05) Get in touch

Let's work together

Send me a message or connect on social media.