<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Self-Hosted!</title><link>https://blog.brumarino.com/</link><description>Self-hosting na prática: Proxmox, rede, energia, backup e IA. O que roda no meu “rack”, o que funcionou e o que não funcionou.</description><language>pt-BR</language><managingEditor>Bruno Marino</managingEditor><image><url>https://blog.brumarino.com/brand/icon-144.png</url><title>Self-Hosted!</title><link>https://blog.brumarino.com/</link><width>144</width><height>144</height></image><webfeeds:icon>https://blog.brumarino.com/brand/icon-192.png</webfeeds:icon><webfeeds:logo>https://blog.brumarino.com/brand/symbol.svg</webfeeds:logo><webfeeds:accentColor>2B3036</webfeeds:accentColor><lastBuildDate>Tue, 13 Oct 2026 07:00:00 -0300</lastBuildDate><atom:link href="https://blog.brumarino.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Perdi tudo no homelab e a IA me ajudou a reconstruir</title><link>https://blog.brumarino.com/ia-reconstruir-homelab-claude-code/</link><pubDate>Tue, 13 Oct 2026 07:00:00 -0300</pubDate><guid>https://blog.brumarino.com/ia-reconstruir-homelab-claude-code/</guid><category>IA no homelab</category><description>Perdi o SSD e o HD de backup juntos, sem git. A IA me ajudou a reconstruir as aplicações. Hoje uso o Claude Code no homelab com regras bem claras.</description><content:encoded><![CDATA[<p>Um dia eu perdi, de uma vez, o SSD do servidor e o HD de backup. Não consegui recuperar nada. Os serviços, as configurações e, pior, o código das aplicações que eu mesmo tinha desenvolvido foram embora, porque nada daquilo estava num repositório git.</p>
<p>Recomecei do zero. E quem me ajudou a reconstruir as aplicações foi a IA: busquei o código de novo com ela, aplicação por aplicação, até tudo voltar a funcionar.</p>
<p>Este post é sobre o que aprendi com isso e sobre como uso IA no homelab hoje, com regras claras do que ela pode e do que não pode fazer.</p>
<h2 id="o-que-a-ia-fez-bem-no-pior-dia">O que a IA fez bem no pior dia <a class="anchor" href="#o-que-a-ia-fez-bem-no-pior-dia" aria-label="Link para esta seção">#</a></h2>
<p>Quando tudo some, o problema não é só técnico, é de memória. Você sabe o que a aplicação fazia, mas não lembra de cada decisão, de cada arquivo de configuração, de cada detalhe que levou semanas para acertar.</p>
<p>A IA ajudou exatamente nessa parte. Fui aplicação por aplicação, buscando o código de novo com ela, revisando e testando cada pedaço antes de colocar no ar. Não foi mágico nem instantâneo, mas transformou &ldquo;perdi meses de trabalho&rdquo; em &ldquo;tenho trabalho para alguns dias&rdquo;.</p>
<p>O que eu não gostaria de repetir é a situação que tornou isso necessário.</p>
<h2 id="a-lição-número-um-não-é-sobre-ia-é-sobre-git">A lição número um não é sobre IA: é sobre git <a class="anchor" href="#a-li%c3%a7%c3%a3o-n%c3%bamero-um-n%c3%a3o-%c3%a9-sobre-ia-%c3%a9-sobre-git" aria-label="Link para esta seção">#</a></h2>
<p>A causa do estrago não foi o disco que morreu. Disco morre. A causa foi o código existir em um lugar só.</p>
<p>Depois do desastre, a regra virou: <strong>toda aplicação nasce com repositório</strong>. Hoje cada projeto meu tem repositório privado no GitHub, e o deploy é feito por runners do GitHub Actions que rodam aqui mesmo, num container LXC do Proxmox dedicado a isso. Se o servidor morrer amanhã, o código está a salvo, e o caminho para colocar tudo de volta no ar está escrito no próprio workflow.</p>
<p>Este blog é um exemplo: o código fica num repositório, cada push no <code>main</code> dispara um deploy pelo runner self-hosted, e um script do lado do servidor roda os testes, troca a versão e volta para a anterior se algo der errado.</p>
<aside class="alert alert--tip">
  <p class="alert__title">Dica</p>
  <p>Se você tem scripts e aplicações caseiras sem git, comece pelo mais simples: um <code>git init</code> e um repositório privado no GitHub, GitLab ou num Gitea self-hosted. Versionar já resolve a pior parte do problema.</p>
</aside><h2 id="como-eu-uso-a-ia-no-homelab-hoje">Como eu uso a IA no homelab hoje <a class="anchor" href="#como-eu-uso-a-ia-no-homelab-hoje" aria-label="Link para esta seção">#</a></h2>
<p>Uso o Claude Code, que roda no terminal e executa comandos de verdade. Isso é poderoso e, por isso mesmo, perigoso sem limites. Na prática, ele me apoia em:</p>
<ul>
<li>montar e manter os containers de serviço;</li>
<li>escrever e corrigir o código das minhas aplicações;</li>
<li>configurar deploys, timers do systemd e servidores web;</li>
<li>investigar problemas lendo logs e configurações.</li>
</ul>
<p>E não toca em uma coisa: <strong>o host do Proxmox</strong>. A IA trabalha dentro dos containers e das aplicações, nunca na camada que segura todo o resto. Se algo der muito errado dentro de um container, eu restauro aquele container. Se der errado no host, eu perco o homelab inteiro.</p>
<h2 id="as-regras-que-eu-dou-para-a-ia">As regras que eu dou para a IA <a class="anchor" href="#as-regras-que-eu-dou-para-a-ia" aria-label="Link para esta seção">#</a></h2>
<p>Regras claras funcionam melhor do que confiar no bom senso de uma ferramenta. As que eu sigo:</p>
<ol>
<li><strong>Segredos ficam fora do código.</strong> Senhas e chaves vão em arquivos <code>.env</code> dentro de <code>/etc/&lt;app&gt;/</code>, com permissão <code>600</code>, nunca no repositório e nunca em logs.</li>
<li><strong>Nada sai para fora sem eu confirmar.</strong> Publicar algo, criar recurso em nuvem ou gastar dinheiro só acontece depois do meu OK.</li>
<li><strong>Produção não se mexe sem pedir.</strong> Aplicações em produção têm um caminho de deploy definido, e a IA não faz atalhos.</li>
<li><strong>Instruções por projeto ficam escritas.</strong> Cada repositório tem um arquivo <code>CLAUDE.md</code> com as regras daquele projeto, que o Claude Code lê no início de cada sessão.</li>
</ol>
<p>O item 4 é o que mais fez diferença. Em vez de repetir as mesmas regras toda vez, elas ficam versionadas junto com o código, como qualquer outra configuração. Aplicar a regra 1 é simples:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">install -d -m <span class="m">750</span> /etc/minha-app
</span></span><span class="line"><span class="cl">install -m <span class="m">600</span> /dev/null /etc/minha-app/app.env
</span></span></code></pre></div><p>Depois é só a unit do systemd carregar esse arquivo com <code>EnvironmentFile=/etc/minha-app/app.env</code>.</p>
<aside class="alert alert--warning">
  <p class="alert__title">Atenção</p>
  <p>Ferramentas de IA que executam comandos podem apagar arquivos, derrubar serviços e expor dados se você deixar. Comece dando acesso a um container de teste, revise o que ela pretende fazer e só depois amplie o alcance.</p>
</aside><h2 id="o-que-eu-ainda-não-fiz-modelos-locais">O que eu ainda não fiz: modelos locais <a class="anchor" href="#o-que-eu-ainda-n%c3%a3o-fiz-modelos-locais" aria-label="Link para esta seção">#</a></h2>
<p>Muita gente no mundo self-hosted roda modelos de IA localmente. Eu ainda não testei e, sendo honesto, ainda não sei montar isso bem. Com 24 GB de RAM e sem GPU dedicada no meu ThinkCentre, qualquer coisa nessa linha vai ser limitada, então por enquanto uso um serviço na nuvem com as regras acima.</p>
<p>Também estou testando um agente self-hosted, o Hermes Agent, mas isso ainda está em fase de experimento e merece um post próprio quando tiver conclusões.</p>
<h2 id="se-você-quer-começar">Se você quer começar <a class="anchor" href="#se-voc%c3%aa-quer-come%c3%a7ar" aria-label="Link para esta seção">#</a></h2>
<p>O caminho que eu recomendaria, olhando para trás:</p>
<ul>
<li><strong>Coloque tudo no git antes de qualquer outra coisa.</strong> A IA ajuda a reconstruir, mas ter o código salvo é muito melhor do que precisar reconstruir.</li>
<li><strong>Defina o alcance da IA:</strong> containers e aplicações, sim; host do hipervisor, não.</li>
<li><strong>Escreva as regras num arquivo do projeto</strong> em vez de confiar na memória da conversa.</li>
<li><strong>Revise o que ela faz,</strong> principalmente comandos que apagam, sobrescrevem ou publicam.</li>
</ul>
<p>No meu caso, a IA transformou um desastre em alguns dias de trabalho. Mas o que me deixa tranquilo hoje não é a IA, é saber que um disco morto não leva mais o meu código junto.</p>
]]></content:encoded></item><item><title>EcoFlow River 3 Plus como UPS do homelab: 8 horas de teste</title><link>https://blog.brumarino.com/ecoflow-river-3-plus-ups-homelab/</link><pubDate>Mon, 12 Oct 2026 07:00:00 -0300</pubDate><guid>https://blog.brumarino.com/ecoflow-river-3-plus-ups-homelab/</guid><category>Energia e UPS</category><description>Uso uma EcoFlow River 3 Plus como UPS do Proxmox, do modem e do roteador: 8 horas no teste, uma queda real de 3 horas e o que ainda falta resolver.</description><content:encoded><![CDATA[<p>Há alguns dias a energia caiu aqui em casa por quase três horas. O Proxmox não reiniciou, o Wi-Fi não piscou e a internet continuou de pé. Quem segurou tudo foi uma EcoFlow River 3 Plus que uso como UPS. Antes disso eu já tinha feito um teste de autonomia: <strong>8 horas</strong> com o homelab inteiro pendurado nela.</p>
<p>Neste post eu conto como ela está ligada, como fiz o teste, o que a queda de verdade mostrou e qual é o ponto fraco que ainda preciso resolver.</p>
<figure class="prose-figure">
  <img src="/ecoflow-river-3-plus-ups-homelab/ecoflow-river-3-plus_hu_c5a0fdd93b32fd83.webp" alt="EcoFlow River 3 Plus vista em ângulo, com a tela, as portas USB e a tomada AC na frente" loading="lazy" width="1223" height="805"><figcaption>EcoFlow River 3 Plus. Imagem: EcoFlow (divulgação).</figcaption>
</figure><h2 id="o-que-está-ligado-nela">O que está ligado nela <a class="anchor" href="#o-que-est%c3%a1-ligado-nela" aria-label="Link para esta seção">#</a></h2>
<p>Na River 3 Plus estão três coisas:</p>
<ul>
<li>o modem de fibra do provedor;</li>
<li>o roteador Wi-Fi;</li>
<li>a máquina do Proxmox, um Lenovo ThinkCentre M720q.</li>
</ul>
<p>Somando tudo, o consumo fica entre <strong>30 W e 50 W</strong> no dia a dia.</p>
<figure class="prose-figure">
  <img src="/ecoflow-river-3-plus-ups-homelab/ecoflow-river-3-plus-mesa_hu_d423263051c87edb.webp" alt="EcoFlow River 3 Plus sobre uma mesa de escritório, ligada ao lado de um NAS e de um roteador" loading="lazy" width="1400" height="1050"><figcaption>River 3 Plus ao lado de um NAS. Imagem: EcoFlow (divulgação).</figcaption>
</figure><p>O detalhe que muita gente esquece é o modem. Não adianta o servidor continuar ligado se a internet cai junto com a energia: os serviços que publico pelo Cloudflare Tunnel ficariam fora do ar do mesmo jeito. No homelab, &ldquo;manter no ar&rdquo; quer dizer a cadeia inteira até a fibra, não só o servidor.</p>
<aside class="alert alert--tip">
  <p class="alert__title">Dica</p>
  <p>Antes de comprar qualquer bateria, liste tudo que precisa ficar ligado para o serviço funcionar de ponta a ponta: ONT ou modem, roteador, switch e servidor. É essa soma que dimensiona o equipamento.</p>
</aside><h2 id="por-que-uma-estação-portátil-no-lugar-de-um-nobreak">Por que uma estação portátil no lugar de um nobreak <a class="anchor" href="#por-que-uma-esta%c3%a7%c3%a3o-port%c3%a1til-no-lugar-de-um-nobreak" aria-label="Link para esta seção">#</a></h2>
<p>Vi a proposta de usar uma EcoFlow como UPS no canal <a href="https://www.youtube.com/@o_dev_aguniado" rel="noopener">O Dev Aguniado</a>, que venho acompanhando no YouTube, e gostei da ideia.</p>
<p>Um nobreak tradicional resolve o problema, mas para uma carga baixa e constante, como a de um homelab pequeno, a estação portátil tem vantagens claras. Segundo a ficha técnica da EcoFlow, a River 3 Plus tem:</p>
<table>
	<thead>
			<tr>
					<th>Item</th>
					<th>River 3 Plus</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Capacidade</td>
					<td>286 Wh (expansível com baterias extras)</td>
			</tr>
			<tr>
					<td>Química da bateria</td>
					<td>LiFePO4</td>
			</tr>
			<tr>
					<td>Troca para bateria (modo UPS)</td>
					<td>menos de 10 ms</td>
			</tr>
			<tr>
					<td>Saída AC</td>
					<td>600 W em 3 tomadas</td>
			</tr>
	</tbody>
</table>
<p>A química LiFePO4 é a parte que mais me interessa. Ela aguenta bem a vida de &ldquo;fica plugada 24 horas por dia e descarrega de vez em quando&rdquo;, que é exatamente o uso de um UPS.</p>
<p>O tempo de troca abaixo de 10 ms é o que faz o computador nem perceber a queda. Uma análise independente do StorageReview mediu 9 ms na prática.</p>
<aside class="alert alert--warning">
  <p class="alert__title">Atenção</p>
  <p>Pela própria EcoFlow, o modo X-Boost (que deixa ligar aparelhos acima de 600 W) <strong>não tem proteção de UPS</strong>. Para o homelab, mantenha a carga bem abaixo dos 600 W e deixe o X-Boost de lado.</p>
</aside><h2 id="o-teste-das-8-horas">O teste das 8 horas <a class="anchor" href="#o-teste-das-8-horas" aria-label="Link para esta seção">#</a></h2>
<p>Eu não confiei só na conta: desliguei a River 3 Plus da tomada com tudo ligado e cronometrei até o fim. Deu <strong>8 horas</strong>.</p>
<p>A conta fecha com o consumo que eu vejo. São 286 Wh divididos por 8 horas, o que dá uns 36 W em média, antes de descontar as perdas de conversão do inversor. Isso coloca o consumo durante o teste perto do piso da minha faixa de 30 a 50 W. Com o servidor trabalhando mais, a autonomia cai.</p>
<p>Por isso a minha recomendação é a mesma que eu segui: <strong>meça, não calcule</strong>. A conta serve para saber se vale a pena comprar. O teste é o que diz quanto tempo você realmente tem. Se for fazer o seu:</p>
<ol>
<li>Carregue a estação até 100% e deixe tudo ligado como no dia a dia.</li>
<li>Tire a estação da tomada e anote o horário.</li>
<li>Acompanhe a porcentagem de tempos em tempos para saber o ritmo de descarga.</li>
<li>Anote quando ela desligar e depois veja se todos os equipamentos voltaram sozinhos quando a energia retornou.</li>
</ol>
<p>O passo 4 importa tanto quanto a autonomia. Um servidor que não liga sozinho depois da volta da energia transforma uma queda curta em horas de serviço fora do ar.</p>
<h2 id="a-queda-real-de-quase-3-horas">A queda real de quase 3 horas <a class="anchor" href="#a-queda-real-de-quase-3-horas" aria-label="Link para esta seção">#</a></h2>
<p>Teste controlado é uma coisa, queda de verdade é outra. Quando a energia caiu aqui por quase três horas, tudo continuou funcionando normalmente: containers, cofre de senhas da família, DNS interno e acesso externo.</p>
<p>Com 8 horas de autonomia medida, três horas de queda usaram bem menos da metade da bateria. É uma margem confortável para as quedas que eu costumo ter. Mas ela não é infinita, e foi aí que percebi os dois problemas que ainda tenho.</p>
<h2 id="o-ponto-fraco-ninguém-me-avisou">O ponto fraco: ninguém me avisou <a class="anchor" href="#o-ponto-fraco-ningu%c3%a9m-me-avisou" aria-label="Link para esta seção">#</a></h2>
<p>O primeiro problema é que <strong>o app oficial da EcoFlow não me avisou de nada</strong>: nem quando a energia caiu, nem quando a estação passou para a bateria, nem quando a rede elétrica voltou. Para um equipamento vendido como UPS, essa notificação é o mínimo.</p>
<p>Como eu queria saber na hora que o homelab estava rodando na bateria, criei um app próprio para a minha EcoFlow que manda esses três avisos. Ele merece um post só dele, que vem em breve.</p>
<h2 id="e-se-a-queda-passar-de-8-horas">E se a queda passar de 8 horas? <a class="anchor" href="#e-se-a-queda-passar-de-8-horas" aria-label="Link para esta seção">#</a></h2>
<p>O segundo problema é mais sério. Hoje <strong>não existe desligamento automático</strong> no meu setup. Se uma queda durar mais que a bateria, o Proxmox desliga de forma abrupta, como se alguém puxasse o cabo da tomada. Na maioria das vezes tudo volta bem, mas é esse tipo de desligamento que corrompe disco e banco de dados.</p>
<p>A boa notícia é que a River 3 Plus tem uma porta <strong>USB-B</strong> pensada para isso. Segundo a EcoFlow, o software Power Manager dela conversa com PCs e NAS por essa porta e inicia um desligamento seguro quando a bateria fica baixa.</p>
<p>Para quem roda Linux, como no Proxmox, o caminho natural é o <strong>NUT</strong> (Network UPS Tools). Nele, a estação aparece como um UPS USB comum (HID). O suporte ainda está em andamento:</p>
<ul>
<li>na issue <a href="https://github.com/networkupstools/nut/issues/2735" rel="noopener">#2735</a> do projeto, há relatos de gente monitorando a River 3 Plus com o driver <code>usbhid-ups</code>;</li>
<li>alguns valores ainda não são confiáveis;</li>
<li>o suporte oficial está previsto para uma versão futura do NUT.</li>
</ul>
<p>Um primeiro teste seguro, que não muda nada no sistema, é ver se o Proxmox enxerga a estação quando você liga o cabo USB:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">lsusb <span class="p">|</span> grep -i <span class="m">3746</span>
</span></span></code></pre></div><p>Nos relatos da issue, a River 3 Plus aparece com o ID <code>3746:ffff</code>.</p>
<aside class="alert alert--caution">
  <p class="alert__title">Cuidado</p>
  <p>Eu ainda <strong>não testei</strong> o desligamento automático pelo NUT com a River 3 Plus. Enquanto o suporte não estiver estável, não trate isso como garantido: teste com uma queda simulada antes de confiar o seu servidor a ele.</p>
</aside><p>Esse é o meu próximo passo. Quando estiver rodando, conto aqui como ficou.</p>
<h2 id="se-você-vai-montar-o-seu">Se você vai montar o seu <a class="anchor" href="#se-voc%c3%aa-vai-montar-o-seu" aria-label="Link para esta seção">#</a></h2>
<p>Resumindo o que aprendi com a River 3 Plus como UPS do homelab:</p>
<ul>
<li><strong>Some toda a cadeia:</strong> modem ou ONT, roteador e servidor. Sem internet, o servidor ligado serve pouco.</li>
<li><strong>Use as tomadas protegidas</strong> e fique longe do X-Boost.</li>
<li><strong>Meça a autonomia com a sua carga real.</strong> A conta é só o ponto de partida.</li>
<li><strong>Confira se tudo volta sozinho</strong> quando a energia retorna.</li>
<li><strong>Resolva o aviso e o desligamento automático.</strong> Autonomia sem aviso é sorte, e sem desligamento automático é um risco que só aparece na queda longa.</li>
</ul>
<p>Oito horas de autonomia para um homelab de 30 a 50 W me deram tranquilidade para as quedas do dia a dia. A próxima etapa é saber na hora quando a energia cai e deixar o servidor desligar sozinho e com segurança quando a queda passar da conta.</p>
]]></content:encoded></item><item><title>Bem-vindo ao Self-Hosted!</title><link>https://blog.brumarino.com/bem-vindo-ao-self-hosted/</link><pubDate>Mon, 12 Oct 2026 01:54:10 -0300</pubDate><guid>https://blog.brumarino.com/bem-vindo-ao-self-hosted/</guid><description>Por que eu criei o Self-Hosted!, o que vou abordar aqui (Proxmox, hardware, energia, rede, backup e IA) e como escrevo cada post a partir do meu homelab.</description><content:encoded><![CDATA[<p>Há alguns anos eu mantenho um homelab em casa. Hoje ele é um Proxmox num mini PC que roda o cofre de senhas da família, o DNS da casa, as aplicações que eu desenvolvo e, agora, este blog.</p>
<p>Ao longo desse tempo eu aprendi muita coisa do jeito difícil. Já sofri com bots batendo na porta 22, já fiquei sem energia e descobri o que aguentava ou não, e já perdi o SSD e o HD de backup no mesmo dia, sem ter como recuperar. Cada um desses momentos me ensinou algo que eu gostaria de ter lido antes.</p>
<p>O <strong>Self-Hosted!</strong> nasceu para isso: registrar o que funciona, o que quebrou e como resolvi, em português e sem enrolação.</p>
<h2 id="o-que-você-vai-encontrar-aqui">O que você vai encontrar aqui <a class="anchor" href="#o-que-voc%c3%aa-vai-encontrar-aqui" aria-label="Link para esta seção">#</a></h2>
<p>Um post por dia, sempre respondendo a uma dúvida concreta, sobre estes assuntos:</p>
<ul>
<li><strong>Proxmox:</strong> containers, máquinas virtuais e o dia a dia de quem mantém um nó em casa.</li>
<li><strong>Hardware:</strong> mini PCs, memória, discos e o que eu compraria de novo.</li>
<li><strong>Energia e UPS:</strong> como manter tudo de pé quando a luz cai.</li>
<li><strong>Apps self-hosted:</strong> o que eu hospedo, por que ficou e o que eu desinstalei.</li>
<li><strong>Rede e acesso:</strong> publicar serviços sem abrir portas e acessar tudo de fora com segurança.</li>
<li><strong>Backup e segurança:</strong> a parte que ninguém quer fazer até precisar.</li>
<li><strong>IA no homelab:</strong> como eu uso IA para montar e manter as coisas, com limites claros.</li>
</ul>
<h2 id="como-eu-escrevo">Como eu escrevo <a class="anchor" href="#como-eu-escrevo" aria-label="Link para esta seção">#</a></h2>
<p>Escrevo a partir do meu próprio homelab. Quando conto que algo funcionou, é porque funcionou aqui. Quando é um caminho que eu ainda não testei, aviso. Comandos e configurações vêm com a versão em que foram testados e com o link da documentação oficial.</p>
<p>O próprio blog é um exemplo do que vou contar por aqui: roda num container do meu Proxmox e sai para a internet por um Cloudflare Tunnel, sem nenhuma porta aberta no roteador.</p>
<p>Se você também mantém um homelab, ou está pensando em começar, seja bem-vindo. O primeiro post de verdade sai hoje, sobre a bateria que segurou tudo na última queda de energia.</p>
]]></content:encoded></item></channel></rss>