docker

The Self-Hosted AI Stack I’d Build If I Were Starting Over

I took a winding road to get my current AI homelab working. I’d make different choices if I were starting from scratch, and most of them would come down to doing less sooner rather than more.

The first thing I’d do is separate the model serving layer from everything else. Ollama as a standalone container, exposed on a private network, nothing else bundled in. A lot of guides will tell you to start with a full OpenWebUI stack, and OpenWebUI is fine, but it creates a coupling that makes things harder to reason about later. If your UI and your model server are the same deployment, you end up with friction when you want to swap one out or add a second frontend. Keep them separate from the start.

For hardware, I’d be more honest with myself about the model size tradeoff. My current build is a Ryzen 9 5900X on an ASUS TUF Gaming X570-Plus (Wi-Fi) board, and it handles everything I throw at it for inference routing and container management. A 7B parameter model runs well on consumer GPU memory, responds quickly, and handles most practical tasks. I spent too long trying to run 34B models on hardware that wasn’t really right for them, getting slow responses, and convincing myself the capability justified the latency. It usually didn’t. For day-to-day assistant work, a well-quantized 7B or 8B model is more useful than a sluggish 34B. Save the bigger models for tasks where reasoning quality actually matters.

The gateway layer is where I’d invest more early effort. This is the piece that connects LLM inference to real tools: file system access, APIs, shell commands, memory. I’m running OpenClaw for this. If I were starting fresh, I’d still choose a purpose-built gateway over trying to wire this together myself with n8n or LangChain. The operational overhead of maintaining custom orchestration code is real. A gateway that’s designed to manage agent lifecycles, credential handling, and tool permissions out of the box is worth the setup time.

Memory is something I’d take seriously from day one. The difference between an AI that knows the state of your environment and one that starts fresh every session is enormous in practice. That means deciding early on where state lives, how agents read and write it, and what format it’s in. Markdown files on a shared volume have worked well for me: human-readable, easy to edit when something’s wrong, git-friendly if you want version history.

For API keys and credentials, I’d use a secrets directory with tight permissions from the start rather than environment variables scattered across docker-compose files. It’s easier to audit, easier to rotate, and easier to scope to specific containers when something needs to change. This sounds like overkill when you’re standing up one container. It pays off when you have eight.

The thing I’d skip entirely on a first build is trying to run everything locally. Ollama handles local inference well. But for tasks that genuinely need a frontier model, the cost of API calls is low and the capability gap is large enough to matter. Don’t try to replace Claude with a local model for complex reasoning. Use local models where they’re good enough and cloud APIs where they’re not. That hybrid approach is cheaper and more capable than either extreme.

Finally, I’d document my container layout before it gets complicated. Which container serves which purpose, which ports are mapped, what credentials it needs. This sounds tedious and it is. Three months later when you’re trying to figure out why something stopped working, you’ll be glad you did it.

Hardware linked in this post:


Affiliate disclosure: Some links in this post are Amazon affiliate links. If you buy through them, I get a small commission at no cost to you. It helps keep the lights on here.

2026-06-18T11:46:47-07:00July 3rd, 2026|Categories: Blog|Tags: , , , , , , , , , |0 Comments

Unraid as an AI Homelab Platform

Unraid wasn’t designed for AI workloads. It was designed for flexible storage, a simple container interface, and not requiring matching drives in your array. That’s still what it does well. But over the past year it’s become the platform I run my entire AI stack on, and the fit is better than I expected in some ways and worse in others.

The biggest win is container management. Ollama, the OpenWebUI frontend, my OpenClaw gateway, three WordPress instances, and a handful of other services all run as Docker containers managed through Unraid’s interface. Adding a new model backend or a new agent service is a few clicks and a docker-compose file. Unraid keeps them running, handles restart policies, and gives me a clean way to see resource usage across all of them. For someone who doesn’t want to maintain a full Kubernetes cluster, it’s a reasonable middle ground.

GPU passthrough is where things get more complicated. I’m running a Ryzen 9 5900X on an ASUS TUF Gaming X570-Plus (Wi-Fi) board, with an NVIDIA GPU passed through to an Ollama container for local model inference. The passthrough works, but Unraid’s VM/container GPU assignment can be finicky when you’re also trying to use that GPU for other things. I had to be deliberate about which containers got GPU access and accept that gaming on the same machine would require careful scheduling. Not a dealbreaker, but worth knowing going in.

The storage story is actually solid. I can dedicate a fast SSD cache for model weights and keep larger, less frequently accessed files on the array. I’m using a Samsung 860 EVO 1TB as the cache drive, and it keeps model load times fast. Unraid handles the tiering automatically once you set the cache rules. Model weights are big; an LLM with decent reasoning capability can be 15-40GB. Having flexible storage without needing to rethink my whole array setup was a real convenience.

Community support is a mixed bag. Unraid has an active forum and a decent app ecosystem through Community Applications. But AI-specific homelab content on Unraid is still pretty thin compared to what exists for plain Ubuntu or Proxmox. When I ran into edge cases with GPU driver versions inside containers, I was mostly on my own piecing together solutions from Ollama’s docs and Unraid threads that were only tangentially related to my problem.

Stability has been good in practice. I’ve had this stack running for months with minimal intervention. Unraid’s approach of keeping things simple, one box, one UI, no orchestration overhead, matches how I want to run this. I don’t want to spend weekends maintaining infrastructure. I want the infrastructure to run and get out of my way.

If I were advising someone choosing a platform for a first AI homelab, I’d say Unraid is a solid choice if you’re already on it or if you also want a NAS alongside your AI workload. The integrated storage and container UI are genuinely useful. If you only want AI workloads and nothing else, plain Ubuntu with Docker might be simpler to troubleshoot when things go sideways. Proxmox gives you more VM flexibility if you need it.

None of these platforms solve the fundamental challenge of home AI: the hardware has to be powerful enough to run something worth running, and that still costs real money. Unraid doesn’t change that calculus. But for managing what you already have, it handles the complexity well enough that I spend my time on the AI problems rather than the infrastructure problems.

Happy to answer questions about specific container setups or the GPU configuration if anyone’s working through the same thing.

Hardware linked in this post:


Affiliate disclosure: Some links in this post are Amazon affiliate links. If you buy through them, I get a small commission at no cost to you. It helps keep the lights on here.

2026-06-25T14:28:48-07:00June 27th, 2026|Categories: Blog|Tags: , , , , , , , , , |0 Comments