My Homelab in 2024: Proxmox, HAOS, and Self-hosted Services

A tour of my current homelab setup: what runs, how it is organized, and lessons learned after two years managing my own infrastructure.

The homelab started two years ago with a Raspberry Pi running Home Assistant. Today I have a mini PC running Proxmox, 12 self-hosted services, and a fully automated house. Here’s the tour.

The hardware

Main server: Minisforum MS-01

  • Intel Core i9-12900H
  • 64 GB DDR5
  • 2× 2TB NVMe (ZFS mirror)

Network:

  • Router: UniFi Dream Machine SE
  • Switches: 2× UniFi USW-Lite-8-PoE
  • APs: 2× UniFi U6-LR

NAS Storage:

  • TrueNAS Scale on a Proxmox VM
  • 4× 4TB in RAIDZ1

The software stack

Proxmox as the foundation

Everything runs on Proxmox VE. Split between:

  • VMs: For full operating systems (TrueNAS, Windows for remote gaming)
  • LXC Containers: For lightweight Linux services (most of my apps)
  • HAOS as a VM: Home Assistant needs its own VM for proper USB passthrough

The self-hosted services

ServicePurpose
Home AssistantHome automation
VaultwardenPassword manager
NextcloudStorage and calendars
JellyfinMedia streaming
Paperless-ngxDocument management
ImmichPhoto backup
Grafana + InfluxDBMonitoring and metrics
TraefikReverse proxy
AuthentikSSO and authentication

External access with Cloudflare Tunnel

I don’t open ports on the router. All external access goes through Cloudflare Tunnel, which establishes an outbound encrypted connection from my server to Cloudflare’s edge nodes.

# cloudflared config
tunnel: my-tunnel-id
credentials-file: /root/.cloudflared/credentials.json

ingress:
  - hostname: ha.ferllini.com
    service: http://homeassistant:8123
  - hostname: cloud.ferllini.com
    service: http://nextcloud:443
    originRequest:
      noTLSVerify: true
  - service: http_status:404

Centralized authentication with Authentik

All external services are behind Authentik for SSO. One login, centralized policies, and mandatory 2FA for everything.

Home Automation

42 devices in Home Assistant. The mix:

  • Zigbee: Aqara devices (sensors, switches)
  • WiFi: Sonoff plugs with ESPHome (custom firmware)
  • Matter: Some newer devices
  • Integrations: Bambu Lab P2S, UniFi, Plex, and more

An automation I love

# When I arrive home
alias: "Arrival home"
trigger:
  - platform: zone
    entity_id: person.fran
    zone: zone.home
    event: enter
action:
  - service: light.turn_on
    target:
      area_id: living_room
    data:
      brightness_pct: 80
  - service: climate.set_hvac_mode
    entity_id: climate.ac_living_room
    data:
      hvac_mode: cool
  - service: notify.telegram
    data:
      message: "Welcome home 🏠"

Lessons learned

1. Backups first, always. I lost data once due to no VM backup. Now I follow 3-2-1: 3 copies, 2 different media, 1 offsite (Backblaze B2).

2. Document everything. I have an Obsidian Vault with docs for each service — how it’s configured and why. A lifesaver when something breaks at 2am.

3. Don’t overcomplicate what works. I was tempted to migrate to Kubernetes. I didn’t. Docker Compose + Proxmox LXC is perfectly fine at homelab scale.

4. Monitoring from day one. Grafana + Prometheus from the start. Knowing the server was at 90% RAM saved me from an outage.

Where to start?

If you’re just beginning, my recommendation:

  1. A Raspberry Pi 5 or cheap mini PC
  2. Home Assistant OS
  3. Vaultwarden for passwords
  4. Nextcloud for files

That gives you real value without complexity. You can add more later.


Questions about a specific service? Reach out — happy to help.