Inside My Home Lab: A Tour of My Self-Hosted Setup
Explore a full breakdown of my self-hosted home lab setup, from Docker services and NAS storage to automation and remote access with Rustdesk and n8n.
TL;DR: This post breaks down my self-hosted home lab architecture—how it’s built, what services I run in Docker, and how it all ties together. If you’re into self-hosting, automation, or IT systems engineering, you’ll find practical insights and inspiration here.
Why I Built a Home Lab
If you’ve ever wanted full control over your tech stack, building a home lab is one of the most empowering ways to do it. For me, it started as a way to experiment with Docker, automation workflows, and system architecture. Today, it’s a fully integrated environment for learning, testing, and managing self-hosted services.
Whether you’re just starting your home lab journey or looking to optimize your existing setup, there’s something here for you.
The Core Infrastructure
My home lab is a hybrid of performance and practicality. Here’s the high-level breakdown:
Primary Components
- Ubuntu VM (Docker Host): This is where the majority of my services run via Docker containers. It is running on a very inexpensive physical tower server that I purchased from Amazon to start learning.
- Raspberry Pi 4: Handles lightweight tasks like Pi-hole for network-wide ad-blocking. https://amzn.to/4j4xloZ
- Buffalo LinkStation NAS: Provides persistent volume storage via NFS for Docker backup data. https://amzn.to/43iIYCW
- UniFi Network (UDM Pro): Used for network segmentation, firewall rules, and remote access via UniFi Teleport VPN. https://amzn.to/4jbldmm
- DNS Management: All domains and subdomains are managed via Cloudflare, routed through NGINX Proxy Manager for SSL and reverse proxy.
Services I Self-Host in Docker
Each service is containerized for portability and ease of management. Here’s what’s currently running in my stack:
NGINX Proxy Manager
A reverse proxy that handles:
- SSL certificates via Let’s Encrypt
- Clean, custom URLs for all services
- Routing internal Docker containers to public-facing subdomains
Why I use it: Centralized, GUI-friendly control over inbound traffic and security.
Watchtower
Monitors and updates Docker containers automatically.
- Keeps services patched with minimal downtime
- Can be scoped to only update certain containers using labels
Use case: Set-it-and-forget-it security updates for my containers.
n8n (Workflow Automation)
A powerful low-code automation platform. My workflows include:
- Generating daily language learning reminders
- Generating daily email summaries with follow-up tasks
- Parsing and classifying inbound emails
- Updating Linux servers (I know I can use Ansible as I've done in the past, but n8n is just too fun!)
- Twitch live notifications to Discord for when me or one of my friends goes live
- Daily disk space report for my media server
Learn more: n8n.io
LibreChat
A self-hosted front-end interface for interacting with language models.
- Used for writing assistance, debugging, and prompt testing
- Offers an alternative to ChatGPT that stays entirely within my infrastructure
LinkStack
A minimalist, self-hosted alternative to Linktree.
- Displays important links in a clean, mobile-friendly UI
- Great for sharing GitHub, blog posts, or project links
You can check out mine at https://jermad14.com/
Rustdesk
My remote desktop tool of choice.
- Hosted both locally and on a small AWS Lightsail instance
- Enables remote access for family support, file transfers, and server control
- Self-hosted relay server gives me complete privacy
Pi-hole
Runs on the Raspberry Pi to block ads and trackers at the DNS level.
- Helps reduce bandwidth usage and increases privacy
- Allows me to create local DNS records
Storage Strategy
All persistent volumes for Docker containers are mounted to my NAS using NFS. This allows:
- Easy backups and snapshots
- Volume sharing across different hosts
- Avoidance of storing sensitive data on cloud services
I also selectively sync certain volumes to an AWS Lightsail instance for portability, particularly for Rustdesk’s relay server.
Network Architecture & Access
Key networking features include:
- Cloudflare DNS for global resolution
- NGINX Proxy Manager for centralized reverse proxy and HTTPS
- UniFi Teleport for secure remote access to the home network
With this setup, I can securely access any internal service from anywhere without exposing raw IP addresses or ports.
Summary & Key Takeaways
- A home lab gives you complete control over your infrastructure.
- Docker makes service management modular and portable.
- Centralizing proxying and DNS creates a clean, scalable architecture.
- Automation tools like n8n bring real productivity value to a personal setup.
If you’re considering building your own lab, start small—then iterate. The beauty of self-hosting is that it grows with you.