12 anos de homelab: meu stack de IA self-hosted
TL;DR
- Contexto: um homelab operado como produção há 12+ anos — de antes de "homelab" ter esse nome — 40+ serviços em 3 ambientes, rede zero-trust, backups cifrados offsite, postmortem quando quebra.
- O coração: LLM local numa GPU de 24 GB, RAG híbrido, um knowledge-graph pessoal com síntese noturna, e agentes autônomos — um deles audita o código do meu próprio SaaS.
- A tese: self-hostar IA não é hobby. É o jeito mais barato de aprender LLMOps de verdade — e o único jeito sensato de dar seu cérebro pessoal pra um modelo.
O lab que virou método
Chamar isto de "homelab" é tecnicamente correto da mesma forma que chamar um Boeing de "veículo". A base: hypervisor Proxmox num servidor dual-Xeon (48 threads, 160 GB de RAM ECC), storage ZFS, duas GPUs em passthrough — uma para mídia, uma dedicada a inferência de LLM — e 40+ serviços em 3 ambientes: o host local, uma VPS ARM na nuvem e containers LXC. Tudo deployado do git, pelo mesmo padrão GitOps que roda o SaaS da minha empresa — foi aqui que o padrão foi provado primeiro.
Um número que eu acho mais revelador que os 40+ ativos: o diretório de stacks descomissionados tem o dobro disso. SSO providers, quatro gerações de stack de monitoramento, orquestradores — testados a sério, comparados, e aposentados com nota. Homelab bom não é o que acumula serviço: é o que avalia e mata serviço.
E é uso de verdade, diário: sincronizações a cada 15 minutos, jobs noturnos de síntese, um briefing matinal automatizado em dias úteis, backups diários. O lab não é uma vitrine — é infraestrutura da qual eu dependo.
Rede: a resposta pra "qual porta você abriu?" é nenhuma
Nada de port-forward no roteador. A exposição pública sai por Cloudflare Tunnel, com roteamento declarado por labels nos próprios containers — subir um serviço já o publica, com política de acesso (SSO) na frente dos painéis administrativos. O tráfego interno anda numa mesh Tailscale (zero-trust, identidade por nó). Na borda física, um firewall OPNsense com WAN dupla e failover automático.
O efeito prático: a superfície de ataque de fora é a de quem não tem nada em casa — e por dentro, cada acesso tem identidade.
O stack de IA
Inferência: 24 GB de VRAM são a moeda
Uma VM dedicada recebe a RTX 3090 por GPU passthrough e roda llama.cpp com um orquestrador de modelos na frente — um "scheduler de VRAM" que carrega e descarrega modelos por demanda, com regras de custo de eviction baseadas em uso real medido (nos meus logs, requests de embedding superam chat em mais de 20:1 — então o modelo de embeddings nunca é despejado; fica quente 24/7).
O catálogo diário: um modelo de embeddings e um reranker residentes, mais um Qwen MoE de ~35B parâmetros quantizado com 128K de contexto e KV cache quantizado — tudo isso convivendo em ~20 dos 24 GB. Para trabalho pesado, modelos maiores com 256K de contexto (um deles com visão) tomam a placa inteira, a 23,7 de 24 GB. Isso é LLMOps na prática: quantização como trade-off consciente, orçamento de VRAM como capacity planning, e orquestração como scheduling — as mesmas disciplinas de infra, numa moeda nova.
Otimização com número: mover o pipeline de embeddings de CPU para GPU derrubou o processamento de um documento grande de ~38 s para ~4,6 s.
RAG e o knowledge-graph pessoal
Em cima da inferência, um knowledge-graph pessoal: 2.500+ páginas, milhares de links e entradas de timeline, com busca híbrida — vetores (pgvector) + full-text em português — e 100% do corpus embedado localmente. Toda noite, um job de síntese cruza o grafo e escreve reflexões conectando o que entrou no dia.
Esse job noturno é a melhor história de custo do case: ele rodou primeiro em APIs de nuvem — e batia em rate limit, custava centavos por rodada, todo dia. Migrei a síntese inteira para a GPU local: de custo por chamada para custo marginal de eletricidade, sem rate limit, com dados que nunca saem de casa. Cloud pra fronteira, local pra volume recorrente — saber qual é qual é o trabalho.
Agentes: o homelab audita a empresa
O andar de cima do stack são agent runtimes: um gateway de agentes com ferramentas e memória, e — o meu favorito — um agente autônomo de pentest (open-source, orquestrado por workflow engine) que roda contra o código do meu próprio SaaS, usando o LLM local como cérebro. O laboratório de casa fazendo red-team contínuo da empresa, a custo de eletricidade. Um dos achados dele virou postmortem e patch enviado upstream.
Operado como produção (senão é só um monte de container)
- Observabilidade multicamada: métricas com 2 anos de retenção, monitores de disponibilidade, alertas multi-canal com roteamento por severidade — e watchdogs de kernel e BMC com deadman switches: silêncio também dispara alerta.
- Backups: cifrados client-side, para storage em outro continente, com retenção 7 diários / 4 semanais / 12 mensais / 2 anuais — e uma matriz de risco documentada que compara 7 provedores de destino e assume por escrito quais SPOFs eu aceito e quais não.
- Postmortems de verdade: 15+ incidentes documentados com root cause analysis. Dois favoritos: o watchdog de hardware que nunca tinha funcionado — o módulo do kernel estava em blacklist, e a "mitigação" em que eu confiava era fé, não config (descoberto do jeito difícil, num travamento silencioso); e o failover de WAN com threshold de latência 10× mais agressivo que o default, derrubando a rede a cada 3 horas — falso-positivo de health check, a mesma classe de bug que derruba produção em empresa grande.
Por que self-hostar IA (e o que isso me ensinou)
- Privacidade estrutural, não prometida. Um knowledge-graph pessoal é literalmente o meu cérebro indexado. Esse dado não se manda pra API de terceiro — se roda no meu metal, a política de privacidade é a física.
- Custo tem forma. API é ótima pra rajadas e pra fronteira; carga recorrente e previsível (embeddings, sínteses noturnas, agentes) amortiza hardware. Conhecer a forma da sua carga é o que decide — igual cloud vs bare-metal, de novo.
- LLMOps é infra com outra moeda. VRAM em vez de RAM, quantização em vez de compressão, eviction de modelo em vez de scheduling de pod. Quem só chama API nunca vê o problema — quem serve o modelo, resolve.
- Limites honestos: 24 GB não rodam modelo de fronteira, e eu não finjo que rodam. O lab me diz exatamente o que o local faz melhor (volume, privacidade, latência de rede zero) e o que a nuvem faz melhor — e essa fronteira, testada em casa, é opinião de engenharia, não de marketing.
- Trate o lab como produção — observabilidade, backup, postmortem — e ele deixa de ser hobby: vira o ambiente onde os padrões da produção nascem e são provados.
Outros cases
Migrando 50+ tenants em produção entre data centers, com zero downtime Réplica quente, cutover atômico, e prova por captura de pacotes — não por otimismo. Um time de plataforma de uma pessoa só 60+ tenants, dois data centers, um engenheiro — por arquitetura, não heroísmo.Sempre aberto a trocar ideia com quem opera infraestrutura de verdade.
LinkedIn