tofu-proxmox. The VLAN is defined in tofu-unifi alongside
every other service tier, and follows the same per-service segmentation pattern.
Container choice
LXC, not Docker, consistent with the LXC vs Docker decision tree. Native packages where they exist; Ansible manages config.Storage layout
The whole stack shares one ZFS dataset bind-mounted at/data into every container. So a
single quota bounds the whole footprint, and every service sees the library at the same path. The
dataset uses recordsize=1M, which suits the large sequential files a media server streams.
Personal backup on the same footprint
The same self-hosted footprint replaces two cloud subscriptions with services that keep the data at home:- Immich: a self-hosted photo and video library, the iCloud Photos alternative. Phones and Macs back up automatically to it. It’s the one workload here that runs Docker-in-LXC (an official multi-container stack), with the photo library living on a ZFS dataset bind-mounted into the container.
- Time Machine: the Macs back up to an SMB share on the homelab NAS, presented as a native Time
Machine target (Samba’s
vfs_fruitadvertises it as an Apple Time Capsule). The same NAS serves read-only media shares for Infuse on Apple TV.
Insights dashboard
A dashboard service reads the*arr stack’s own APIs and surfaces cross-app
health and activity in one view. It needs no separate data store and no ingest
pipeline of its own. It rides the same VLAN, the same Ansible-managed LXC
pattern, and the same persistent-appdata layout as the rest of the stack.
VPN-locked egress
One workload in this stack keeps its traffic off the local network entirely. Its egress is locked to a WireGuard tunnel to a VPN provider, enforced by a fail-closed killswitch. There is no tunnel, no route out, and no silent fallback to the LAN. That path recently gained sticky automatic failover between two upstream VPN endpoints. It also carries a hard-won lesson on a gateway IDS/IPS false-positive against encrypted VPN traffic. See VPN-locked egress reliability.Related
LXC vs Docker
Why the decision tree lands on LXC for this stack.
UniFi networking
Where the media VLAN itself is defined.
VPN-locked egress reliability
Sticky VPN-endpoint failover, and an IDS/IPS false-positive lesson.
Homelab
What the full cluster looks like.