This project documents the homelab as both useful personal infrastructure and a learning environment. It started with a NAS for backups and storage, then grew into a small but capable lab for home automation, media, DNS filtering, remote access, AI-agent experiments, and hands-on systems learning.
The shape of the lab has changed gradually. I did not start with a full rack or a perfect design. I added pieces when I ran into a problem, wanted to try a new tool, or needed more room to experiment. That is part of what makes it valuable: it is practical enough to use every week, but flexible enough to keep teaching me new things.
Problem
The original need was simple: I wanted a better place for storage and backups. The NAS handled that first job well, and it also became a convenient place to try a few containerized services.
After moving into a new apartment, I wanted the lab to do more. I wanted Home Assistant for smart home control, Jellyfin for a local media library, and a more powerful host where I could run VMs, LXCs, and experiments without overloading the NAS. That led to the Mini PC and Proxmox becoming the main compute layer.
From there, the lab evolved through a mix of real use and curiosity. DNS filtering became important because it affects the whole network. Tailscale became important because remote access made the lab useful from anywhere. AI agents became interesting because they gave me a place to explore the pace of change in AI without handing experiments direct access to everything.
Goals
- Keep a place to practice networking, virtualization, storage, remote access, and recovery patterns.
- Run useful daily services such as DNS filtering, smart home automation, media, and backups.
- Keep reliable systems simple while letting AI and automation experiments live in more isolated spaces.
- Turn working infrastructure into clear case studies.
Approach
- A Proxmox mini PC hosts VMs, LXCs, Docker, Home Assistant, DNS filtering, backup services, media workloads, and AI-agent environments.
- A NAS anchors photos, general storage, media, computer backups, Time Machine, and Proxmox backup data.
- Tailscale is the primary private remote access layer for trusted personal devices.
- Cloudflare Tunnel is used for browser-only access from devices where Tailscale cannot be installed.
- Docker services are split between the NAS, a general Docker VM, and a media-focused LXC based on uptime and hardware-encoding needs.
- Forgejo, Portainer, and Compose make service configuration easier to version and review.
- Backups are layered across PBS-to-NAS, workstation backup, Time Machine, snapshots, and sync/off-site workflows.
The important design choice is that the lab stays small enough to understand. I like the idea of a full rack someday, but this version is intentionally built around a few useful systems that can grow without becoming a second job to manage.
Result
The lab now gives me a practical platform for several weekly workflows:
- Home automation for lights, fans, climate, cameras, scenes, and small quality-of-life routines.
- DNS filtering and ad blocking that support both local and remote devices.
- Private remote access to systems and tools through Tailscale.
- Media hosting and supporting services.
- VM, LXC, and Docker environments for experiments.
- AI-agent and automation playgrounds that can be isolated from the reliable core.
- Backups for computers, virtual machines, containers, and important storage.
The part I am most proud of is how it has evolved without needing to become huge. Each addition taught me something and made the system more useful: backups first, then services, then remote access, then smarter automation and AI experimentation.
Lessons
The biggest design lesson is separating the reliable core from the experimental edge. DNS, remote access, backups, and smart home controls should be understandable and recoverable. AI agents, local research environments, and automation experiments can be more complex as long as they stay isolated and reviewable.
The most annoying part is not any single service. It is the constant maintenance pressure: updates, changing dependencies, and the speed of AI tooling. The lab has taught me that building systems is only part of the work. Keeping them understandable, updated, backed up, and safe to change is where a lot of the real learning happens.
Next Pass
The next major improvement I want to explore is a dedicated always-on Mac mini for AI-agent workflows. The goal would be a stable system for experimenting with AI tools, local and hybrid agent setups, browser-based workflows, and whatever new AI tooling becomes useful, while keeping that experimentation separate from the core lab services.
Other likely improvements are stricter remote-access boundaries, friendlier internal service naming, restore-test documentation, and a cleaner service inventory.
More than anything, I want this page to show that the lab is not just a pile of tools. It is proof that I like learning, troubleshooting, solving real problems, and turning technical curiosity into systems that create actual value.