<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on /var/log/janio</title><link>https://devops.sarmento.org/categories/linux/</link><description>Recent content in Linux on /var/log/janio</description><generator>Hugo</generator><language>pt-BR</language><lastBuildDate>Tue, 26 May 2026 06:55:00 +0000</lastBuildDate><atom:link href="https://devops.sarmento.org/categories/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>SOPS + age: Gerenciamento de segredos declarativo, seguro e sem a dor de cabeça do GPG</title><link>https://devops.sarmento.org/posts/sops-e-age-gerenciamento-de-segredos-na-pratica/</link><pubDate>Tue, 26 May 2026 07:00:00 +0000</pubDate><guid>https://devops.sarmento.org/posts/sops-e-age-gerenciamento-de-segredos-na-pratica/</guid><description>&lt;p&gt;Como já discuti anteriormente no post sobre &lt;a href="https://devops.sarmento.org/posts/secret-management-macos-linux/"&gt;secret management no macOS e no Linux&lt;/a&gt;, o grande problema de gerenciar chaves e tokens não é a criptografia em si, mas sim reduzir o vazamento acidental sem transformar a rotina do sysadmin num inferno burocrático. Nos últimos anos, porém, uma dupla de ferramentas ganhou espaço e mudou completamente essa dinâmica: o &lt;strong&gt;Mozilla SOPS&lt;/strong&gt; e o &lt;strong&gt;age&lt;/strong&gt;. Juntos, eles permitem uma abordagem declarativa (GitOps-friendly), extremamente segura e com fricção quase zero. Este post é uma análise detalhada sobre o funcionamento dessas ferramentas e como integrá-las de forma prática no seu dia a dia.&lt;/p&gt;</description></item><item><title>Secret management no macOS e no Linux: uma abordagem teórico-prática</title><link>https://devops.sarmento.org/posts/secret-management-macos-linux/</link><pubDate>Sun, 17 May 2026 11:34:00 +0000</pubDate><guid>https://devops.sarmento.org/posts/secret-management-macos-linux/</guid><description>&lt;p&gt;Existe um momento na vida de praticamente todo sysadmin em que ele percebe que espalhou segredos demais pelo ambiente: uma senha em &lt;code&gt;.env&lt;/code&gt; aqui, um token no histórico do shell ali, um webhook esquecido dentro de um &lt;code&gt;docker-compose.yml&lt;/code&gt;, uma API key hardcoded num script “temporário” que continua rodando dois anos depois. Nada disso parece grave isoladamente; o problema é que a infraestrutura quase nunca quebra por uma decisão única e gigantesca. Ela quebra pelo acúmulo de pequenas concessões feitas em nome da praticidade.&lt;/p&gt;</description></item><item><title>Expondo serviços do homelab na internet com Cloudflare Tunnel</title><link>https://devops.sarmento.org/posts/expondo-servicos-do-homelab-na-internet-com-cloudflare-tunnel/</link><pubDate>Fri, 27 Mar 2026 18:24:00 +0000</pubDate><guid>https://devops.sarmento.org/posts/expondo-servicos-do-homelab-na-internet-com-cloudflare-tunnel/</guid><description>&lt;p&gt;No &lt;a href="https://devops.sarmento.org/posts/ssh-atras-de-nat-ssh-jcom-resolve/"&gt;post anterior&lt;/a&gt;, mostrei como o SSH-J.com resolve um problema específico: acessar via SSH uma máquina que está atrás de NAT, sem abrir portas no roteador e sem depender de IP público. O túnel reverso funciona bem para sessões interativas e transferência de arquivos, e o SSH-J.com como jump host torna tudo trivial de configurar. Para SSH, continua sendo a solução mais simples que conheço.&lt;/p&gt;
&lt;p&gt;Mas SSH é só uma peça do quebra-cabeça. Quem mantém um homelab — mesmo que seja só um mini PC embaixo da mesa ou um Raspberry Pi no canto da sala — inevitavelmente acaba rodando serviços web: um leitor de RSS, um dashboard de monitoramento, um Gitea, um Jellyfin, um &lt;a href="https://devops.sarmento.org/posts/immich-suas-fotos-seu-servidor-suas-regras/"&gt;Immich&lt;/a&gt;. Esses serviços escutam em portas HTTP locais e funcionam perfeitamente enquanto você está na mesma rede. O problema aparece quando você quer acessá-los de fora — do escritório, do celular no ônibus, de qualquer lugar que não seja a sua rede local.&lt;/p&gt;</description></item><item><title>Convertendo imagens automaticamente para WEBP e AVIF</title><link>https://devops.sarmento.org/posts/convertendo-imagens-automaticamente-para-webp-e-avif/</link><pubDate>Thu, 26 Mar 2026 22:19:00 +0000</pubDate><guid>https://devops.sarmento.org/posts/convertendo-imagens-automaticamente-para-webp-e-avif/</guid><description>&lt;p&gt;Os dois posts anteriores montaram a infraestrutura de monitoramento — &lt;a href="https://devops.sarmento.org/posts/monitorando-arquivos-e-pastas-com-launchd-watchpaths-na-pratica/"&gt;&lt;code&gt;WatchPaths&lt;/code&gt; no macOS&lt;/a&gt;, &lt;a href="https://devops.sarmento.org/posts/monitorando-arquivos-e-pastas-no-linux-com-systemd-path-units-e-inotifywait-para-quem-nao-tem-root/"&gt;systemd path units e &lt;code&gt;inotifywait&lt;/code&gt; no Linux&lt;/a&gt; — e prometeram que os scripts viriam depois. O gatilho está pronto: o launchd ou o systemd detecta quando algo muda num diretório e dispara um comando. Falta o comando.&lt;/p&gt;
&lt;p&gt;Este post entrega o script de conversão de imagens que aqueles gatilhos vão disparar. O objetivo é simples: PNGs e JPGs entram numa pasta, WEBP ou AVIF saem. Os originais são apagados ou movidos, dependendo da configuração. O script detecta quais encoders estão disponíveis na máquina e escolhe o melhor entre os instalados, com uma cadeia de fallback que garante funcionamento mesmo quando a ferramenta ideal não está presente. Se nenhum encoder compatível for encontrado, o script avisa o que instalar e em qual gerenciador de pacotes.&lt;/p&gt;</description></item><item><title>Monitorando arquivos e pastas no Linux com systemd path units (e inotifywait para quem não tem root)</title><link>https://devops.sarmento.org/posts/monitorando-arquivos-e-pastas-no-linux-com-systemd-path-units-e-inotifywait-para-quem-nao-tem-root/</link><pubDate>Thu, 26 Mar 2026 19:27:00 +0000</pubDate><guid>https://devops.sarmento.org/posts/monitorando-arquivos-e-pastas-no-linux-com-systemd-path-units-e-inotifywait-para-quem-nao-tem-root/</guid><description>&lt;p&gt;No &lt;a href="https://devops.sarmento.org/posts/monitorando-arquivos-e-pastas-com-launchd-watchpaths-na-pratica/"&gt;post anterior&lt;/a&gt;, o launchd do macOS monitorava arquivos e diretórios com &lt;code&gt;WatchPaths&lt;/code&gt; para disparar scripts automaticamente quando algo mudava. O modelo é reativo — em vez de rodar um backup a cada hora ou uma conversão a cada cinco minutos, o sistema observa o caminho no disco e só executa o job quando detecta uma modificação real. Sem polling, sem desperdício, sem janela de vulnerabilidade entre a mudança e a ação.&lt;/p&gt;</description></item><item><title>SSH atrás de NAT? SSH-J.com resolve.</title><link>https://devops.sarmento.org/posts/ssh-atras-de-nat-ssh-jcom-resolve/</link><pubDate>Wed, 25 Mar 2026 22:26:00 +0000</pubDate><guid>https://devops.sarmento.org/posts/ssh-atras-de-nat-ssh-jcom-resolve/</guid><description>&lt;p&gt;Você trabalha remoto, tem um servidor em casa, um Raspberry Pi rodando serviços, ou uma máquina no escritório que precisa acessar de vez em quando. O cenário é comum e a solução óbvia é o SSH — que já está instalado, é seguro e funciona há décadas. O problema é que entre a sua máquina e o resto da internet existe um roteador, um NAT, e possivelmente um provedor que não te dá IP público fixo ou que bloqueia portas de entrada. De repente, o protocolo mais confiável da administração de sistemas se torna inacessível de fora da sua rede local.&lt;/p&gt;</description></item><item><title>Systemd Timers: hora de aposentar o cron</title><link>https://devops.sarmento.org/posts/systemd-timers-hora-de-aposentar-o-cron/</link><pubDate>Mon, 23 Mar 2026 06:21:00 +0000</pubDate><guid>https://devops.sarmento.org/posts/systemd-timers-hora-de-aposentar-o-cron/</guid><description>&lt;p&gt;Se você administra servidores Debian ou Ubuntu há algum tempo, provavelmente tem uma relação de conforto com o cron. Uma linha no crontab, cinco campos de agendamento e o caminho do script — pronto, resolvido. O cron funciona assim desde os anos 1970, e essa simplicidade é justamente o que o manteve relevante por tanto tempo.&lt;/p&gt;
&lt;p&gt;O problema é que &amp;ldquo;funciona&amp;rdquo; e &amp;ldquo;funciona bem em 2026&amp;rdquo; são coisas diferentes. Quando um job falha silenciosamente às três da manhã, quando você precisa descobrir qual dos vinte crontabs espalhados pelo sistema contém aquela tarefa específica, ou quando o servidor reinicia e simplesmente perde a execução que deveria ter acontecido durante o downtime — nesses momentos o cron mostra que foi projetado para uma época em que as expectativas sobre observabilidade e resiliência eram outras.&lt;/p&gt;</description></item><item><title>Limpando revisões antigas do Snap para liberar espaço no Ubuntu</title><link>https://devops.sarmento.org/posts/limpando-revisoes-antigas-do-snap-para-liberar-espaco-no-ubuntu/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://devops.sarmento.org/posts/limpando-revisoes-antigas-do-snap-para-liberar-espaco-no-ubuntu/</guid><description>&lt;p&gt;Se você usa Ubuntu há algum tempo, provavelmente já notou que o diretório &lt;code&gt;/var/lib/snapd&lt;/code&gt; cresce de forma silenciosa e constante. O motivo não são os pacotes Snap que você instalou — são as cópias antigas que o sistema guarda automaticamente toda vez que um desses pacotes recebe atualização. Em uma instalação com dezenas de snaps, é comum encontrar 5, 8 ou até mais gigabytes ocupados por revisões que você nunca vai usar. O problema é especialmente incômodo em partições menores, SSDs com espaço limitado ou VMs com disco enxuto. A boa notícia é que identificar e remover esse excesso leva poucos minutos, desde que você saiba onde olhar e o que não apagar.&lt;/p&gt;</description></item></channel></rss>