My Self-Hosted Home Lab

My Self-Hosted Home Lab

October 26, 2025

Why Local-First?

This is the current trend in smart home and cloud services: everything requires connectivity and a terrible app that exists primarily to monetize you. Your light bulb doesn’t need to know your sleep schedule. Your photos don’t need to train someone else’s AI. Your documents don’t belong on a server you don’t control.

So I built my own infrastructure. Everything runs on Unraid, stays on my network, and works without internet. No accounts, no subscriptions, no data leaving my home. The trade-off is maintenance overhead, but the control is worth it.

The Hardware

The server started as an old gaming PC:

ComponentSpec
CPUIntel i7-6700
GPUNvidia GTX 1070 (for Plex transcoding and local AI)
RAM32GB DDR4
Storage3x 4TB HDD + 2x SSD cache

Not cutting edge, but more than enough for a home server. The GPU handles hardware transcoding in Plex and runs LLM models in Ollama.

Backups

Weekly backups of all app data run via Borgitory, a container that wraps Borg backup with a clean UI. Backups sync to a Hetzner storage bucket for offsite redundancy. If the server dies, I can restore everything.

Services Overview

Home Automation

Home Assistant

Home Assistant Dashboard

Home Assistant integrates all smart devices and handles automation logic. From turning on lights at sunset to adjusting thermostats based on occupancy, it automates a lot of useful tasks. The dashboard is fully customizable, and the community has tons of integrations for different devices.

Tip

To get nice looking isometric background images, take a picture of a room and use ChatGPT to generate them with a prompt like: “Generate an isometric image of this room”.

Zigbee2MQTT

Zigbee2MQTT bridges Zigbee devices to MQTT, enabling local control of smart lights, sensors, and switches without any cloud dependency. I use the SONOFF Zigbee 3.0 USB Dongle Plus which works great with currently 40+ devices.

Media

ServicePurpose
PlexMovies and TV shows
NavidromeMusic streaming (Subsonic-compatible)
AudiobookshelfAudiobook and podcast management
CalibreEbook library management

Plex handles video, Navidrome streams my music collection to any Subsonic client, Audiobookshelf manages audiobooks and podcasts with progress tracking, and Calibre organizes my ebook library.

Photos & Documents

ServicePurpose
ImmichPhoto backup and browsing (Google Photos replacement)
Paperless-ngxDocument management with OCR
NextcloudCalendar and contacts sync

Immich backs up photos from my phone and provides a polished experience. Paperless-ngx scans, OCRs, and organizes documents. Nextcloud syncs calendars and contacts via CalDAV/CardDAV.

File Sync

Syncthing keeps files synchronized across all my devices without any central server. It’s peer-to-peer, encrypted, and works very well to sync my documents and media between my laptop, desktop, and server.

Local AI

ServicePurpose
OllamaLocal LLM inference
Open WebUIChatGPT-like interface for Ollama

Running LLMs locally means conversations stay private. Ollama makes it easy to run models like Llama, Mistral, or Phi.

Knowledge

Kiwix serves a local mirror of Wikipedia. Works offline, loads instantly, and provides access to human knowledge even when the internet is down.

Gaming

A Minecraft server for friends and family, routed through playit.gg to make it accessible without exposing my home IP or opening ports.

External Access

For services that need to be publicly accessible, I use Cloudflare Tunnels. No port forwarding, no exposed IP, and Cloudflare handles SSL. The tunnel container connects outbound to Cloudflare, which proxies traffic back to my services.