<?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>uptime-kuma | Self-Hosted!</title><link>https://blog.brumarino.com/tags/uptime-kuma/</link><description>Post novo no “Rack” de segunda a sexta, às 7AM. Proxmox, rede, backup, UPS, IA e tudo o que tenho estudado.</description><language>pt-BR</language><managingEditor>Bruno Marino</managingEditor><image><url>https://blog.brumarino.com/brand/icon-144.png</url><title>uptime-kuma | Self-Hosted!</title><link>https://blog.brumarino.com/tags/uptime-kuma/</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>Fri, 06 Nov 2026 07:00:00 -0300</lastBuildDate><atom:link href="https://blog.brumarino.com/tags/uptime-kuma/index.xml" rel="self" type="application/rss+xml"/><item><title>Uptime Kuma no homelab: saber que caiu antes da família</title><link>https://blog.brumarino.com/uptime-kuma-homelab/</link><pubDate>Fri, 06 Nov 2026 07:00:00 -0300</pubDate><guid>https://blog.brumarino.com/uptime-kuma-homelab/</guid><category>Apps self-hosted</category><description>Uptime Kuma para monitorar o homelab: tipos de monitor, avisos, instalação por community-scripts ou Docker e onde pôr o monitor para não cair junto.</description><content:encoded><![CDATA[<p>Quando um serviço do homelab cai, quero saber antes de alguém da família reclamar. A ferramenta que mais aparece quando o assunto é esse é o <strong>Uptime Kuma</strong>, e foi olhando para ela que eu desenvolvi o meu próprio monitor, o <strong>Sonar</strong>, com algumas melhorias e alguns pontos de que eu precisava. Para a velocidade e a estabilidade da internet, uso outro app, o <strong>Pingularity</strong>.</p>
<p>Neste post explico o que o Uptime Kuma monitora, como instalar e o que eu configuraria primeiro, pela documentação do projeto. No fim, mostro como ficou o Sonar.</p>
<h2 id="o-que-é-o-uptime-kuma">O que é o Uptime Kuma <a class="anchor" href="#o-que-%c3%a9-o-uptime-kuma" aria-label="Link para esta seção">#</a></h2>
<p>É uma ferramenta de monitoramento self-hosted, com licença MIT. Você cadastra o que quer vigiar, e ele testa de tempos em tempos e avisa quando algo para de responder.</p>
<p>Pela página do projeto, ele monitora:</p>
<ul>
<li><strong>HTTP(s)</strong>, inclusive procurando uma palavra na página (HTTP(s) Keyword);</li>
<li><strong>TCP</strong>, para qualquer porta;</li>
<li><strong>ping</strong>;</li>
<li><strong>registro de DNS</strong>;</li>
<li><strong>containers Docker</strong>;</li>
<li><strong>WebSocket</strong> e servidores de jogos Steam;</li>
<li><strong>push</strong>: em vez de o Kuma perguntar, o serviço é que avisa o Kuma que está vivo.</li>
</ul>
<p>E avisa por mais de <strong>90 serviços de notificação</strong>, entre eles Telegram, Discord, Slack, Gotify, Pushover e e-mail por SMTP.</p>
<p>Outros recursos listados pelo projeto que importam num homelab:</p>
<ul>
<li>testes a cada <strong>20 segundos</strong>, no intervalo mais curto;</li>
<li>informações do <strong>certificado HTTPS</strong> de cada site;</li>
<li><strong>autenticação em dois fatores</strong> para entrar no painel;</li>
<li>várias <strong>páginas de status</strong>, cada uma com o seu domínio, se quiser.</li>
</ul>
<h2 id="instalando">Instalando <a class="anchor" href="#instalando" aria-label="Link para esta seção">#</a></h2>
<p>Há dois caminhos que fazem sentido num Proxmox.</p>
<p><strong>Pelo community-scripts.</strong> O script do Uptime Kuma cria um container LXC Debian 13 <em>unprivileged</em>, com 1 núcleo, 1 GB de RAM e 4 GB de disco por padrão. Como contei no post sobre o <a href="/community-scripts-proxmox/">community-scripts</a>, eu leio o script antes de rodar, porque ele roda como root no host.</p>
<p><strong>Por Docker.</strong> O comando da documentação do projeto:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker run -d --restart<span class="o">=</span>always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2
</span></span></code></pre></div><p>A interface fica na porta <strong>3001</strong>. A tag <code>:2</code> é a da versão 2.</p>
<aside class="alert alert--warning">
  <p class="alert__title">Atenção</p>
  <p>O projeto avisa que sistemas de arquivos de rede, como o <strong>NFS</strong>, não são suportados para a pasta de dados. Use um volume ou uma pasta local.</p>
</aside><p>Sem Docker, a instalação manual pede Node.js 20.4 ou mais novo, Git e o PM2 para rodar em segundo plano. Como quase tudo aqui é LXC e uso pouco o Docker, o caminho do community-scripts combina mais com o meu homelab.</p>
<h2 id="onde-colocar-o-monitor">Onde colocar o monitor <a class="anchor" href="#onde-colocar-o-monitor" aria-label="Link para esta seção">#</a></h2>
<p>Um detalhe que pesa: o monitor não pode cair junto com o que ele monitora.</p>
<p>Se o Uptime Kuma roda no mesmo Proxmox dos serviços, ele avisa quando <strong>um container</strong> para. Mas se o host inteiro cair, ou a energia, ou a internet, o Kuma cai junto e ninguém avisa nada.</p>
<p>Para esse caso há duas saídas:</p>
<ul>
<li>rodar o Kuma em outra máquina, de preferência fora de casa;</li>
<li>usar o monitor do tipo <strong>push</strong> ao contrário: um serviço externo espera um sinal periódico do homelab e avisa quando o sinal para de chegar.</li>
</ul>
<p>Para começar, um Kuma dentro do homelab já resolve a maior parte dos casos: container parado, serviço travado, página respondendo com erro.</p>
<h2 id="o-que-eu-monitoraria-primeiro">O que eu monitoraria primeiro <a class="anchor" href="#o-que-eu-monitoraria-primeiro" aria-label="Link para esta seção">#</a></h2>
<p>Pensando nos serviços que rodam aqui, a ordem seria:</p>
<ol>
<li><strong>Vaultwarden:</strong> monitor HTTP(s) na página de login. É o cofre de senhas da família, conto como montei no post sobre o <a href="/vaultwarden-familia-homelab/">Vaultwarden</a>.</li>
<li><strong>DNS interno:</strong> monitor do tipo DNS, perguntando por um nome interno ao Technitium. Se ele cai, a casa toda fica sem internet.</li>
<li><strong>Este blog:</strong> HTTP(s) Keyword, procurando um texto que só aparece quando a página carrega certo.</li>
<li><strong>Serviços publicados pelo Cloudflare Tunnel:</strong> testar pelo endereço público mostra se o tunnel está de pé, não só o serviço.</li>
</ol>
<aside class="alert alert--tip">
  <p class="alert__title">Dica</p>
  <p>Comece com poucos monitores e uma notificação só. Alerta demais vira ruído, e aí a gente passa a ignorar o alerta que importa.</p>
</aside><h2 id="página-de-status">Página de status <a class="anchor" href="#p%c3%a1gina-de-status" aria-label="Link para esta seção">#</a></h2>
<p>O Uptime Kuma também monta <strong>páginas de status</strong>: uma página pública com o estado dos serviços que você escolher. Num homelab de família, é uma forma de alguém em casa conferir se &ldquo;a internet caiu ou foi só o app&rdquo; sem me chamar.</p>
<p>Se for publicar a página de status, publique <strong>só ela</strong>. O painel de administração não precisa ficar aberto na internet. E, mesmo dentro de casa, ligue o segundo fator no login: quem entra no painel vê o mapa inteiro dos seus serviços.</p>
<h2 id="o-meu-sonar">O meu Sonar <a class="anchor" href="#o-meu-sonar" aria-label="Link para esta seção">#</a></h2>
<p>O Uptime Kuma serviu de base para o que eu queria. Mas eu precisava de algumas coisas do meu jeito, então escrevi o meu próprio monitor, o Sonar. A tela inicial dele é assim:</p>
<figure class="prose-figure">
  <img src="/uptime-kuma-homelab/sonar_hu_3e9aec6a9a189ec0.webp" alt="Tela inicial do Sonar no celular: todas as 13 unidades operando, 25 links respondendo e o bloco do Self-Hosted! com a latência do blog" loading="lazy" width="1290" height="1953"><figcaption>A tela inicial do Sonar.</figcaption>
</figure><p>Algumas escolhas que dá para ver na tela:</p>
<ul>
<li><strong>Unidades e links.</strong> Em vez de uma lista solta de monitores, cada unidade agrupa os seus links. Na imagem são 13 unidades e 25 links, e o próprio blog aparece dentro da unidade Self-Hosted!.</li>
<li><strong>Uma frase no topo.</strong> A primeira coisa que aparece é a resposta: &ldquo;Todas as 13 unidades operando&rdquo;. Se algo cai, é isso que muda.</li>
<li><strong>Quatro estados.</strong> Operando, em atenção, com link DOWN e fora do ar. Uma unidade que perdeu um link não é o mesmo que uma unidade inteira fora do ar.</li>
<li><strong>A última hora em blocos.</strong> Cada bloco é um minuto, com a latência ao lado. Dá para ver de relance se houve oscilação.</li>
<li><strong>Atualização automática</strong>, com o horário da última checagem e um botão para atualizar na hora.</li>
</ul>
<p>Se você está começando, o Uptime Kuma resolve muito bem. Escrever o próprio monitor só vale quando você já sabe exatamente o que quer ver na tela.</p>
<h2 id="resumindo">Resumindo <a class="anchor" href="#resumindo" aria-label="Link para esta seção">#</a></h2>
<ul>
<li><strong>Uptime Kuma</strong> monitora HTTP(s), TCP, ping, DNS, Docker e push, com mais de 90 tipos de notificação.</li>
<li><strong>Instalação</strong> pelo community-scripts (LXC Debian 13, 1 núcleo, 1 GB de RAM) ou por Docker, na porta 3001.</li>
<li><strong>Nada de NFS</strong> para a pasta de dados.</li>
<li><strong>O monitor cai junto com o host.</strong> Para quedas de energia e internet, é preciso algo fora de casa.</li>
<li><strong>Comece pequeno:</strong> cofre de senhas, DNS e os serviços públicos.</li>
<li><strong>Monitor próprio</strong> só quando você já sabe o que quer. O meu Sonar nasceu olhando para o Uptime Kuma.</li>
</ul>
<p>Saber que algo caiu antes da família perceber é metade do trabalho de manter um homelab. A outra metade é ter o backup para consertar.</p>
]]></content:encoded></item></channel></rss>