Homelab
My homelab began as a NAS and now runs file storage, Jellyfin and Frigate on TrueNAS. I use Tailscale for remote access. The system uses repurposed hardware in an apartment, where noise, heat, space and limited Ethernet shape the design.
Design decisions
- Private remote access
- Tailscale provides access to internal services without exposing them directly to the public internet.
- Mirrored storage
- Two 12 TB drives form a ZFS mirror, with SMART monitoring and disk testing to track drive health.
- Separate video workloads
- Frigate uses a lower-resolution stream for detection and a higher-resolution stream for recording.
System map
Inspect a component or follow a path through the system.
The gateway connects the internet, PC, cameras and NAS. A remote device reaches the NAS through Tailscale. TrueNAS hosts Jellyfin, Frigate and the ZFS pool; Jellyfin reads media from the pool and Frigate writes recordings to it.
- Network
- Private access
- Hosted service
- Stored data
Conceptual architecture.
Storage and recovery
I built the TrueNAS system from repurposed enterprise and desktop hardware. Its two 12 TB enterprise-class drives form a ZFS mirror with about 12 TB usable capacity. I configured datasets and SMB shares with group-based access controls, along with SMART monitoring and long-form disk tests.
I’ve worked through drive failures, degraded pools, drive replacement and resilvering, as well as physical disk mounting problems. Maintaining the system has meant learning how to diagnose a storage fault and recover a pool while protecting the data on it.
Remote access
Tailscale provides encrypted access to the environment. SMB, Jellyfin, Frigate and RTSP stay internal. I’ve checked service exposure with both IPv4 and IPv6 port scans.
I’ve also experimented with certificate management, HTTPS, custom domains, reverse proxies, VPN routing and network segmentation. These experiments inform the next changes to the lab; they are separate from the current system shown above.
Self-hosted services
Jellyfin serves a private media library stored on ZFS. Frigate receives RTSP streams from two Wi-Fi cameras and stores recordings on the same pool. Lower-resolution streams handle detection, while higher-resolution streams preserve recording quality. This separation helps make use of the older hardware.
I’ve configured recording retention, detection masks, motion and object detection, audio recording and mobile notifications. Troubleshooting has involved containers, resource allocation, storage paths and application permissions.
Working within constraints
Running the lab in an apartment puts noise, heat, power consumption and physical space alongside performance. Wi-Fi coverage and limited Ethernet infrastructure also shape where wired and wireless connections make sense.
I’ve evaluated server platforms, low-power processors, managed switches, UPS systems, small computers, storage upgrades and cooling options with those constraints in mind.
Next steps
The applications currently share the NAS. The next work is to:
- Move application workloads to a dedicated server.
- Expand network segmentation and add internal DNS and reverse-proxy services.
- Improve backup automation, monitoring and redundancy.