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/driinto 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.
3D view isn't available in this browser — the device list still works.
12U cabinet · 60 × 56 × 60 cm
Pick a device in the rack or from the list to see what it does.
U12 · 1U
Palo Alto PA-510
PA-510 on a Rackmount.IT 1U mount
Edge router and firewall. Both ISPs land here; it routes, filters and fails over between them.
- WAN
- Elisa fiber + Telia 5G
- Feeds
- Catalyst 2960X (wired), OPNsense (Wi-Fi)
U11 · 1U
Check Point 2200
Check Point 2200 appliance, reflashed with OPNsense
Runs the Wi-Fi edge. Wireless and IoT clients live on their own VLAN behind it.
- OS
- OPNsense
- Network
- VLAN 30, 172.30.0.0/24
- Powers
- Ruckus R670 access points
U10 · 1U
Patch panel
1U patch panel
Terminates the apartment's cable runs before they reach the switch.
Read more ↓U9 · 1U
Cisco Catalyst 2960X
Catalyst 2960X, 24 ports
Core switch for the wired LAN.
- LAN
- 192.168.3.0/24
- Connects
- Proxmox nodes, Room Kit, patch panel
U7–8 · shelf, left
Cisco Room Kit Plus
Room Kit Plus codec with a Lifesize camera
Room system for the video-conferencing lab. Its Lifesize camera is driven by a custom-written API.
- Talks to
- Pexip Infinity on protoss
U7–8 · shelf, right
Ruckus R670
Ruckus R670 access point
Ruckus access point on the Wi-Fi and IoT network.
- Network
- VLAN 30
U5–6 · 2U
terran
2U case with a 5.25" bay, BitFenix Recon fan controller
Third Proxmox node, being built before it joins the cluster.
- Status
- Work in progress
- Fan control
- BitFenix Recon
U3–4 · 2U
protoss
Lanberg 2U case
The production Proxmox node. Runs 23 containers and 7 VMs, including TrueNAS, Home Assistant and the Pexip lab.
- CPU
- Xeon E5-2683 v3, 14C/28T
- RAM
- 128 GB
- Storage
- 2 TB NVMe for guests, HBA passed to TrueNAS
U1–2 · 2U
zerg
Bressner Panther 2U case
Media node. Runs Jellyfin with Intel Quick Sync hardware transcoding.
- CPU
- Xeon E3-1225 v3, 4C
- RAM
- 8 GB