<?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/">
  <channel>
    <title>Selfhosting on joão walter amadeu</title>
    <link>/tags/selfhosting/</link>
    <description>Recent content in Selfhosting on joão walter amadeu</description>
    <generator>Hugo -- 0.144.2</generator>
    <language>pt</language>
    <lastBuildDate>Wed, 09 Apr 2025 14:00:00 -0300</lastBuildDate>
    <atom:link href="/tags/selfhosting/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Subdomínios gratuitos!</title>
      <link>/posts/subdominios/</link>
      <pubDate>Wed, 09 Apr 2025 14:00:00 -0300</pubDate>
      <guid>/posts/subdominios/</guid>
      <description>Construi uma plataforma para obter subdomínios gratuitos.</description>
      <content:encoded><![CDATA[<h3 id="por-quê">Por quê?</h3>
<p>Vi um <a href="https://is-a.dev/">projeto gringo</a> e achei que seria interessante ter uma versão brasileira do mesmo. Também queria testar as functions do Supabase, portanto esse projeto tinha potencial para tomar várias horas do meu tempo livre (o que é muito bom).</p>
<h3 id="como-funciona">Como funciona?</h3>
<p>O front-end em flutter faz chamadas para o supabase, que através das actions, gerencia os domínios que pertencem ao usuário.</p>
<p>Por sua vez, as actions gerenciam segredos e chamam os end-points do cloudflare para adicionar ou remover domínios.</p>
<h3 id="como-obter-um-domínio-grátis">Como obter um domínio grátis?</h3>
<p>É simples:</p>
<ol>
<li>Acesse o <a href="https://e-um.dev.br/">website</a>;</li>
<li>Registre-se com o método que preferir (por enquanto apenas GitHub);</li>
<li>Adicione até 5 subdomínios de tipo A ou CNAME, como demonstrado abaixo:
<img alt="GIF" loading="lazy" src="/posts/images/eum.gif"></li>
</ol>
<h3 id="código">Código</h3>
<p>O projeto pode ser encontrado nesse <a href="https://github.com/fortmea/e-um.dev">repositório</a> (actions e front-end flutter).</p>
<h3 id="agradecimento">Agradecimento</h3>
<p>Quero deixar meus agradecimentos aos responsáveis pelo is-a.dev, o projeto gringo mencionado antes que me serviu de inspiração.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Novo blog</title>
      <link>/posts/newplatform/</link>
      <pubDate>Sun, 23 Feb 2025 18:00:00 -0300</pubDate>
      <guid>/posts/newplatform/</guid>
      <description>Resolvi transferir minha página pessoal para outra plataforma.</description>
      <content:encoded><![CDATA[<h3 id="por-que">Por que?</h3>
<p>Foram vários motivos, entre eles:</p>
<ol>
<li>A plataforma a qual eu utilizava para hospedar meu blog anterior (Fleek) teve
alguns problemas e o website por vezes ficava inacessível;</li>
<li>Era um website customizado e com a codebase toda bagunçada (pois eu montei
durante muitos anos, com mentalidade e approach diferentes a cada
atualização);</li>
<li>Além disso, a tecnologia utilizada (NextJS) <del>ainda mais naquela versão</del> já
não era mais tão interessante, e os build times estavam cada vez maiores;</li>
<li>Sem tempo irmão.</li>
</ol>
<h3 id="qual-o-substituto-e-como-fiz-essa-escolha">Qual o substituto e como fiz essa escolha?</h3>
<p>Escolhi hugo com o tema PaperMod. Além de muito rápido (vide imagem), é
extremamente fácil de configurar, reutilizar, e expandir a página utilizando
essa tecnologia.</p>
<div style="display: flex; flex-direction: column; align-items: center; text-align: center;">
    <img src="/posts/images/iamspeed.png" alt="alt">
    <p><em>Literalmente 118ms para gerar o site!</em></p>
</div>
<h3 id="postagens-anteriores-e-recursos-que-anteriormente-ficavam-hospedados-aqui">Postagens anteriores e recursos que anteriormente ficavam hospedados aqui</h3>
<p>Alguns conteúdos que antes se encontravam nesse website foram restaurados (licenças do meu app e alguns artigos), no entanto parte desses artigos já não condizem com o site.</p>
<p>Não planejo atualizar os artigos antigos, portanto é importante ter a mudança do website em mente ao fazer sua leitura.</p>
<h3 id="planos-futuros">Planos futuros</h3>
<p>Planejo atualizar mais frequentemente sobre outros projetos e sobre mudanças no blog por aqui. Além disso, planejo utilizar como portfólio em algum momento.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Configurando seu próprio motor de busca privado com o SearxNG</title>
      <link>/posts/searx/</link>
      <pubDate>Sun, 17 Jul 2022 00:00:00 +0000</pubDate>
      <guid>/posts/searx/</guid>
      <description>&lt;h3 id=&#34;o-que-é-o-searxng&#34;&gt;O que é o SearxNG?&lt;/h3&gt;
&lt;p&gt;SearxNG é um Fork do motor de meta-busca Searx, com melhorias na experiência do usuário.
Essa ferramenta permite buscar em diversos outros motores de busca como Google, DuckDuckGo, Bing, qwant, Brave, entre outros, sem sacrificar a privacidade ou qualidade dos resultados. Ele permite que cada usuário personalize suas preferências de busca, armazenando todos esses dados localmente.&lt;/p&gt;
&lt;p&gt;Além das instâncias públicas, também é possível hospedar a sua própria instância do SearxNG, garantindo privacidade máxima. E é esse o tópico a ser abordado nesse artigo.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="o-que-é-o-searxng">O que é o SearxNG?</h3>
<p>SearxNG é um Fork do motor de meta-busca Searx, com melhorias na experiência do usuário.
Essa ferramenta permite buscar em diversos outros motores de busca como Google, DuckDuckGo, Bing, qwant, Brave, entre outros, sem sacrificar a privacidade ou qualidade dos resultados. Ele permite que cada usuário personalize suas preferências de busca, armazenando todos esses dados localmente.</p>
<p>Além das instâncias públicas, também é possível hospedar a sua própria instância do SearxNG, garantindo privacidade máxima. E é esse o tópico a ser abordado nesse artigo.</p>
<h3 id="instalação-via-docker-com-docker-compose">Instalação via Docker, com Docker-compose</h3>
<p>Utilizando o Docker, a instalação dessa ferramenta não passa de uns poucos comandos no terminal, pois a configuração será minima.</p>
<p>Fazendo o download dos arquivos necessários:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>cd /usr/local
</span></span><span style="display:flex;"><span>git clone https://github.com/searxng/searxng-docker.git
</span></span><span style="display:flex;"><span>cd searxng-docker
</span></span></code></pre></div><p>Gerando chave secreta para o searxng:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sed -i <span style="color:#e6db74">&#34;s|ultrasecretkey|</span><span style="color:#66d9ef">$(</span>openssl rand -hex 32<span style="color:#66d9ef">)</span><span style="color:#e6db74">|g&#34;</span> searxng/settings.yml
</span></span></code></pre></div><p>Finalmente, iniciando a instância do searxNG:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker-compose up -d
</span></span></code></pre></div><p>Ou para parar a execução:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker-compose down
</span></span></code></pre></div><h3 id="configuração-de-proxy-reverso">Configuração de proxy reverso</h3>
<p>Por padrão o SearxNG utiliza a porta 443 para conexão HTTPS, podendo causar conflito com outros servidores web na máquina. Podemos resolver isso utilizando proxy reverso, apontando uma rota no servidor (nesse caso apache) para o SearxNG em uma porta alternativa:</p>
<h4 id="primeiro-editamos-o-arquivo-de-configuração-do-searxng-para-alterarmos-a-porta-de-acesso-opcional-caso-a-porta-padrão-8080-não-esteja-sendo-utilizada">Primeiro editamos o arquivo de configuração do searxNG, para alterarmos a porta de acesso. (Opcional caso a porta padrão 8080 não esteja sendo utilizada)</h4>
<ol>
<li>Execute o comando <code>docker-compose down</code> no caminho em que está o repositório do searxNG.</li>
<li>Na pasta searxNG, abra o arquivo <code>settings.yml</code> no seu editor de texto.</li>
<li>Na área <code>server</code> adicione a tag <code>port</code> seguindo o padrão do resto do arquivo e defina a porta que deseja utilizar.</li>
<li>Salve e inicie o serviço novamente.</li>
</ol>
<h4 id="exemplo-de-arquivo-de-configuração-de-rota-para-o-apache">Exemplo de arquivo de configuração de rota para o Apache:</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#a6e22e">&lt;VirtualHost *:80&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ServerName endereco.com #Endereço de acesso do serviço</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ServerAdmin webmaster@localhost</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ProxyPreserveHost On</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ProxyPass / http://0.0.0.0:8080/   #Endereço local do searxNG</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ProxyPassReverse / http://0.0.0.0:8080/ #Endereço local do searxNG</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">ErrorLog ${APACHE_LOG_DIR}/error.log</span>
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">CustomLog ${APACHE_LOG_DIR}/access.log combined</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">&lt;/VirtualHost&gt;</span>
</span></span></code></pre></div><p>Ative o arquivo com o comando <code>a2ensite nomedoarquivo.conf</code> e recarregue o serviço.</p>
<h3 id="resultado">Resultado</h3>
<p><img alt="A ferramenta tem uma aparência muito agradável, e outros temas podem ser instalados, além de muitas outras configurações que estão disponíveis" loading="lazy" src="/posts/images/searx.png" title="A ferramenta tem uma aparência muito agradável, e outros temas podem ser instalados, além de muitas outras configurações que estão disponíveis"></p>
<p>Até a próxima!</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
