<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.infratips.com.br/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.infratips.com.br/" rel="alternate" type="text/html" hreflang="pt-BR" /><updated>2026-08-14T04:53:22-03:00</updated><id>https://www.infratips.com.br/feed.xml</id><title type="html">InfraTips</title><subtitle>Conteudo tecnico, experiencias praticas e orientacao para aprender e trabalhar com infraestrutura, Linux, Cloud, DevOps, seguranca e IA.</subtitle><author><name>Eleu Carlos</name></author><entry><title type="html">Transforme um laboratorio em evidencia tecnica com um README</title><link href="https://www.infratips.com.br/documentar-laboratorio-tecnico-com-readme/" rel="alternate" type="text/html" title="Transforme um laboratorio em evidencia tecnica com um README" /><published>2026-08-12T00:00:00-03:00</published><updated>2026-08-12T00:00:00-03:00</updated><id>https://www.infratips.com.br/documentar-laboratorio-tecnico-com-readme</id><content type="html" xml:base="https://www.infratips.com.br/documentar-laboratorio-tecnico-com-readme/"><![CDATA[<p>Um laboratorio vale mais quando voce consegue explicar o que tentou, o que observou e como outra pessoa pode repetir a experiencia. Um README simples faz esse trabalho sem transformar cada exercicio em um projeto grande.</p>

<p>Comece com cinco blocos:</p>

<ol>
  <li><strong>Objetivo:</strong> qual pergunta tecnica o laboratorio responde.</li>
  <li><strong>Pre-requisitos:</strong> sistema, ferramentas e portas locais usadas.</li>
  <li><strong>Passos:</strong> comandos essenciais na ordem em que foram executados.</li>
  <li><strong>Evidencia:</strong> saida esperada, captura ou teste que confirma o resultado.</li>
  <li><strong>Limpeza e proximo passo:</strong> como encerrar o ambiente e o que voce quer explorar depois.</li>
</ol>

<p>Evite registrar senhas, tokens, IPs privados de terceiros ou dados de producao. Se uma configuracao depender de valor sensivel, descreva a variavel e forneca um exemplo ficticio. Tambem registre falhas relevantes: um erro diagnosticado com clareza mostra mais aprendizado do que uma sequencia de comandos sem contexto.</p>

<p>Use este modelo no <a href="/laboratorio-nginx-com-docker-compose/">laboratorio Nginx com Docker Compose</a> ou na <a href="/verificar-endpoint-http-com-python/">checagem HTTP com Python</a>. O objetivo nao e montar um portfolio artificial; e manter evidencia honesta do que voce praticou e consegue discutir.</p>]]></content><author><name>Eleu Carlos</name></author><category term="fundamentals-career" /><category term="career" /><category term="labs" /><category term="documentation" /><category term="portfolio" /><summary type="html"><![CDATA[Um laboratorio vale mais quando voce consegue explicar o que tentou, o que observou e como outra pessoa pode repetir a experiencia. Um README simples faz esse trabalho sem transformar cada exercicio em um projeto grande.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Antes de expor um lab Linux: inventarie a superficie de ataque</title><link href="https://www.infratips.com.br/inventariar-superficie-de-ataque-em-lab-linux/" rel="alternate" type="text/html" title="Antes de expor um lab Linux: inventarie a superficie de ataque" /><published>2026-08-12T00:00:00-03:00</published><updated>2026-08-12T00:00:00-03:00</updated><id>https://www.infratips.com.br/inventariar-superficie-de-ataque-em-lab-linux</id><content type="html" xml:base="https://www.infratips.com.br/inventariar-superficie-de-ataque-em-lab-linux/"><![CDATA[<h2 id="comece-pelo-que-existe">Comece pelo que existe</h2>

<p>Um laboratorio pequeno tambem pode expor portas, credenciais ou servicos que voce esqueceu de desligar. Antes de publicar uma porta, encaminhar trafego no roteador ou compartilhar um endereco, faca um inventario curto: qual servico esta em execucao, em qual endereco ele escuta e quem realmente precisa acessa-lo.</p>

<p>Esse levantamento nao e uma auditoria formal nem promete deixar um host seguro. Ele cria uma base observavel para decidir o que manter, restringir ou remover.</p>

<h2 id="veja-os-servicos-em-escuta">Veja os servicos em escuta</h2>

<p>No Linux, comece pela visao de sockets de rede:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>ss <span class="nt">-lntup</span>
</code></pre></div></div>

<p>Observe protocolo, porta, endereco de bind e processo. Um servico ligado a <code class="language-plaintext highlighter-rouge">127.0.0.1</code> atende somente o proprio host; um servico em <code class="language-plaintext highlighter-rouge">0.0.0.0</code> ou <code class="language-plaintext highlighter-rouge">::</code> pode aceitar conexoes de outras redes, dependendo do firewall e das rotas. Registre as portas esperadas pelo laboratorio e investigue as que nao reconhece.</p>

<p>Evite usar esse resultado como motivo para abrir tudo no firewall. Uma porta em escuta e apenas uma parte do caminho; acesso externo tambem depende de regras locais, rede, balanceadores e DNS.</p>

<h2 id="revise-acesso-e-manutencao">Revise acesso e manutencao</h2>

<p>Para cada servico que precisa permanecer, responda perguntas simples:</p>

<ol>
  <li>qual e a finalidade dele neste laboratorio;</li>
  <li>quem precisa acessa-lo e de onde;</li>
  <li>qual conta administra o host;</li>
  <li>como atualizar ou desligar o servico de forma reversivel.</li>
</ol>

<p>No acesso remoto, confirme a configuracao efetiva do SSH antes de mudar uma regra. <code class="language-plaintext highlighter-rouge">sshd -T</code> ajuda a inspecionar valores resolvidos pelo daemon; mantenha uma sessao administrativa funcional enquanto testa qualquer alteracao. Em producao, siga o processo de mudancas do ambiente em vez de aplicar um comando copiado de um laboratorio.</p>

<h2 id="termine-com-uma-pequena-evidencia">Termine com uma pequena evidencia</h2>

<p>Guarde no README do laboratorio as portas esperadas, a data da revisao e como reproduzir o teste. Esse registro torna mais facil perceber quando um novo container, proxy ou servico alterou a superficie exposta.</p>

<p>Veja tambem a InfraTip sobre <a href="/verificar-portas-em-escuta-no-linux/">portas em escuta no Linux</a> e use somente documentacao oficial para regras de firewall ou SSH do seu sistema.</p>

<h2 id="referencias">Referencias</h2>

<ul>
  <li><a href="https://man.openbsd.org/sshd_config">Manual do OpenSSH para sshd_config</a></li>
  <li><a href="https://documentation.ubuntu.com/server/how-to/security/firewalls/">Documentacao do Ubuntu sobre UFW</a></li>
</ul>]]></content><author><name>Eleu Carlos</name></author><category term="security" /><category term="security" /><category term="linux" /><category term="hardening" /><category term="labs" /><summary type="html"><![CDATA[Comece pelo que existe]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Automatizando uma checagem HTTP com Python</title><link href="https://www.infratips.com.br/verificar-endpoint-http-com-python/" rel="alternate" type="text/html" title="Automatizando uma checagem HTTP com Python" /><published>2026-08-12T00:00:00-03:00</published><updated>2026-08-12T00:00:00-03:00</updated><id>https://www.infratips.com.br/verificar-endpoint-http-com-python</id><content type="html" xml:base="https://www.infratips.com.br/verificar-endpoint-http-com-python/"><![CDATA[<h2 id="objetivo">Objetivo</h2>

<p>Verificar uma URL pelo navegador e util durante um teste rapido. Quando a mesma checagem precisa acontecer varias vezes, um script deixa claro qual URL foi testada, qual status voltou e qual falha precisa ser investigada.</p>

<p>Este exemplo usa somente a biblioteca padrao do Python. Ele e apropriado para um laboratorio ou para uma verificacao simples; monitoramento de producao exige alertas, historico e tratamento de dependencias mais completo.</p>

<h2 id="crie-o-script">Crie o script</h2>

<p>Salve o arquivo como <code class="language-plaintext highlighter-rouge">check_http.py</code>:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">from</span> <span class="nn">urllib.error</span> <span class="kn">import</span> <span class="n">HTTPError</span><span class="p">,</span> <span class="n">URLError</span>
<span class="kn">from</span> <span class="nn">urllib.request</span> <span class="kn">import</span> <span class="n">Request</span><span class="p">,</span> <span class="n">urlopen</span>


<span class="k">def</span> <span class="nf">check</span><span class="p">(</span><span class="n">url</span><span class="p">):</span>
    <span class="n">request</span> <span class="o">=</span> <span class="n">Request</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s">"User-Agent"</span><span class="p">:</span> <span class="s">"InfraTips-lab-check/1.0"</span><span class="p">})</span>
    <span class="k">try</span><span class="p">:</span>
        <span class="k">with</span> <span class="n">urlopen</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span> <span class="k">as</span> <span class="n">response</span><span class="p">:</span>
            <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"OK </span><span class="si">{</span><span class="n">response</span><span class="p">.</span><span class="n">status</span><span class="si">}</span><span class="s"> </span><span class="si">{</span><span class="n">response</span><span class="p">.</span><span class="n">url</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
            <span class="k">return</span> <span class="mi">0</span>
    <span class="k">except</span> <span class="n">HTTPError</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"HTTP </span><span class="si">{</span><span class="n">error</span><span class="p">.</span><span class="n">code</span><span class="si">}</span><span class="s"> </span><span class="si">{</span><span class="n">url</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
        <span class="k">return</span> <span class="mi">1</span>
    <span class="k">except</span> <span class="n">URLError</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"ERRO de rede: </span><span class="si">{</span><span class="n">error</span><span class="p">.</span><span class="n">reason</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
        <span class="k">return</span> <span class="mi">2</span>


<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span>
    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sys</span><span class="p">.</span><span class="n">argv</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">:</span>
        <span class="k">raise</span> <span class="nb">SystemExit</span><span class="p">(</span><span class="s">"uso: python3 check_http.py https://exemplo.local/"</span><span class="p">)</span>
    <span class="k">raise</span> <span class="nb">SystemExit</span><span class="p">(</span><span class="n">check</span><span class="p">(</span><span class="n">sys</span><span class="p">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
</code></pre></div></div>

<h2 id="execute-contra-um-endpoint-permitido">Execute contra um endpoint permitido</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 check_http.py https://www.infratips.com.br/
</code></pre></div></div>

<p>Uma resposta <code class="language-plaintext highlighter-rouge">OK 200</code> indica que a requisicao HTTP terminou com sucesso. Um <code class="language-plaintext highlighter-rouge">HTTP 404</code> mostra que o servidor respondeu, mas o recurso nao existe; um erro de rede aponta para DNS, conexao, TLS ou indisponibilidade antes de haver uma resposta HTTP.</p>

<p>Teste tambem uma aplicacao local que voce controla:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 <span class="nt">-m</span> http.server 8000
python3 check_http.py http://127.0.0.1:8000/
</code></pre></div></div>

<p>Use uma segunda janela para manter o servidor local em execucao. Pare o processo ao terminar com <code class="language-plaintext highlighter-rouge">Ctrl+C</code>.</p>

<h2 id="evolua-sem-esconder-falhas">Evolua sem esconder falhas</h2>

<p>O codigo sai com status diferente de zero quando a verificacao falha. Isso permite usa-lo em um script de laboratorio ou em uma automacao simples. Antes de adicionar autenticacao, tokens ou URLs internas, prefira variaveis de ambiente e nunca grave segredos no arquivo ou no historico do terminal.</p>

<p>Se usar uma ferramenta de IA para propor timeout, repeticao ou novos testes, trate a resposta como uma hipotese: revise o diff, confirme as APIs na documentacao oficial e execute primeiro contra um endpoint controlado. Nao envie tokens, URLs internas ou respostas com dados sensiveis ao prompt. A evidencia continua sendo o comportamento reproduzido pelo script, nao a explicacao gerada pela ferramenta.</p>

<p>Para diagnosticar uma falha, combine o resultado com a <a href="/aplicacao-funciona-localmente-mas-nao-externamente/">experiencia de conectividade por camadas</a>. O script prova somente a requisicao feita a partir da maquina onde ele foi executado.</p>

<h2 id="referencias">Referencias</h2>

<ul>
  <li><a href="https://docs.python.org/3/library/urllib.request.html">Python: urllib.request</a></li>
  <li><a href="https://docs.python.org/3/tutorial/errors.html">Python: tratamento de excecoes</a></li>
</ul>]]></content><author><name>Eleu Carlos</name></author><category term="programming-ai" /><category term="python" /><category term="automation" /><category term="http" /><category term="observability" /><summary type="html"><![CDATA[Objetivo]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Experiencia de campo: aplicacao funciona no servidor, mas nao externamente</title><link href="https://www.infratips.com.br/aplicacao-funciona-localmente-mas-nao-externamente/" rel="alternate" type="text/html" title="Experiencia de campo: aplicacao funciona no servidor, mas nao externamente" /><published>2026-08-11T00:00:00-03:00</published><updated>2026-08-11T00:00:00-03:00</updated><id>https://www.infratips.com.br/aplicacao-funciona-localmente-mas-nao-externamente</id><content type="html" xml:base="https://www.infratips.com.br/aplicacao-funciona-localmente-mas-nao-externamente/"><![CDATA[<h2 id="contexto">Contexto</h2>

<p>Um padrao recorrente em ambientes Linux e Cloud ocorre quando a aplicacao responde em <code class="language-plaintext highlighter-rouge">localhost</code>, mas usuarios externos recebem timeout ou conexao recusada. A primeira reacao costuma ser alterar a aplicacao. Na pratica, o erro pode estar em qualquer camada entre o processo e o cliente.</p>

<p>Este relato resume um roteiro de diagnostico que pode ser aplicado a ambientes de laboratorio e producao, sempre respeitando as mudancas aprovadas para o ambiente.</p>

<h2 id="problema">Problema</h2>

<p>O servico respondia localmente:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-i</span> http://127.0.0.1:8080
</code></pre></div></div>

<p>Mas uma requisicao a partir de outra maquina nao recebia resposta. O sintoma era insuficiente para concluir se a aplicacao, o host ou a rede estava errado.</p>

<h2 id="diagnostico">Diagnostico</h2>

<p>O primeiro passo foi confirmar em qual endereco o processo estava ouvindo:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ss <span class="nt">-lntup</span> | <span class="nb">grep</span> <span class="s1">':8080'</span>
</code></pre></div></div>

<p>Um servico vinculado somente a <code class="language-plaintext highlighter-rouge">127.0.0.1</code> aceita conexoes locais, mas nao recebe trafego em um endereco de rede do host. Quando ele esta em <code class="language-plaintext highlighter-rouge">0.0.0.0</code> ou no IP correto, a investigacao segue para o firewall local, regras de seguranca Cloud, rotas, balanceador e DNS.</p>

<p>Tambem e importante diferenciar timeout de conexao recusada. Timeout sugere bloqueio ou caminho inexistente. Conexao recusada normalmente indica que o destino foi alcancado, mas nao havia processo aceitando naquela porta.</p>

<h2 id="solucao">Solucao</h2>

<p>O roteiro que reduziu tentativas aleatorias foi:</p>

<ol>
  <li>testar a aplicacao em <code class="language-plaintext highlighter-rouge">localhost</code>;</li>
  <li>verificar socket, porta e endereco de bind;</li>
  <li>testar pelo IP privado a partir de uma maquina na mesma rede;</li>
  <li>revisar firewall do host e regras do provedor;</li>
  <li>validar balanceador, DNS e TLS quando existirem;</li>
  <li>registrar a camada em que o trafego deixou de passar.</li>
</ol>

<p>Cada teste deve alterar uma unica variavel. Assim, a equipe consegue provar o que foi corrigido e evita abrir portas ou permissoes desnecessarias.</p>

<h2 id="resultado">Resultado</h2>

<p>Com a sequencia, o problema deixa de ser “a aplicacao nao abre” e passa a ser uma hipotese mensuravel. O tempo de diagnostico diminui porque cada comando elimina uma camada inteira de possibilidades.</p>

<h2 id="licoes">Licoes</h2>

<ul>
  <li>acesso local nao valida acessibilidade externa;</li>
  <li>uma porta em escuta nao confirma regra de firewall ou roteamento;</li>
  <li>logs e testes de rede devem acompanhar mudancas de configuracao;</li>
  <li>checklists simples ajudam profissionais iniciantes a diagnosticar com mais seguranca.</li>
</ul>

<p>Veja tambem a InfraTip sobre <a href="/verificar-portas-em-escuta-no-linux/">portas em escuta no Linux</a>.</p>]]></content><author><name>Eleu Carlos</name></author><category term="cloud-devops" /><category term="troubleshooting" /><category term="networking" /><category term="cloud" /><category term="observability" /><summary type="html"><![CDATA[Contexto]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Encontrando diretorios que consomem espaco no Linux</title><link href="https://www.infratips.com.br/encontrar-diretorios-que-consomem-espaco-no-linux/" rel="alternate" type="text/html" title="Encontrando diretorios que consomem espaco no Linux" /><published>2026-08-11T00:00:00-03:00</published><updated>2026-08-11T00:00:00-03:00</updated><id>https://www.infratips.com.br/encontrar-diretorios-que-consomem-espaco-no-linux</id><content type="html" xml:base="https://www.infratips.com.br/encontrar-diretorios-que-consomem-espaco-no-linux/"><![CDATA[<h2 id="contexto">Contexto</h2>

<p>Quando um servidor fica sem espaco, apagar arquivos aleatoriamente e uma forma rapida de piorar o incidente. Primeiro, descubra qual parte do filesystem cresceu.</p>

<h2 id="comando">Comando</h2>

<p>Para listar o consumo dos diretorios diretamente dentro de <code class="language-plaintext highlighter-rouge">/var</code>:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo du</span> <span class="nt">-xh</span> <span class="nt">--max-depth</span><span class="o">=</span>1 /var | <span class="nb">sort</span> <span class="nt">-h</span>
</code></pre></div></div>

<p>O <code class="language-plaintext highlighter-rouge">du</code> calcula o uso em disco. <code class="language-plaintext highlighter-rouge">--max-depth=1</code> limita a visao ao primeiro nivel, e <code class="language-plaintext highlighter-rouge">sort -h</code> ordena tamanhos como MB e GB corretamente.</p>

<p>Repita o comando no diretorio que apareceu no topo da lista. Por exemplo, se <code class="language-plaintext highlighter-rouge">/var/log</code> estiver grande:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo du</span> <span class="nt">-xh</span> <span class="nt">--max-depth</span><span class="o">=</span>1 /var/log | <span class="nb">sort</span> <span class="nt">-h</span>
</code></pre></div></div>

<h2 id="cuidado">Cuidado</h2>

<p>Uso alto em <code class="language-plaintext highlighter-rouge">/var</code> pode vir de logs, cache de pacotes, imagens de containers ou arquivos temporarios. Identifique o responsavel antes de remover qualquer arquivo. Tambem confirme em qual filesystem voce esta trabalhando com <code class="language-plaintext highlighter-rouge">df -h</code>.</p>

<h2 id="referencia">Referencia</h2>

<p>Consulte <code class="language-plaintext highlighter-rouge">man du</code> e <code class="language-plaintext highlighter-rouge">man df</code> no sistema para conhecer as opcoes disponiveis na distribuicao usada.</p>]]></content><author><name>Eleu Carlos</name></author><category term="linux-open-source" /><category term="linux" /><category term="storage" /><category term="troubleshooting" /><summary type="html"><![CDATA[Contexto]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Como estudar tecnologia com pratica deliberada</title><link href="https://www.infratips.com.br/estudar-tecnologia-com-pratica-deliberada/" rel="alternate" type="text/html" title="Como estudar tecnologia com pratica deliberada" /><published>2026-08-11T00:00:00-03:00</published><updated>2026-08-11T00:00:00-03:00</updated><id>https://www.infratips.com.br/estudar-tecnologia-com-pratica-deliberada</id><content type="html" xml:base="https://www.infratips.com.br/estudar-tecnologia-com-pratica-deliberada/"><![CDATA[<h2 id="o-problema-de-estudar-sem-fechar-ciclos">O problema de estudar sem fechar ciclos</h2>

<p>Em tecnologia, sempre existe uma nova ferramenta, certificacao ou trilha prometendo resolver a proxima etapa da carreira. O resultado comum e abrir muitos cursos, assistir muitas aulas e terminar poucos artefatos que provem aprendizado.</p>

<p>Uma alternativa melhor e trabalhar em ciclos pequenos. Cada ciclo responde a uma pergunta concreta: “consigo publicar uma pagina em um container?”, “consigo explicar uma regra de rede?” ou “consigo automatizar esta tarefa repetitiva?”.</p>

<h2 id="defina-um-objetivo-observavel">Defina um objetivo observavel</h2>

<p>Evite objetivos como “aprender Cloud”. Prefira resultados que possam ser verificados:</p>

<ul>
  <li>criar uma rede e uma maquina virtual em um laboratorio;</li>
  <li>subir um servico local com Docker;</li>
  <li>escrever um modulo Terraform pequeno e revisar seu <code class="language-plaintext highlighter-rouge">plan</code>;</li>
  <li>documentar como investigar uma porta inacessivel.</li>
</ul>

<p>Um objetivo observavel facilita escolher materiais e revela quando voce realmente terminou a pratica.</p>

<h2 id="use-a-sequencia-aprender-fazer-e-registrar">Use a sequencia aprender, fazer e registrar</h2>

<p>Reserve uma sessao curta para entender o conceito. Em seguida, reproduza-o em um laboratorio. Por fim, registre o que funcionou, o que falhou e quais comandos foram importantes.</p>

<p>Esse registro pode virar README, anotacao tecnica, repositório Git ou uma InfraTip. O valor nao esta em publicar tudo: esta em construir uma referencia que voce consiga reutilizar depois.</p>

<p>O <a href="/laboratorio-nginx-com-docker-compose/">laboratorio Nginx com Docker Compose</a> e um exemplo de ciclo pequeno. Depois de concluir, varie uma unica coisa: mude a porta, altere o volume ou acompanhe logs. Variacoes controladas ensinam mais do que trocar de assunto a cada hora.</p>

<h2 id="revise-os-erros-nao-apenas-os-acertos">Revise os erros, nao apenas os acertos</h2>

<p>Quando algo falhar, guarde o sintoma, a hipotese e a correcao. Isso forma um repertorio de diagnostico e deixa claro quais lacunas ainda existem.</p>

<p>Uma lista de erros comuns tambem ajuda a estudar para certificacoes. Em vez de memorizar apenas definicoes, relacione cada tema com um comando, uma configuracao ou um incidente que voce conseguiu reproduzir.</p>

<h2 id="ritmo-sustentavel">Ritmo sustentavel</h2>

<p>Uma rotina de duas ou tres sessaoes por semana e suficiente quando cada uma tem um objetivo definido. O ponto principal e manter uma sequencia repetivel: escolher, praticar, registrar, revisar e seguir para a proxima variacao.</p>

<p>Carreira tecnica evolui melhor com evidencias praticas acumuladas do que com uma lista longa de cursos iniciados.</p>]]></content><author><name>Eleu Carlos</name></author><category term="fundamentals-career" /><category term="studies" /><category term="career" /><category term="labs" /><category term="learning" /><summary type="html"><![CDATA[O problema de estudar sem fechar ciclos]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">KubeCon + CloudNativeCon North America 2026</title><link href="https://www.infratips.com.br/kubecon-cloudnativecon-north-america-2026/" rel="alternate" type="text/html" title="KubeCon + CloudNativeCon North America 2026" /><published>2026-08-11T00:00:00-03:00</published><updated>2026-08-11T00:00:00-03:00</updated><id>https://www.infratips.com.br/kubecon-cloudnativecon-north-america-2026</id><content type="html" xml:base="https://www.infratips.com.br/kubecon-cloudnativecon-north-america-2026/"><![CDATA[<h2 id="sobre-o-evento">Sobre o evento</h2>

<p>A KubeCon + CloudNativeCon North America 2026 esta programada para os dias 9 a 12 de novembro, em Salt Lake City, Utah. O evento e organizado pela Cloud Native Computing Foundation (CNCF) e pela Linux Foundation.</p>

<p>Para quem trabalha ou estuda Cloud e DevOps, a agenda e uma oportunidade de acompanhar projetos do ecossistema Cloud Native, praticas de plataforma, observabilidade, seguranca e operacao de clusters.</p>

<h2 id="como-aproveitar">Como aproveitar</h2>

<p>Nao e necessario tentar acompanhar todos os temas. Escolha uma pergunta pratica antes de consultar a agenda: como operar um cluster pequeno, como observar uma aplicacao ou como reduzir o ciclo de entrega. Registre palestras e projetos relacionados a essa pergunta e transforme os aprendizados em um laboratorio ou uma InfraTip.</p>

<h2 id="fonte-e-inscricao">Fonte e inscricao</h2>

<p>Consulte detalhes de agenda, viagem e inscricao na <a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/">pagina oficial da KubeCon + CloudNativeCon North America 2026</a>. Datas e disponibilidade devem ser confirmadas diretamente com a organizacao.</p>]]></content><author><name>Eleu Carlos</name></author><category term="cloud-devops" /><category term="kubernetes" /><category term="cloud-native" /><category term="open-source" /><category term="devops" /><summary type="html"><![CDATA[Sobre o evento]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Tutorial: criando um laboratorio Nginx com Docker Compose</title><link href="https://www.infratips.com.br/laboratorio-nginx-com-docker-compose/" rel="alternate" type="text/html" title="Tutorial: criando um laboratorio Nginx com Docker Compose" /><published>2026-08-11T00:00:00-03:00</published><updated>2026-08-11T00:00:00-03:00</updated><id>https://www.infratips.com.br/laboratorio-nginx-com-docker-compose</id><content type="html" xml:base="https://www.infratips.com.br/laboratorio-nginx-com-docker-compose/"><![CDATA[<h2 id="objetivo">Objetivo</h2>

<p>Este laboratorio cria um servidor Nginx local usando Docker Compose. O foco nao e decorar comandos: e observar a relacao entre arquivo de configuracao, porta publicada, container e resposta HTTP.</p>

<h2 id="pre-requisitos">Pre-requisitos</h2>

<ul>
  <li>Docker Engine instalado e em execucao.</li>
  <li>Docker Compose v2 disponivel pelo comando <code class="language-plaintext highlighter-rouge">docker compose</code>.</li>
  <li>Uma porta local livre, neste exemplo a <code class="language-plaintext highlighter-rouge">8080</code>.</li>
</ul>

<h2 id="crie-o-diretorio-do-laboratorio">Crie o diretorio do laboratorio</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> <span class="nt">-p</span> lab-nginx/site
<span class="nb">cd </span>lab-nginx
</code></pre></div></div>

<p>Crie <code class="language-plaintext highlighter-rouge">site/index.html</code> com um conteudo simples:</p>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;!doctype html&gt;</span>
<span class="nt">&lt;html</span> <span class="na">lang=</span><span class="s">"pt-BR"</span><span class="nt">&gt;</span>
  <span class="nt">&lt;body&gt;</span>
    <span class="nt">&lt;h1&gt;</span>InfraTips lab Nginx<span class="nt">&lt;/h1&gt;</span>
  <span class="nt">&lt;/body&gt;</span>
<span class="nt">&lt;/html&gt;</span>
</code></pre></div></div>

<p>Agora crie <code class="language-plaintext highlighter-rouge">compose.yaml</code>:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">services</span><span class="pi">:</span>
  <span class="na">web</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">nginx:alpine</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s2">"</span><span class="s">8080:80"</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">./site:/usr/share/nginx/html:ro</span>
</code></pre></div></div>

<h2 id="suba-e-teste">Suba e teste</h2>

<p>Inicie o container em segundo plano:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker compose up <span class="nt">-d</span>
docker compose ps
</code></pre></div></div>

<p>Abra <code class="language-plaintext highlighter-rouge">http://localhost:8080</code> no navegador ou valide pelo terminal:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-i</span> http://localhost:8080
</code></pre></div></div>

<p>A resposta deve ter status <code class="language-plaintext highlighter-rouge">200</code> e conter <code class="language-plaintext highlighter-rouge">InfraTips lab Nginx</code>. Para acompanhar o que o processo escreveu no log:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker compose logs <span class="nt">--follow</span>
</code></pre></div></div>

<h2 id="o-que-observar">O que observar</h2>

<p>A porta <code class="language-plaintext highlighter-rouge">8080</code> pertence ao host e encaminha trafego para a porta <code class="language-plaintext highlighter-rouge">80</code> do container. O volume monta seu diretorio local como conteudo servido pelo Nginx. A opcao <code class="language-plaintext highlighter-rouge">:ro</code> deixa o container ler os arquivos, sem poder modifica-los.</p>

<p>Altere o HTML, atualize o navegador e confirme que a mudanca aparece sem recriar a imagem. Isso mostra a diferenca entre uma imagem imutavel e um volume montado durante a execucao.</p>

<h2 id="encerramento">Encerramento</h2>

<p>Quando terminar, remova o ambiente:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker compose down
</code></pre></div></div>

<p>Antes de usar essa estrutura em um servidor, nao exponha portas sem entender firewall, rede e autenticacao. Este laboratorio e intencionalmente local e minimo.</p>

<h2 id="referencias">Referencias</h2>

<ul>
  <li><a href="https://docs.docker.com/compose/">Documentacao do Docker Compose</a></li>
  <li><a href="https://hub.docker.com/_/nginx">Imagem oficial Nginx</a></li>
</ul>]]></content><author><name>Eleu Carlos</name></author><category term="cloud-devops" /><category term="docker" /><category term="containers" /><category term="nginx" /><category term="labs" /><summary type="html"><![CDATA[Objetivo]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Validando Terraform antes do apply</title><link href="https://www.infratips.com.br/validar-terraform-antes-do-apply/" rel="alternate" type="text/html" title="Validando Terraform antes do apply" /><published>2026-08-11T00:00:00-03:00</published><updated>2026-08-11T00:00:00-03:00</updated><id>https://www.infratips.com.br/validar-terraform-antes-do-apply</id><content type="html" xml:base="https://www.infratips.com.br/validar-terraform-antes-do-apply/"><![CDATA[<h2 id="contexto">Contexto</h2>

<p>O comando <code class="language-plaintext highlighter-rouge">terraform apply</code> pode alterar recursos reais. Uma rotina curta antes do apply diminui erros de sintaxe, variaveis ausentes e mudancas inesperadas.</p>

<h2 id="comandos">Comandos</h2>

<p>Na raiz do modulo Terraform, execute:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>terraform <span class="nb">fmt</span> <span class="nt">-check</span> <span class="nt">-recursive</span>
terraform init
terraform validate
terraform plan
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">fmt -check</code> mostra arquivos que precisam ser formatados. <code class="language-plaintext highlighter-rouge">init</code> baixa providers e modulos declarados. <code class="language-plaintext highlighter-rouge">validate</code> verifica a configuracao local, e <code class="language-plaintext highlighter-rouge">plan</code> apresenta as alteracoes pretendidas.</p>

<p>Para aplicar a formatacao antes de revisar o diff:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>terraform <span class="nb">fmt</span> <span class="nt">-recursive</span>
git diff <span class="nt">--check</span>
</code></pre></div></div>

<h2 id="cuidado">Cuidado</h2>

<p>Um <code class="language-plaintext highlighter-rouge">plan</code> valido nao substitui revisao humana. Confira recursos que serao destruidos ou recriados, o provider e a conta Cloud usada pelo terminal. Em automacoes, mantenha o mesmo conjunto de variaveis e credenciais usado no ambiente alvo.</p>

<h2 id="referencia">Referencia</h2>

<p>Consulte a documentacao oficial dos comandos <a href="https://developer.hashicorp.com/terraform/cli/commands/validate"><code class="language-plaintext highlighter-rouge">validate</code></a> e <a href="https://developer.hashicorp.com/terraform/cli/commands/plan"><code class="language-plaintext highlighter-rouge">plan</code></a>.</p>]]></content><author><name>Eleu Carlos</name></author><category term="cloud-devops" /><category term="terraform" /><category term="iac" /><category term="cloud" /><category term="devops" /><summary type="html"><![CDATA[Contexto]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Como verificar portas em escuta no Linux</title><link href="https://www.infratips.com.br/verificar-portas-em-escuta-no-linux/" rel="alternate" type="text/html" title="Como verificar portas em escuta no Linux" /><published>2026-08-11T00:00:00-03:00</published><updated>2026-08-11T00:00:00-03:00</updated><id>https://www.infratips.com.br/verificar-portas-em-escuta-no-linux</id><content type="html" xml:base="https://www.infratips.com.br/verificar-portas-em-escuta-no-linux/"><![CDATA[<h2 id="contexto">Contexto</h2>

<p>Ao investigar um serviço indisponível, primeiro confirme se algum processo está aguardando conexões na porta esperada.</p>

<h2 id="comando">Comando</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ss <span class="nt">-lntup</span>
</code></pre></div></div>

<p>As opções mostram sockets em escuta (<code class="language-plaintext highlighter-rouge">-l</code>), conexões TCP (<code class="language-plaintext highlighter-rouge">-t</code>) e UDP (<code class="language-plaintext highlighter-rouge">-u</code>), endereços numéricos (<code class="language-plaintext highlighter-rouge">-n</code>) e o processo associado (<code class="language-plaintext highlighter-rouge">-p</code>). Para procurar uma porta específica:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ss <span class="nt">-lntup</span> | <span class="nb">grep</span> <span class="s1">':443'</span>
</code></pre></div></div>

<h2 id="cuidado">Cuidado</h2>

<p>Informações de processos pertencentes a outros usuários podem exigir privilégios administrativos. Encontrar uma porta em escuta confirma o estado local do socket, mas não garante que firewall, regras de Cloud ou roteamento permitam acesso externo.</p>

<h2 id="referência">Referência</h2>

<p>Consulte a documentação local com <code class="language-plaintext highlighter-rouge">man ss</code>.</p>]]></content><author><name>Eleu Carlos</name></author><category term="linux-open-source" /><category term="linux" /><category term="networking" /><summary type="html"><![CDATA[Contexto]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" /><media:content medium="image" url="https://www.infratips.com.br/assets/img/infratipsalpha.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>