murilo.cloud
joão pessoa · utc−3
disponível
← journal

00125 set 2026

O que roda no meu homelab

Um tour pelo Orange Pi 5 que virou meu servidor de casa: documentos, links, livros, automações e um robô que caça passagem barata.

Faz uns dois anos que comecei a montar um homelab. Se você nunca ouviu o termo, homelab é um servidor rodando em casa, um laboratório onde você testa aplicações e ideias e aprende no caminho. Eu queria aprender infraestrutura na prática, entender como um servidor funciona e dar de cara com os problemas dele, quebrando coisas se precisasse (pouco tempo depois acabei quebrando sem precisar, kkk, mas isso é conversa para outro post). Como era o meu primeiro, virou meio que um sandbox de produção, onde posso inventar à vontade.

Um computador velho ia ocupar espaço demais, e eu queria uma coisa pequena, com performance boa, que aguentasse ficar ligada 24/7. A escolha foi o Orange Pi 5 de 8 GB. Já tive um Raspberry Pi, mas com os preços de hoje o Orange Pi saiu mais barato. Recomendo os dois, porque a qualidade é bem parecida. A diferença está na comunidade, que no Raspberry Pi é muito maior e mais ativa. A do Orange Pi está crescendo, e hoje as duas meio que conversam entre si.

Tenho dois Orange Pi. O que está ligado se chama sourdiesel-prod01 e mora numa case impressa em 3D, de um projeto que achei num desses repositórios de modelos. O outro ainda está na caixa, e falo dele no fim do post. Também comprei uma case de metal no AliExpress, que ainda está a caminho. Depois da montagem, instalei o sistema e fui subindo os serviços aos poucos. Tudo roda em Docker, gerenciado pelo Portainer, em cima desta configuração:

  • Orange Pi 5 com 8 GB de RAM
  • Orange Pi OS 1.2.0, baseado no Debian Bullseye Server
  • Kernel Linux 5.10.160

O painel: Homepage

A porta de entrada é o Homepage, um dashboard open source onde você liga os serviços que estão rodando na rede local. Ele tem widgets de integração e dá para montar painéis bem caprichados. O meu é simples. Mostra uso de CPU, memória livre, espaço no SSD, temperatura e um atalho para cada serviço, e pra mim isso basta. Quem mais come memória é o RadarFlightBot, que aparece mais para baixo.

Painel do Homepage com uso de CPU, memória, espaço no SSD, temperatura e os atalhos dos serviços

O Linkwarden é onde eu salvo links, em vez de entupir a barra de favoritos com mil pastas. Organizo tudo em coleções, tipo banco de imagens, deploy, design system e ferramentas. Link novo cai em Unorganized e depois eu catalogo com calma. Dois dos que eu mais abro ficam em ferramentas. Um é um DNS Propagation Checker, que mostra se o DNS de um site que acabei de subir já propagou pelo mundo. O outro é um gerador de SVG para sites.

Linkwarden com as coleções de links organizadas

Ele tem app para iOS e Android que conecta direto na minha instância. Cheguei a ligar o Ollama para gerar tags automaticamente, mas ficou redundante demais, cheio de tag repetida que ainda preciso limpar. Pode ser que eu é que não soube usar direito. Para mim, as coleções já dão conta. No futuro pretendo catalogar melhor essas pastas, porque acabei duplicando algumas.

Documentos: Paperless-ngx

Esse é um dos que mais me salvam. O Paperless-ngx guarda meus documentos com dados sensíveis, tipo exames de sangue e notas fiscais. Nota fiscal é o caso clássico. O produto tem um ano de garantia e eu nunca lembro onde enfiei o papel. No futuro penso em montar um servidor NAS para largar de vez os serviços de big tech que têm acesso a esse tipo de dado. Sei que não dá para garantir que nada nunca vaze, mas pelo menos o armazenamento dos meus dados eu quero que fique comigo.

Organizo por tags (saúde, financeiro, jurídico), e ele faz OCR nos documentos que são só imagem. Tenho uma nota fiscal horrível de uma caixa de som que virou texto pesquisável. Busco “JBL” e ela aparece. Se busco “óculos”, vêm juntos a receita do oftalmologista e a nota fiscal dos óculos.

Paperless-ngx com documentos organizados por tags

Dá também para criar usuários, grupos e permissões, então serve para a família ou até para uma empresa. Roda em Django, tem app mobile e pode ser exposto para fora de casa. O meu ficava acessível de fora por um Tunnel da Cloudflare, protegido pelo Cloudflare Access. No Access, ativei uma política de geolocalização que bloqueava qualquer acesso de fora do Brasil. Para entrar na página, criei uma política de aplicação com uma allowlist de e-mails, e o login era feito pelo SSO do Google, via OAuth. Hoje ele fica apenas na rede local.

Sem sombra de dúvida, eu recomendo. É muito bem construído e vale muito a pena. Pretendo manter no homelab por tempo indeterminado, e se o NAS sair do papel, é só apontar o armazenamento dele para o servidor de arquivos.

Automações: Evolution API e n8n

Para testar automação no WhatsApp sem pagar a API oficial da Meta, eu uso a Evolution API. Funciona muito bem, mas não é oficial. A Meta derruba essas alternativas, as sessões caem e o número pode ser bloqueado. Para brincar é ótima, só que eu nunca coloquei nada em produção com ela. Sei que tem gente que usa em produção e funciona, mas dá uma dor de cabeça que a API oficial não dá. Mesmo assim, mantenho a premissa de não ter custo alto, então fiquei com ela. O único gasto é um chip pré-pago que mantenho ativo só para não perder o número do WhatsApp.

Painel da Evolution API com a instância do WhatsApp conectada

Os fluxos ficam no n8n, que fala com a Evolution API pela rede local via webhook. Os dois só são acessíveis na rede local, e nenhum deles fica exposto na internet.

Hoje o n8n é onde roda a maior parte dos meus projetos não comerciais (os famosos projetos de fim de semana). Um deles é um robô de WhatsApp no grupo da família. O grupo se chama Arengueiros, e quem conhece a palavra já imagina o clima. Eu não tenho nada a ver com o nome, mas o plural está aí. O robô interage com o grupo e lembra o aniversário de todo mundo, inclusive de quem a gente não gosta muito, o que sempre acaba rendendo algum assunto. Ele também responde a mensagens com certas palavras-chave. Foi bem divertido de criar, já passou por algumas melhorias e continua rodando até hoje.

Tem um detalhe de arquitetura que vale contar. A Evolution só permite conectar um webhook por instância, e eu queria vários fluxos no n8n reagindo às mensagens. A saída foi separar um fluxo que chamo de Dispatcher. Ele recebe tudo que chega pelo webhook e, a partir de regras, encaminha cada mensagem para o Performer certo, que é o fluxo que executa aquela tarefa. Foi a melhor forma que encontrei, e funciona super bem. Como o número é só para teste, posso criar quantas variações quiser. Basta montar um Performer novo e configurar a regra no Dispatcher. Costumo criar um grupo no WhatsApp para cada assunto ou projeto, geralmente para receber notificações.

Fluxo no n8n integrado com a Evolution API

Tem também o CatHero, que hoje está desligado. Era um bot no Telegram que eu fiz para aprender a usar a API deles, e ele dava pontos para quem limpava a caixa de areia do gato aqui em casa (reza a lenda que desativei porque eu estava limpando menos e perdendo, mas isso eu não posso confirmar). A API do Telegram é bem melhor que a do WhatsApp, mas todo mundo usa WhatsApp, então as automações acabaram indo para lá.

RadarFlightBot

Na época do vídeo era o meu projeto mais recente. Hoje tenho outros, e esse está em pausa. Ainda assim é um dos que eu mais quero retomar, agora com mais cuidado, depois de ver o tamanho do universo que ele tem. Ele nasceu de um convite de casamento de uma amiga, feito com bastante antecedência. Eu vivia esquecendo de entrar no site da companhia aérea para acompanhar o preço, então criei um robô que faz isso por mim. Ele rastreia voos nas companhias aéreas para rotas que eu deixo configuradas, tipo João Pessoa → Guarulhos.

A coleta funciona muito bem. Ele busca os preços em horários meio aleatórios, preenche os próximos 180 dias e classifica cada preço como promoção, normal ou caro. O dashboard mostra tudo num mapa de calor parecido com o gráfico de contribuições do GitHub, com um hall da fama dos melhores preços e as janelas de oportunidade de cada rota. Na maioria delas, até agora, o preço sobe conforme a data do voo chega perto. Por baixo são três serviços trabalhando juntos. O radar busca, o banco guarda e o dashboard mostra. O banco é um Postgres. Também é em Django, que eu gosto muito por ser direto ao ponto.

Janela de consulta do RadarFlightBot, com o intervalo de períodos pesquisado

O problema é o que vem depois da coleta. Quando tive a ideia, não imaginava o buraco de coelho em que estava entrando. Preço de passagem depende de horário, antecedência, lotação do voo, e muda muito rápido. Preço médio sozinho não resolvia nada. Eu precisava separar os preços em faixas, e aí cheguei no k-means, um algoritmo de agrupamento que trabalha de forma não supervisionada. Separei em três grupos: promoção, normal e caro. Melhorou bastante, mas ainda dava muito falso positivo, porque os clusters eram refeitos todos os dias.

Preços agrupados pelo k-means em preço normal, oportunidade e caro

Tem também um algoritmo que entende se um preço está saturado ou vencido em relação à consulta, e varre os mais desatualizados a partir de alguns critérios. Essa parte rende um post inteiro sozinha.

Então o motor de busca ficou bom e o tratamento dos dados ficou devendo. Alô, engenheiros de dados, me ajudem! Muita gente se interessou pelo projeto, e talvez abrir o código para a comunidade seja o caminho para destravar essa parte. Também queria fazer ele consultar milhas, que em alguns casos é a melhor forma de economizar. Foi um universo que eu abri e não tive tempo de continuar, por isso pausei, mas quero retomar.

Filmes e séries: AIOStreams

O AIOStreams é um agregador que você instala dentro do Stremio. Em vez de manter vários addons, cada um com a sua configuração e as suas manias, ele funciona como um ponto único. Busca em todas as fontes que você configurou, junta o que veio repetido, filtra, ordena e entrega uma lista só. Dá para ligar addons da comunidade, serviços de debrid e indexadores, além dos addons que ele já traz de fábrica.

A parte que eu mais gosto é configurar os filtros uma vez e eles valerem para tudo. Resolução, idioma, o que aparece primeiro, tudo fica na mesma tela. Ele roda no servidor e eu só aponto o Stremio para a minha instância. Uso para filmes e séries.

Tela de configuração do AIOStreams com as fontes e os filtros

Livros: Calibre-Web

O Calibre-Web é a minha biblioteca de e-books. O fluxo é simples. Arrasto o livro para lá, depois abro o Kindle, escolho e baixo. Criei um usuário para cada um dos dois Kindles de casa, os dois só com permissão de download, e o admin fica comigo.

Biblioteca de e-books no Calibre-Web

Gosto de ter esse controle. O livro que eu comprei fica comigo, posso ler em qualquer outro leitor e não dependo do sistema da Amazon, que é cheio de propaganda. Quero comprar um Xteink X4, e nesse caso o Calibre-Web já resolve. A biblioteca está organizada, então é só levar os arquivos comigo.

Tem outra coisa que muita gente não sabe. Várias empresas já mudaram a licença das mídias digitais. Você não compra mais a posse do arquivo, compra o direito de usar ele. A conta não passa para ninguém, então, quando você morrer, tchau acervo. Ter os arquivos comigo resolve isso também (não que alguém vá querer os meus arquivos depois que eu morrer, mas vocês entenderam, é como se fosse uma mini biblioteca de Alexandria, só espero que ninguém queime).

Debloat: KOReader no Kindle

Ter os livros comigo faz parte de um projeto pessoal de debloat dos aparelhos que eu uso. Para quem não conhece o termo, bloatware é todo aquele software que já vem no aparelho sem servir para nada. Bloat quer dizer inchaço, e debloat é justamente tirar esse excesso. Lembra de quando a gente baixava qualquer coisa na internet, às vezes de fonte duvidosa, e o navegador amanhecia com mil toolbars e uns ícones brilhantes? Alguns daqueles eram vírus, outros eram bloatware, e uns poucos conseguiam ser os dois, kkk. No fim dá tudo na mesma. É aquilo que a gente nunca pediu para instalar.

Onde der para fazer jailbreak e tirar esses controles da mão do fabricante, eu vou fazer. No Kindle, o caminho foi instalar o KOReader. Anula a garantia, e para mim tudo bem. São aparelhos muito bons, que raramente dão problema, e ainda dá para voltar atrás. Se precisar, formato do zero, reinstalo e pronto.

Kindle rodando o KOReader

O KOReader sozinho já renderia um post. Que negócio bacana. Ele faz coisas óbvias que a Amazon deveria ter no sistema principal, mas eles preferem entupir a tela de venda. Entendo que esse é o modelo de negócio deles. Só que o aparelho que eu comprei com o meu dinheiro não deveria servir a mim, e não a eles?

Monitoramento: Uptime Kuma

O Uptime Kuma se define como “a fancy self-hosted monitoring tool”, e é bem isso. Sobe fácil, é bonitinho de ver e fica de olho se cada serviço está no ar. As telas lembram aquelas páginas de status dos serviços que a gente contrata por aí.

Uptime Kuma mostrando o status dos serviços monitorados

Dá para gerar uma página dessas para monitorar os sites e os sistemas dos seus clientes, ou até projetos de outras pessoas que você só quer acompanhar o uptime. E quando algo cai, ele avisa. Tem canal de notificação para quase tudo, como WhatsApp, Telegram, Slack, Teams, SMS e e-mail.

Infra: Nginx Proxy Manager, Cloudflare e Duplicati

O Nginx Proxy Manager é o que me deixa abrir cada serviço por um nome, sem decorar IP local e porta. Comprei um domínio só para isso, e ele não fica exposto na internet. Na prática, virou um hostname de dentro de casa. Conectou no Wi-Fi, tem acesso. Desconectou, tchau. Ele também cuida do SSL, com certificado gratuito da Let’s Encrypt que renova sozinho.

Nginx Proxy Manager com os hosts dos serviços e os certificados SSL

O Cloudflare Tunnel já expôs o n8n e o Paperless para fora sem abrir porta no roteador, e o Cloudflare Access controlava quem entrava, com bloqueio por região e por usuário. Hoje os dois ficam só na rede local.

Cheguei a pensar em usar o Tailscale como VPN, mas a essa altura já tinha tudo configurado aqui. Me acostumei, o Access resolveu tão bem que nem quis me estressar com isso.

Como tudo é local, existe o risco de perder tudo de uma vez. Por isso o Duplicati faz backup automático do Paperless. E aqui vem a ironia. Adivinha para onde vai esse backup? Para o Google Drive. Depois de todo o papo de largar as big techs, voltei direto para uma. A diferença é que o Duplicati criptografa tudo em AES-256 com uma chave secreta antes de enviar, e sem essa chave os arquivos são praticamente impossíveis de ler. Tecnicamente, o Google tem e não tem os meus dados. Sei que não é o ideal, mas foi o possível por agora, e o NAS vai resolver isso. Por enquanto o backup é só do Paperless, mas quero incluir mais coisa.

Duplicati com o backup do Paperless configurado

O que não ficou: Open WebUI

O Open WebUI é uma interface de chat que você pluga num motor de IA, com a mesma cara de qualquer LLM que a gente encontra por aí. No meu caso o motor era o Ollama, rodando no meu outro computador. A graça é poder mandar dado sensível sem que nada vá parar na OpenAI, na Anthropic, no Gemini ou no Grok.

O porém é que eu não tenho uma placa de vídeo tão potente. Para conversar e testar, até que performava bem, mas para virar uso de verdade eu teria que investir numa placa mais robusta. Outra premissa era não ter custo com API, então não liguei nenhum outro endpoint. E se ligasse, perderia justamente a privacidade, porque os dados sensíveis iam sair de casa.

Para manter dados em casa, rodar tudo local continua sendo a melhor saída. Só que, sem o hardware certo, testei pouco, não consegui validar e acabei tirando. Se você reparar no print do Homepage, ele nem aparece mais. Mesmo assim, achei que valia documentar como foi.

E o segundo Orange Pi?

Estou pensando em usar ele para rodar o Hermes Agent ou o OpenClaw. Ainda não entendi direito como ele funciona na prática, e dar controle total do computador para um agente me deixa com um pé atrás. Se eu for nessa, vai ser com limites bem definidos.

OpenClaw e Hermes Agent lado a lado

O tour em vídeo

Gravei um vídeo passando por cada serviço deste post, rodando no sourdiesel-prod01. Foi o primeiro vídeo que publiquei no canal depois de muito tempo parado. A ideia é que o canal vire uma documentação dos meus projetos, do mesmo jeito que este journal.

Se você tiver sugestão do que mais vale a pena rodar num homelab, me conta.