~/homelab

Baebargi

Summary

Baebargi is a self-built home datacenter: an enterprise-grade edge, a two-node Proxmox cluster running 31 guests, a TrueNAS storage tier, a Pexip video-conferencing lab and a Home Assistant install that basically runs the whole apartment.

At a glance
Edge Palo Alto PA-510, dual WAN (Elisa fiber + Telia 5G)
Wireless Check Point 2200 reflashed to OPNsense, Ruckus R670 APs
Switching Cisco Catalyst 2960X
Compute Proxmox VE 9.2 cluster : protoss + zerg, terran being built
Guests 23 LXC containers + 7 VMs on protoss, 1 LXC on zerg
Storage 2 TB NVMe thin pool for guests, TrueNAS with 6×6 TB and 1×12 TB pools
Home automation Home Assistant OS, Zigbee + Matter/Thread, 20 automations
Public access Cloudflare Tunnel + Traefik under arthursepp.eu, Authentik for identity

Rack

Everything lives in a 12U cabinet. Drag to turn it, and click a device to pull it out and see what it does.

Network

The edge is a Palo Alto PA-510 terminating two ISPs, with separate wired and wireless sides behind it.

flowchart TD
    elisa["Elisa fiber"] --- pa
    telia["Telia 5G"] --- pa
    pa["<b>Palo Alto PA-510</b><br/>Router and firewall, dual WAN"]
    pa --- sw["<b>Cisco Catalyst 2960X</b><br/>Wired LAN 192.168.3.0/24"]
    pa --- opn["<b>OPNsense on Check Point 2200</b><br/>Wi-Fi edge"]
    sw --- pve["<b>Proxmox cluster</b><br/>protoss, zerg, terran"]
    sw --- rk["<b>Cisco Room Kit Plus</b><br/>Lifesize camera, custom API"]
    opn --- ap["<b>Ruckus R670 APs</b><br/>Wi-Fi and IoT, 172.30.0.0/24"]
    pve -. "VLAN 30: HA VM and mDNS reflector" .- ap
  • WAN: Elisa fiber and Telia 5G both land on the PA-510, which routes, firewalls and fails over between them.
  • Wired: the Cisco Catalyst 2960X carries the main LAN (192.168.3.0/24) to the servers and the Room Kit.
  • Wireless: a Check Point 2200 appliance reflashed with OPNsense powers the Ruckus R670 access points on VLAN 30 (172.30.0.0/24), which also holds the IoT gear.
  • Cross-network services: VLAN 30 is trunked into the Proxmox bridges. An mDNS reflector container and the Home Assistant VM sit in both networks, so AirPlay, casting and Thread discovery work across them, while client traffic still routes through the PA-510.

Compute and storage

Protoss carries the production load; zerg is a dedicated media transcoder; terran is the third node waiting to be racked.

Node Role CPU RAM Disks PVE
protoss Production: 30 guests Xeon E5-2683 v3, 14C/28T 128 GB 250 GB SSD (boot + local-lvm), 2 TB Kioxia NVMe thin pool m2ssd 9.2.11
zerg Jellyfin with Intel Quick Sync Xeon E3-1225 v3, 4C 8 GB 250 GB Samsung 860 EVO 9.2.2
terran Work in progress, not yet racked TBD TBD TBD —
  • Networking: each node has one VLAN-aware Linux bridge (vmbr0) on the 192.168.3.0/24 LAN; guests that need the Wi-Fi/IoT side get a tagged VLAN 30 interface.
  • Storage: TrueNAS SCALE runs as a VM on protoss with its HBA passed through over PCIe, serving a 6×6 TB pool and a 1×12 TB pool. Guest disks live on the NVMe thin pool.
  • Provisioning: most containers are built from the Proxmox community helper scripts, tagged by purpose (arr, monitoring, proxy, auth).
  • GPU: zerg passes /dev/dri into the Jellyfin container for hardware transcoding.

Services

Thirty guests split into six groups: edge and access, identity, monitoring, media, self-written apps, and the conferencing lab (next section).

Group Guests What they do
Edge and access Cloudflared, Traefik, AdGuard Home, wg-easy (vpn-hub), mDNS reflector, jumphost VM, Termix Public ingress through a Cloudflare Tunnel into Traefik; network-wide DNS filtering; WireGuard remote access; Bonjour discovery across LAN and VLAN 30; a hardened jump box and browser SSH
Identity Authentik Single sign-on for the self-hosted apps, replacing Keycloak
Monitoring Zabbix, Gatus, LibreSpeed Infrastructure monitoring, an uptime/status board, and an internal speed test
Media Jellyfin (zerg), Sonarr, Radarr, Prowlarr, Bazarr, Seerr, qBittorrent, MeTube Full request-to-playback pipeline: Seerr takes requests, the *arr stack sources and subtitles, Jellyfin streams with hardware transcoding
Own apps and web site, WordPress, ladu, kassistent, kevinpiip-upload, trawl The personal site at arthursepp.eu with its own deploy script; ladu is a warehouse-management stack (API, OCR service, PostgreSQL 16) in Docker; a 750 GB upload store; Redis-backed trawl
Home Home Assistant OS VM See the Home Assistant section

Video conferencing lab

The lab runs a self-hosted Pexip Infinity platform with a real room system on the other end.

  • Pexip Infinity: a Management Node VM (4 vCPU, 4 GB) and a Conferencing/Transcoding Node VM (4 vCPU, 4 GB) on protoss, plus a separate endpoint VM (pexep-ep). Platform status (alarms, certificate expiry, sync, PexRTC build) is relayed to a dashboard through a Cloudflare Worker.
  • Room system: a Cisco Room Kit Plus codec, fitted with a Lifesize camera.
  • Camera control: the Lifesize camera is driven by a custom-written API, so it can be steered from outside the Cisco ecosystem.
  • Wireless lab: a Ruckus SmartZone controller VM (4 vCPU, 13 GB, 150 GB) is kept on protoss, powered off, alongside the production APs.

Home Assistant

Home Assistant runs the apartment on presence: it knows when I leave and arrive, and briefs me by voice.

Platform

  • Host: Home Assistant OS VM on protoss (2 vCPU, 2 GB), dual-homed on the LAN and tagged VLAN 30. Policy routing on the VM keeps LAN-sourced replies going back through the Palo Alto, so firewall sessions stay symmetric.
  • Radios: a Sonoff ZBDongle-E on USB passthrough runs Zigbee (ZHA, with custom quirks). Matter and Thread use the Apple TVs and HomePods as border routers.
  • Remote access: published through the Cloudflare Tunnel, behind the trusted-proxy config.
  • Voice: a Home Assistant Voice PE speaker with OpenAI for conversation, speech-to-text and text-to-speech (gpt-4o-mini family).

Devices and integrations

Area What is connected
Sensors Hobeian presence sensor in the hallway, Hobeian and Tuya temperature/humidity sensors per room, an outdoor sensor, a door contact
Rack Temperature/humidity sensor and an IKEA INSPELNING plug that meters rack power
Lighting and power IKEA TRETAKT and GRILLPLATS plugs, Tuya plugs for lamps, LED strips and a radiator, an RGB bed LED strip
AV Zigbee IR blaster that switches receiver inputs (TV, turntable, CD, AirPlay, Bluetooth) and volume; Apple TV, HomePods, AirPort Express, Nest Hub, Music Assistant
Appliances Samsung washer and dryer (SmartThings), Dreame robot vacuum, Brother printer
Data feeds Nord Pool prices, Electricity Maps CO2, OpenWeatherMap and Met.no, GTFS bus departures to and from work
People Household phones and a Facebook Portal via the mobile app, HomeKit bridge for Apple Home

Automations

Twenty automations, grouped by what they do:

  • Voice briefings: on arrival after 16:00 (presence sensor + door opened within 30 s + phone home), it welcomes me with the outdoor temperature and the rack’s power draw, and asks about guests. On weekday mornings it reads the next six hours of forecast and the next bus to work from GTFS. Weekend mornings get a randomised greeting.
  • Intrusion warning: if the hallway sensor trips on a weekday while my phone is away and guest mode is off, the speaker plays a warning.
  • Presence lighting: lights on before sunset when home, on arrival after dark, off at 01:00, a weekday 07:30 wake-up, and a hallway motion light. The Voice PE LED ring glows white when I am home and red when I’m away.
  • Live Activities: the washer, dryer and vacuum push iOS Live Activities with a countdown, then clear themselves five minutes after finishing.
  • Chores and comfort: the vacuum runs at 11:00 on weekdays when nobody is home; a bathroom heater holds temperature from a room sensor; turning on the Apple TV switches the receiver to the TV input over IR.
  • Guest mode: a script suspends the night routine until 05:00.
  • Self-healing: a 04:00 watchdog reloads a list of flaky integrations and logs it.
  • Kiosk: on startup a dashboard is cast to the bedroom Nest Hub; that one display is allowed in through a trusted-network login.

Dashboards

Overview and map, plus purpose-built boards for the rack, laundry, vacuum, phone and casting. They use Mushroom, Bubble Card, card-mod and mini-graph-card, with Frosted Glass, Metrology and custom Synthwave themes.

Drag to turn · click a device

12U cabinet · 60 × 56 × 60 cm

Pick a device in the rack or from the list to see what it does.