Guide
7 min read

Self-Hosted AI Turns Capacity Planning Into a Deployment Problem

Adding a local LLM to your homelab isn't installing an app — it's a capacity decision. How to size the host (RAM, VRAM, disk, thermals) before the model decides for you.

Self-Hosted AI Turns Capacity Planning Into a Deployment Problem

Most self-hosted apps are a rounding error on a modern box. A local LLM is not. The moment you add Ollama or an inference server to a homelab, you've changed the machine's capacity math — and if you treat it like installing any other container, the model quietly takes the resources your other apps needed. Self-hosted AI is less an install and more a capacity decision you should make on purpose. (Once the host is sized, the per-service knobs — memory limits, timeouts — are covered in sizing self-hosted AI and search apps; this is the layer above that: the box itself.)

VRAM is the real currency for GPU inference

If you want responsive inference, you want a GPU, and the constraint is VRAM, not system RAM. The model's quantized weights must fit in VRAM (with room for context):

  • ~8 GB VRAM comfortably runs 7B-class models quantized.
  • ~12–16 GB opens up 13B-class.
  • 24 GB+ is where larger models and longer context become practical.

Spilling to system RAM works but collapses throughput. Size the GPU for the largest model you actually intend to run, not the smallest one you'll start with.

CPU inference is viable — if you set expectations

No GPU? CPU inference runs, but it's seconds-to-tokens, not tokens-per-second. It's fine for occasional, non-interactive use (a nightly summarization job) and frustrating for a chat UI. Budget plenty of system RAM (the whole model sits in it) and accept the latency, or move the workload to a box that has a GPU.

Disk: models are quiet space hogs

Each model is multiple gigabytes, and it's easy to accumulate a dozen "just to try." Put the model cache on its own volume with room to grow, and prune unused models — the same disk-headroom discipline every stateful service needs. Reserve 20–30% free or the next pull fails mid-download.

Thermals and power are part of capacity

Sustained inference pins a GPU or CPU at load for minutes. In a mini PC or a closet rack that means heat and power draw your other workloads now compete with. Check that the box can run the model continuously without thermal throttling — a quick burst benchmark hides the steady-state problem. A real performance benchmark rather than the spec sheet is the honest way to know what the hardware sustains.

The real decision: shared box or dedicated?

This is the planning call self-hosted AI forces:

  • Shared box — fine if the model is small, usage is occasional, and you've capped its resources so it can't starve your databases and media apps.
  • Dedicated box — the right answer once inference is interactive, frequent, or GPU-bound. Isolating it protects everything else and lets you size the AI machine for AI without compromising the rest.

If you're consolidating other services to make room, watch that you don't just recreate database sprawl on the remaining box.

Capacity checklist before you deploy

  • Target model size chosen; VRAM (or RAM for CPU) sized to fit it + context.
  • Inference path decided: GPU for interactive, CPU only for batch.
  • Model cache on its own volume with 20–30% headroom.
  • Sustained-load thermals/power verified, not just a burst test.
  • Shared-vs-dedicated decision made deliberately, with resource caps if shared.

Plan the capacity first and self-hosted AI slots cleanly into a homelab. Skip it and the model makes the capacity decision for you — usually at the expense of everything else on the box.

self-hosted-ai
capacity-planning
ollama
gpu
hardware

Keep reading

Guide
7 min

Sizing Self-Hosted AI and Search Apps: Limits and Timeouts Before You Deploy

Self-hosted LLMs, vector stores, and search engines fall over from defaults, not bugs. Set memory limits, timeouts, and disk headroom before the first deploy.

Guide
8 min

AI-assisted beginner deployments need a source-of-truth checklist before hosting breaks

Several fresh beginner threads point at the same gap between AI-generated instructions, website builders, GitHub, and real hosting. One user moved from Hostinger Horizon to Cursor/GitHub/Supabase to avoid higher builder pricing, but cannot tell why changes…

Guide
8 min

AI-assisted self-hosting breaks when logs, installers, and runtime state cross layers

Fresh support threads show a useful content angle: AI and docs can get users most of the way through self-hosting, but the hard failures happen across boundaries. One user spent two days trying to install uCore/CoreOS in a Proxmox VM with qcow2 and ignition…

Guide
8 min

Beginner homelabs need an app-first checklist before buying storage, servers, or noisy rack gear

Very fresh homelab and self-hosted threads keep showing beginners choosing hardware before they have a stable application plan. One user already runs Immich and Jellyfin on an old laptop but is unsure what storage size, drive class, and server path fit a…

Guide
8 min

Beginners need one exposure model before mixing tunnels, reverse proxies, VLANs, and Tailscale

Fresh self-hosting threads show beginners combining the right words without a safe operating model. One new self-hoster wants Minecraft, Jellyfin, Tailscale, maybe NAS/cloud storage, Nginx, Cloudflare tunnels or DDNS, Docker or VLANs, fail2ban, firewall…

Guide
8 min

Container monitoring is moving from uptime dashboards to egress policy, backup-state widgets, and service-level proof

Fresh self-hosting posts point to a more specific monitoring need than simple green/red uptime. One homelab user running rootless Podman quadlet services wants per-container outbound blocking, domain allowlists, and traffic visibility but cannot see how to…