Panorama do homelab em 2026: a evolução do hobby de self-hosting
(mrlokans.work)- Resumo de um caso de montagem de homelab que combina hardware compacto e tunelamento cloud gratuito para operar por conta própria diversos serviços, como mídia, IA, fotos e monitoramento
- Começou com um OrangePI 5, depois fez upgrade para um GMKTec NUC (32GB de RAM, 1TB NVMe) e hoje roda uma estrutura híbrida em conjunto com uma máquina virtual da Hetzner
- Todos os serviços rodam em contêineres Docker, com IaC baseado em papéis (roles) do Ansible e criptografia com SOPS para garantir reprodutibilidade e segurança
- O acesso externo é fornecido via Cloudflare Tunnel, sem abrir portas de entrada, enquanto Traefik + Authentik cuidam do proxy reverso e da autenticação SSO
- Com um custo operacional de cerca de 7 euros por mês, mantém a propriedade dos dados sem dependência de fornecedor e valoriza mais aprendizado e diversão do que perfeição
Configuração de hardware
- No início usava um OrangePI 5, mas migrou para um GMKTec NUC por problemas de gerenciamento de energia e de armazenamento conectado por USB
- Equipado com CPU AMD Ryzen 7 5700U, 32GB de RAM e 1TB de armazenamento NVMe M2
- Com 2 slots M2, tanto RAM quanto disco podem ser expandidos
- O funcionamento é muito mais estável em operação contínua ao longo do ano
- Serviços que precisam rodar 24/7 ficam separados em uma máquina virtual da Hetzner
- Ainda não há um NAS montado, e os dados importantes são sincronizados com Syncthing
- Há interesse em Ugreen NAS, Ubiquiti etc., mas por enquanto a fase atual é curtir mais o processo de mexer diretamente em tudo
Princípios de operação
- Infrastructure-as-Code: automatizar e salvar em código o máximo possível de configurações com scripts ou plataformas de gerenciamento, como Ansible
- Reprodutibilidade (Reproducibility): em caso de falha ou troca de máquina, a infraestrutura deve poder ser reimplantada e reconfigurada rapidamente, sem deixar resíduos ao remover serviços experimentais
- Facilidade de uso: como é um projeto de hobby, a preferência é por abordagens padrão e familiares
Sistema operacional
- Usa a distribuição Debian instalada diretamente em bare metal
- Também considerou NixOS (builds reprodutíveis) e Talos (cluster k8s), mas deixou de lado por falta de tempo e pelo peso de administrar workloads de k8s em uma única máquina
- Também julgou que um hipervisor como ProxMox era desnecessário, então não utiliza
Arquitetura de rede
- Adotou Cloudflare Tunnel para exposição externa
- O servidor cria uma conexão apenas de saída com a rede da Cloudflare, então não é necessário abrir portas de entrada no firewall
- Depois de configurar o túnel, o tráfego bidirecional passa por ele
- Ao conectar o domínio ao DNS da Cloudflare, é possível mapear por subdomínio portas e protocolos específicos da máquina, como HTTP/HTTPS/TCP
- É oferecido de forma totalmente gratuita e considerado uma alternativa melhor que ngrok
- A abordagem com IP fixo (IP público) traz custo e risco de segurança, e há alternativas como Tailscale Funnel, mas o Cloudflare Tunnel foi escolhido como a solução mais simples
-
Traefik
- Proxy reverso open source que reconhece Docker nativamente, o que ajuda na automação do servidor
- Basta aplicar os rótulos corretos aos contêineres para que ele detecte o roteamento automaticamente, sem precisar editar arquivos de configuração separados
-
Authentik
- Plataforma de IdP (Identity Provider) e SSO
- As configurações podem ser salvas como blueprints (arquivos YAML), permitindo seguir o princípio de IaC
- Usa middleware ForwardAuth para redirecionar ao login quando alguém tenta acessar serviços sensíveis
Ferramentas de operação
-
Ansible
- Ferramenta de automação de infraestrutura agentless (só precisa de SSH), com configuração baseada em YAML e muitos exemplos disponíveis
- Cada serviço é definido em unidades de role: tasks, defaults, handlers, templates e files
- tasks: definem as ações a executar
- defaults: valores padrão como tag da imagem, porta e nome do contêiner
- handlers: reinício do contêiner quando há mudança de configuração
- templates: renderização de arquivos
.enveconfig.yamlcom base em Jinja2 - files: configurações estáticas e scripts
- Etapas comuns na implantação de um serviço:
- criar recursos compartilhados (rede, volumes) → criar schema e usuário no PostgreSQL → renderizar templates de configuração → fazer pull da imagem Docker → iniciar o contêiner (incluindo variáveis de ambiente e configuração de logs) → provisionar configuração de autenticação no blueprint do Authentik → configurar o Cloudflare Tunnel, se necessário
- Entre as desvantagens estão a documentação enorme, a estrutura DSL repetitiva e boilerplate, mas o uso continua por familiaridade
- Os playbooks são executados manualmente, sem integração com GitOps, o que por enquanto é suficiente
-
SOPS (Secrets OPerationS)
- Criptografa apenas os valores em YAML/JSON, mantendo a estrutura de chaves intacta para que o diff no Git continue útil
- Usa o backend de criptografia age — uma ferramenta que “simplificou a criptografia sem PGP”
- Em cada host, separa um arquivo de configuração normal (
homelab.yaml) de um arquivo criptografado (homelab.sops.yaml) - Workflow:
- gerar a chave com
age-keygen→ editar o arquivo criptografado com o comandosops(o conteúdo é descriptografado no editor e recriptografado automaticamente ao salvar) → ao rodar o Ansible, ocorre descriptografia automática - Como o Ansible oferece suporte nativo a SOPS, não são necessários módulos nem flags extras
- gerar a chave com
- Vantagem em relação ao Ansible Vault: a criptografia é por valor, não do arquivo inteiro, então o diff continua aproveitável
- Limitação: é preciso compartilhar a chave privada do age com segurança entre os membros da equipe, e, se a chave for perdida, os segredos não poderão ser recuperados
- Em um homelab administrado por uma única pessoa, é um nível adequado de complexidade
Serviços em execução
-
Gerenciamento de mídia: stack *arr
- Prowlarr: gerenciador de indexadores que envia resultados de busca para os outros serviços *arr
- Radarr: gerenciador de coleção de filmes — ao indicar um filme desejado, faz busca, download e organização automaticamente
- Lidarr: a mesma ideia para música, integrado ao Navidrome
- Bazarr: download automático de legendas
- Tidarr: serviço para manter músicas do Tidal armazenadas localmente
- Transmission: cliente BitTorrent (porta 9091) que processa todas as solicitações de download dos serviços *arr
- Todos os serviços ficam atrás da autenticação do Authentik
- Usa diretório compartilhado de downloads (
/mnt/data/docker/transmission/downloads) e PUID/PGID 1000 para economizar espaço em disco com hardlinks - Exemplo de fluxo: adicionar um filme no Radarr → buscar via Prowlarr → o Transmission faz o download → o Radarr move para a biblioteca de mídia → assistir no Jellyfin
-
Consumo de mídia
- Jellyfin: servidor de mídia open source que, ao contrário do Plex, não exige login em nuvem. Usa autenticação própria e suporta vários dispositivos, incluindo app para Android TV
- Navidrome: servidor de streaming de música com suporte à API Subsonic, integrado a apps móveis como DSub2000. O Lidarr abastece a pasta da biblioteca musical
- Calibre Web: gerenciador e leitor de biblioteca de ebooks
- O banco de metadados gerenciado no app desktop do Calibre no laptop é sincronizado com o servidor via Syncthing
- Via API OPDS, os livros podem ser acessados em vários leitores
-
IA e chat
- LibreChat: interface de chat de IA self-hosted que pode se conectar a vários provedores de LLM, como OpenAI, Anthropic e Ollama local
- Suporte a RAG (Retrieval Augmented Generation)
- Exige MongoDB (histórico de chat), PostgreSQL + pgvector (embeddings) e MeiliSearch (busca full-text), então é uma configuração relativamente pesada
- Como o Claude Code é mais acessível, o uso tem sido baixo e a remoção está sendo considerada
- LibreChat: interface de chat de IA self-hosted que pode se conectar a vários provedores de LLM, como OpenAI, Anthropic e Ollama local
-
Fotos e arquivos
- Immich: alternativa self-hosted ao Google Photos
- Backup automático de fotos do celular, reconhecimento facial, organização de álbuns e extração de metadados EXIF
- Usa PostgreSQL próprio (com pgvector) e um contêiner de machine learning (classificação de imagens), e atualmente armazena milhares de fotos
- Syncthing: sincronização de pastas entre laptop, celular e servidor, com sincronização P2P direta sem intermediação de nuvem
- Sincroniza Obsidian Vault, documentos e outros conteúdos entre vários dispositivos e Android
- MinIO: armazenamento de objetos compatível com S3, usado em testes ou aplicações que precisam da API S3
- Immich: alternativa self-hosted ao Google Photos
-
Leitura e informação
- Miniflux: leitor minimalista de feeds RSS com assinatura de cerca de 50 blogs e fontes de notícias
- Suporte a atalhos de teclado e feed em ordem cronológica, sem ordenação por algoritmo
- Miniflux: leitor minimalista de feeds RSS com assinatura de cerca de 50 blogs e fontes de notícias
-
Infraestrutura e autenticação
- Traefik: proxy reverso que roteia tráfego para contêineres Docker com base no hostname. Ao iniciar um contêiner, ele o detecta automaticamente se os rótulos corretos estiverem presentes
- Authentik: SSO e provedor de identidade. Protege serviços com middleware ForwardAuth e permite gerenciar toda a configuração de autenticação salvando blueprints no Git
- PostgreSQL: servidor de banco de dados compartilhado; Authentik, Miniflux, Immich e LibreChat, entre outros, compartilham uma única instância em vez de usar bancos separados, economizando recursos e facilitando backups
- Redis: cache compartilhado e armazenamento de sessão, usado principalmente no gerenciamento de sessões e filas de trabalho de serviços como o Authentik
-
Software personalizado
- Highlight Exporter: serviço em Go que extrai destaques de leitura do KOReader, Readwise e Apple Books e os converte em Markdown compatível com Obsidian
- Telegram Assistant: bot do Telegram que oferece várias automações e acesso a IA dentro de chats em grupo. É o projeto que mais reescreve para testar novas tecnologias
- Chess-blunder trainer: webapp que importa partidas do chess.com ou lichess.com, analisa com Stockfish e seleciona lances errados para treino, com open source previsto em breve
Monitoramento
-
Beszel
- Solução leve de monitoramento com configuração simples, operação fácil e bons padrões
- A stack Grafana foi considerada exagerada e complexa demais para visualizar estatísticas básicas do sistema operacional em duas máquinas
- Projetos similares, como Glances, também pareceram exigir ajuste excessivo
- O Beszel cobre 120% do necessário e é fácil de instalar
-
Statsping
- Ferramenta minimalista de ping de serviços para monitoramento detalhado de recursos específicos
- Envia pings para endpoints definidos, informa latência e disponibilidade, e notifica por vários meios quando há falha
- É hospedado em uma máquina na nuvem para continuar funcionando mesmo em caso de falha do homelab, sem overhead adicional de manutenção
O que ainda falta hoje
-
Backup
- Apesar de reconhecer a importância do tema, atualmente não há backup implementado
- Mais do que perda de filmes, músicas ou fotos, o que precisa de backup são os bancos de dados de cada serviço, mas ainda não foi decidido qual solução usar (como restic) nem a configuração de hardware adequada
-
Configuração RAID
- Os dados de mídia e o sistema coexistem em um único drive M2 NVMe
- Falta espaço físico para um servidor NAS ou uma máquina separada de backup
-
Independência da nuvem
- A disponibilidade dos recursos depende fortemente da infraestrutura do Cloudflare Tunnel
- Se houver indisponibilidade da Cloudflare, o acesso à infraestrutura também para, e há planos de investir em alternativas no futuro
-
IaC e automação completos
- Os playbooks do Ansible são executados manualmente, sem pipeline de CI nem provisionamento automático
- Por enquanto, não parece haver grande vantagem em migrar para GitOps
Eficiência de custo e conclusão
- Gasta cerca de 7 euros por mês com a máquina virtual da Hetzner, e o consumo elétrico do home server é estimado como muito baixo
- Adicionar um novo serviço ou alterar configurações leva cerca de 20 a 30 minutos, com boa parte delegada ao Claude Code e apenas uma revisão rápida antes do deploy
- O tempo total investido no projeto é estimado em 100 a 150 horas ao longo de vários anos
- Os dados permanecem sob posse própria com o mínimo de dependência de fornecedor, sem risco de perda por mudança repentina de termos de serviço, feeds algorítmicos ou fusões e aquisições
- O objetivo não é um sistema perfeito, mas entender infraestrutura e se divertir; cada serviço implantado, role do Ansible escrita e segredo criptografado tem valor de aprendizado
- Para começar um homelab, o importante é começar pequeno e não pensar demais
19 comentários
Eu usava Tailscale e agora uso Cloudflare Tunnel, e gosto muito. Embora os casos de uso sejam um pouco diferentes, no meu caso foi difícil usar o Tailscale porque ele entrava em conflito com o AdGuard.
Não basta definir o DNS pai do Tailscale como o AdGuard?
Não é o AdGuard Desktop, mas o AdGuard Mobile funciona como uma VPN local, então não dá para usar os dois juntos.
Parece que o conflito aconteceu na parte de VPN, não de DNS.
Recentemente, enquanto tentava de tudo para fazer a MBC Radio tocar no Google Nest,
acabei usando o Cloudflare Tunnel. É um ótimo serviço, daqueles que fazem você se perguntar por que é grátis.
Parece interessante. Conta mais pra gente.
Estou usando o free tier da Oracle Cloud. Com 4 vCPU, 24 GB de RAM e 200 GB, e por ser baseado em ARM às vezes há algumas incompatibilidades, mas tirando isso é ótimo como brinquedo.
Na nova operadora que assinei, as portas 80 e 443 estavam bloqueadas, então estou contornando isso com o Cloudflare Tunnel.
Se não fosse isso, eu quase teria pagado a multa e trocado de operadora.
Qual operadora você usa que está com as portas bloqueadas?
Para ser exato, não fui eu que bloqueei diretamente; o correto é dizer que o roteador da operadora é que impedia o port forwarding nas portas 80 e 443.
Quando passei a usar um roteador de terceiros para fazer port forwarding, eles reduziram às escondidas para 100 Mbps a velocidade do plano de 1 G que eu tinha contratado.
Enquanto procurava uma alternativa, acabei vendo que a solução mais limpa era simplesmente colocar tudo no cf tunnel.
Verifique se o roteador de terceiros tem uma função para alterar o endereço MAC e tente trocá-lo pelo do roteador da operadora; acho que isso também pode permitir contornar a limitação.
Depois de configurar o cf tunnel, parou completamente de acumular logs do fail2ban nas portas 80 e 443, então removi isso de vez e nunca mais pensei no assunto.
Comprei o próprio domínio pela Cloudflare, configurei o SSO também na Cloudflare e bloqueei o uso dos serviços para quem não passar pelo SSO, então deixei a Cloudflare tankar todos os ataques no meu lugar.
Como ali só entram serviços que eu uso sozinho, essa configuração já é mais do que suficiente na prática.
Se a Cloudflare cair, decidi aceitar esse nível de risco.
Pelo que ouvi, costuma acontecer de o roteador fornecido pela operadora bloquear o port forwarding.
Dá para liberar instalando um roteador de terceiros, mas... como você disse, o
cf tunneljá vem até com um WAF básico e ainda pega a região ICN, então realmente não há muito motivo para não usar.Estou rodando tarefas pequenas no meu homelab com o n8n, conectado ao Anthropic, Telegram, armazenamento e outras coisas, e tem sido bem prático porque os conectores são bem feitos.
Estou usando um dispositivo de baixo consumo da série Ryzen 8000 como servidor doméstico 24/7.
No dia a dia, uso como NAS e, somando contêineres e serviços, rodo cerca de 70 no total; o consumo de energia nem chega a 10 kWh por mês. Sai por algo em torno de 2.000 won.
Cloudflare Tunnel
Adoro demais.
Alguns que demoram para responder às vezes acabam soltando um 502, mas
é de graça, né~
Eu também uso túnel de cloud e é muito bom.
Normalmente, quando há um roteador físico, em muitos casos o IP externo fica no roteador.
Usando o Cloudflare Tunnel, até um IP interno
pode ficar acessível externamente por meio do registro de domínio.~
E ainda por cima é grátis,
Comentários do Hacker News
Isso é realmente legal, mas Cloudflare Tunnel não deve ser usado para streaming de mídia
Pelos termos de uso isso é proibido, ou no mínimo não é o uso pretendido. O serviço pode acabar sendo bloqueado
Em vez disso, é melhor usar Wireguard ou Tailscale
Artigo relacionado
Também é ótimo para sair do CGNAT, e para uma opção com GUI recomendo o Nginx Proxy Manager
No momento estou migrando para a combinação rathole + traefik. Fiquei testando até de madrugada e acabei virando a noite
O Tailscale (Headscale não) oferece um recurso de proxy reverso chamado Funnel, mas não permite usar domínio próprio
Como alternativa ao CF Tunnel, o mais parecido é o Pangolin, e também há como fazer self-host do NetBird com função de proxy reverso
Isso parece menos uma fantasia de “independência” e mais uma fantasia de virar administrador de sistemas
Mas, sinceramente, pagar 5 dólares por mês para Google ou Apple parece uma escolha muito melhor. Fico me perguntando se ao menos fazem backup 3-2-1
Seria ótimo se existisse um grupo de voluntários na biblioteca local operando esse tipo de serviço
Parece uma ótima oportunidade para crianças aprenderem a operar serviços, e para pessoas com menos familiaridade técnica aproveitarem open source
Ninguém quer ficar responsável pelo atendimento ao usuário. Por isso a maioria dos serviços funciona num modelo em que se paga para poder dizer: “procure o suporte deles”
Eu uso fnox para gerenciamento de segredos
Ele suporta muito mais backends que
sops, e sinto que a DX (experiência do desenvolvedor) também é melhorExiste essa ideia de “fantasia do homem independente e preparado”, mas no fim ainda tem a Cloudflare no meio, então não é independência total
Cloudflare Tunnel é uma ferramenta realmente excelente
Antes eu hospedava diretamente com o IP de casa, mas agora gerencio tudo com muito mais facilidade usando
cloudflaredTambém fiquei menos preocupado com firewall ou invasões de rede
Meu homelab agora é gerenciado por scripts bash idempotentes escritos pelo Claude
Sinto que dependências ficam complexas por causa da vontade das pessoas de alterar propriedades, e é essa interação que cria bugs
Então expressar tudo com scripts bash simples acaba sendo mais estável
No momento uso systemd + contêineres podman, e deixei uma página de notas para meu próprio registro
Queria saber se acha que a conveniência prática compensa essa desvantagem
Não entendo por que todo mundo coloca isso na internet pública. Não seria só usar Tailscale?
Parece que o autor confundiu homelab com self-hosting
Self-hosting é operar serviços de uso real; homelab é um ambiente de experimentação e aprendizado
Eu não coloco meus dados ou serviços pessoais no homelab. É um espaço que pode quebrar
Já vi na Ucrânia uma empresa SaaS realmente processando tráfego de produção dentro de um bunker subterrâneo
Fiquei chocado ao ver que só as assinaturas de streaming davam 1.300 dólares por ano
Então comprei um NAS e discos de 36 TB, montei a stack arr e cancelei todas as assinaturas
A família inteira fez o mesmo e agora estamos economizando de 5 a 6 mil dólares por ano
O NAS deve se pagar em poucos meses, e depois disso é tudo lucro
Graças ao Claude Code, a configuração também ficou pronta em poucas horas
Além disso, ficou muito mais agradável porque passei a ter uma curadoria de conteúdo sem ruído da Netflix ou Hulu
Ripando Blu-rays 4K e transmitindo em casa, a qualidade de imagem fica muito superior à dos serviços comerciais
Hoje sinto que o custo-benefício dos serviços de streaming está no fundo do poço. Mesmo planos caros muitas vezes ficam limitados a 1080p