The Coe Lab
🔬

The Lab

Self-hosted services and experiments running in Docker

The Lab is my homelab — a collection of self-hosted services, infrastructure projects, and experiments running on a dedicated server in my home. Everything here is built and maintained as a way to learn, stay sharp, and own my technology stack. Self-hosting means the data stays mine, the services stay online as long as I keep them online, and the architecture can be tweaked whenever curiosity demands it.

Why Self-Host?

There was a time when running your own email server, web host, and file storage was normal. Then the cloud happened, and most of us traded control for convenience. That trade made sense — cloud services are easier, more reliable, and often cheaper than maintaining your own infrastructure. But something was lost in the process: the understanding of how things actually work.

Self-hosting is my way of keeping that understanding alive. When a container crashes, I am the one who reads the logs and fixes it. When a certificate expires, I am the one who renews it. When a new tool looks interesting, I am the one who deploys it, configures it, and decides whether it is worth keeping. This hands-on engagement with infrastructure makes me a better technologist at work, not just at home.

There is also a privacy dimension. Every service I self-host is one less service sending my data to a third party. My AI chats stay on my server. My media library stays on my drives. My remote desktop sessions stay within my network. That does not mean I self-host everything — some services are better left to companies with dedicated teams and SLAs. But where it makes sense, I prefer to own the stack.

Self-Hosted Tools

Available to authorized users — contact for access

🧠

AI Lab

A self-hosted AI chat interface powered by OpenWebUI. Running locally on the homelab server, it provides access to large language models without sending data to third-party APIs. The interface supports multiple models, conversation history, and custom system prompts. It is the primary tool I use to experiment with AI capabilities, test prompts, and explore how models handle different types of queries — all within an environment I fully control.

LLMLocalOpenWebUI
Launch AI Interface ↗
🎬

Media Requests

An Overseerr instance connected to a Plex media server. Family members can browse and request movies or TV shows, which are then automatically fetched and added to the shared library. This replaces the old approach of texting me titles and manually searching for them. The system tracks request status, sends notifications when content is ready, and maintains a curated catalog of what is available.

PlexMediaOverseerr
Make a Request ↗
💻

Remote Desktop

A browser-based remote desktop environment accessible from anywhere. Built on container technology, it provides a full development environment with my preferred tools, editors, and configurations — without requiring a VPN or special client software. This is what I use when I need to work on code or systems while away from my primary workstation. Everything persists between sessions and runs inside an isolated container.

RemoteDesktopBrowser
Connect Now ↗

Hardware & Setup

The physical and logical architecture behind the services

Server

Custom Unraid Build

A dedicated home server running Unraid OS with Docker container support. Unraid was chosen for its flexibility — it allows mixing drives of different sizes, provides easy Docker management, and supports community plugins. The server runs 24/7 and hosts all the services listed on this page.

Containers

Docker-Based Stack

Every service runs in its own Docker container, isolated from the host and from each other. This approach makes deployments reproducible, simplifies updates, and means a problematic service can be restarted without affecting anything else. The current stack includes AI tools, media management, remote desktop, monitoring agents, and web services.

Networking

Cloudflare + Reverse Proxy

Traffic routes through Cloudflare for DNS, caching, and DDoS protection. A local reverse proxy handles SSL termination and routes requests to the appropriate container. This setup keeps services accessible from anywhere without exposing the home network directly, and Cloudflare's edge caching improves response times for static assets.

Storage

Mixed Drive Array

Unraid's array system allows combining drives of different sizes into a single pool with parity protection. Data is protected against single-drive failure, and the array can be expanded one drive at a time — no need to rebuild the entire pool when adding capacity.

Recent Work

Active projects built on top of the homelab infrastructure

OpenClaw

An autonomous AI assistant platform running in Docker on the homelab server. OpenClaw integrates with Discord, manages home automation tasks, monitors system health, and handles recurring jobs like traffic reports and calendar reminders. It uses cloud-based language models for reasoning and local scripts for execution, creating a hybrid architecture that balances capability with cost. The project has been running in production for months and handles dozens of tasks daily.

AIAutomationDocker

Zoo Typing

A toddler-friendly typing game built with Next.js and React. Children press letters on the keyboard and are rewarded with animal emojis and names — A is for Alligator, Z is for Zebra. The game has no timers, no scores, and no failure states, making it appropriate for ages 3-5. It was built for my daughter as an experiment in early keyboard interaction and has been surprisingly effective at building letter recognition.

GamesEducationNext.js

The Coe Lab

This website. Built with Next.js 15 and Payload CMS, deployed as a static site for maximum performance. The site serves as a personal platform for writing about technology, sharing projects, and providing access to self-hosted services. It features a blog, an about page, a lab page documenting infrastructure, and a playground with interactive games. The entire codebase is open source and designed to be fast, accessible, and easy to maintain.

WebNext.jsOpen Source

Need Access?

These services are available to authorized users. If you'd like access, reach out to me directly.

Contact Me