<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Guias on Blog do Aquasp</title><link>https://aquasp.blog/pt/tag/guides/</link><description>Recent content in Guias on Blog do Aquasp</description><generator>Hugo -- gohugo.io</generator><language>pt-br</language><lastBuildDate>Fri, 15 May 2026 15:53:11 +0000</lastBuildDate><atom:link href="https://aquasp.blog/pt/tag/guides/index.xml" rel="self" type="application/rss+xml"/><item><title>Como configurar o Flutter para desenvolvimento no Ubuntu 24.04</title><link>https://aquasp.blog/pt/how-to-setup-flutter-for-development-in-ubuntu-24-04/</link><pubDate>Tue, 14 Apr 2026 01:15:39 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-setup-flutter-for-development-in-ubuntu-24-04/</guid><description>&lt;p&gt;O jeito mais rápido e fácil, com a versão mais recente do Flutter.&lt;/p&gt;&#10;&lt;h2 id="passo-1-instale-o-flutter-usando-snap"&gt;Passo 1: Instale o Flutter usando Snap&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo snap install flutter --classic&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-2-instale-o-openjdk"&gt;Passo 2: Instale o OpenJDK&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo apt install openjdk-17-jdk -y&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-3-baixe-as-android-cli-tools"&gt;Passo 3: Baixe as Android CLI Tools&#10;&lt;/h2&gt;&lt;p&gt;Acesse &lt;a class="link" href="https://developer.android.com/studio?ref=aquasp.blog#command-line-tools-only" target="_blank" rel="noopener"&#10; &gt;este link&lt;/a&gt; e baixe a versão mais recente para Linux.&lt;/p&gt;&#10;&lt;p&gt;Crie a pasta:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;mkdir ~/Android/Sdk&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Garanta que você está usando exatamente esta estrutura:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;~/Android/Sdk/cmdline-tools/latest/bin/ ← sdkmanager&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-4-adicione-ao-bashrc"&gt;Passo 4: Adicione ao ~/.bashrc&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;export ANDROID_SDK_ROOT=$HOME/Android/Sdkexport ANDROID_HOME=$ANDROID_SDK_ROOTexport&#10;PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/binexport PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools # Nextexport JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64export PATH=$PATH:$JAVA_HOME/binexport CHROME_EXECUTABLE=/usr/bin/brave-browser&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-5-instale-o-sdkmanager"&gt;Passo 5: Instale o sdkmanager&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;sdkmanager &amp;#34;platform-tools&amp;#34; &amp;#34;platforms;android-36&amp;#34; &amp;#34;build-tools;36.0.0&amp;#34;&#10;sdkmanager --update&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-6-configuração-do-flutter"&gt;Passo 6: Configuração do Flutter&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;flutter config --android-sdk ~/Android/Sdkflutter doctor --android-licenses # Accept all&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-7-verifique"&gt;Passo 7: Verifique&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;flutter doctor -v&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora você tem uma instalação limpa do Flutter sem Android Studio.&lt;/p&gt;&#10;&lt;p&gt;Obrigado — e bora programar! 🚀&lt;/p&gt;&#10;</description></item><item><title>Largue o app oficial: use sua Mi Band com privacidade usando alternativas de código aberto</title><link>https://aquasp.blog/pt/ditch-the-official-app-use-your-mi-band-privately-with-open-source-alternatives/</link><pubDate>Tue, 23 Dec 2025 20:23:05 +0000</pubDate><guid>https://aquasp.blog/pt/ditch-the-official-app-use-your-mi-band-privately-with-open-source-alternatives/</guid><description>&lt;p&gt;Se você adora usar um vestível como a Mi Band, mas quer proteger sua privacidade (como eu), existe um ótimo jeito de fazer isso!&lt;/p&gt;&#10;&lt;h2 id="primeiro-confira-a-compatibilidade-do-dispositivo"&gt;Primeiro, confira a compatibilidade do dispositivo&#10;&lt;/h2&gt;&lt;p&gt;O primeiro passo é verificar se o seu dispositivo é suportado. Dispositivos da Xiaomi e da Huawei geralmente têm a melhor compatibilidade. Recomendo conferir duas alternativas populares:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;GadgetBridge&lt;/strong&gt;: totalmente de código aberto e muito focado em privacidade. Funciona de forma confiável, embora a interface não seja a mais moderna nem a mais bonita.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Notify for Mi Band&lt;/strong&gt;: tem uma interface bem mais bonita e caprichada (na minha opinião), mas não é de código aberto, e a versão Pro (sem anúncios) custa cerca de US$ 3.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Em termos de privacidade, as duas opções são muito superiores ao app oficial da Xiaomi — sem compartilhamento constante de dados com servidores.&lt;/p&gt;&#10;&lt;p&gt;É quase irônico que dispositivos de marcas chinesas acabem oferecendo opções de privacidade melhores do que muitas marcas ocidentais quando usados com essas alternativas. Provavelmente é só um efeito colateral da popularidade e dos preços competitivos delas.&lt;/p&gt;&#10;&lt;h2 id="extraia-o-token-de-autenticação"&gt;Extraia o token de autenticação&#10;&lt;/h2&gt;&lt;p&gt;Infelizmente, você vai precisar do app oficial por um tempo. Baixe o app &lt;strong&gt;Xiaomi Mi Fitness&lt;/strong&gt;, pareie sua pulseira, crie uma conta Xiaomi e atualize o firmware para a versão mais recente*.&lt;/p&gt;&#10;&lt;p&gt;Feito isso, você precisa extrair o token de autenticação (auth) da Xiaomi. O método mais fácil hoje é usar o app &lt;strong&gt;Notify for Mi Band&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Baixe o Notify for Mi Band na Google Play Store (existem duas versões; garanta que você está baixando a correta para o seu dispositivo)&lt;/li&gt;&#10;&lt;li&gt;Comece o processo de configuração no app.&lt;/li&gt;&#10;&lt;li&gt;Você verá duas opções para obter o token: &lt;strong&gt;Offline&lt;/strong&gt; e &lt;strong&gt;Online&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;O método offline exige exportar os logs do app oficial Mi Fitness e extrair o token deles. Tentei várias vezes, mas nunca funcionou para mim — não consegui nem encontrar os logs certos manualmente.&lt;/p&gt;&#10;&lt;p&gt;Por isso, recomendo fortemente o &lt;strong&gt;método online&lt;/strong&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Entre com o e-mail e a senha da sua conta Xiaomi.&lt;/li&gt;&#10;&lt;li&gt;A Xiaomi vai mandar um código de verificação para o seu e-mail.&lt;/li&gt;&#10;&lt;li&gt;Digite o código, e o app vai buscar o token automaticamente para você.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="últimos-passos-faça-a-troca-e-desinstale-o-app-oficial"&gt;Últimos passos: faça a troca e desinstale o app oficial&#10;&lt;/h2&gt;&lt;p&gt;Depois de obter o token:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Digite-o no Notify for Mi Band (ou no GadgetBridge, se for o que você usa).&lt;/li&gt;&#10;&lt;li&gt;Conceda todas as permissões necessárias.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Desinstale o app oficial Mi Fitness imediatamente&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;A pulseira só consegue se conectar e sincronizar com um app por vez. Manter o app oficial instalado vai causar problemas de conexão ou impedir a sincronização correta com a alternativa que você escolheu.&lt;/p&gt;&#10;&lt;p&gt;Pronto, está tudo configurado! Personalize as notificações, ative/desative recursos como quiser, encontre seu celular ou sua pulseira, instale mostradores gratuitos e acompanhe passos, calorias e frequência cardíaca — tudo em uma interface limpa e bonita, sem abrir mão da privacidade.&lt;/p&gt;&#10;&lt;p&gt;Um probleminha que notei: o monitoramento do sono não está sincronizando direito. Não sei se é algo específico da Mi Band 10, uma peculiaridade do firmware ou alguma configuração que eu mudei. Os dados continuam aparecendo corretamente na própria pulseira, então é só um problema de sincronização. Pessoalmente, não ligo — uso minha Mi Band principalmente como relógio prático, lanterna, para checar rapidamente a frequência cardíaca nos treinos e para trocar a música numa caixinha de som Bluetooth.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Pelo menos na Mi Band 10, o firmware mais recente (em dezembro de 2025) não quebrou a compatibilidade com o Notify for Mi Band.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Como ativar a decodificação de vídeo acelerada por hardware no Brave no Linux: reprodução mais fluida e mais bateria</title><link>https://aquasp.blog/pt/how-to-enable-hardware-accelerated-video-decoding-in-brave-on-linux-smoother-playback-and-better-battery/</link><pubDate>Sun, 14 Dec 2025 01:35:15 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-enable-hardware-accelerated-video-decoding-in-brave-on-linux-smoother-playback-and-better-battery/</guid><description>&lt;p&gt;A decodificação de vídeo acelerada por hardware tira a reprodução da CPU e passa para a GPU, o que melhora o desempenho, reduz o aquecimento e aumenta a duração da bateria — principalmente em vídeos de alta resolução. No Linux, isso funciona em navegadores baseados no Chromium, como o Brave, mas muitas vezes exige flags. &lt;strong&gt;Chega de depender de extensões como o h264ify ou de baixar vídeos para assistir no MPV!&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="benefícios"&gt;Benefícios&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Reprodução mais fluida em alta resolução (1080p ou mais)&lt;/li&gt;&#10;&lt;li&gt;Menor uso de CPU&lt;/li&gt;&#10;&lt;li&gt;Mais duração de bateria em notebooks&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="pré-requisitos-distros-baseadas-no-ubuntu-como-o-mint"&gt;Pré-requisitos (distros baseadas no Ubuntu, como o Mint)&#10;&lt;/h2&gt;&lt;p&gt;Para GPUs Intel (comuns em notebooks):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo apt update&#10;sudo apt install intel-media-va-driver-non-free vainfo&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Confira com o vainfo (ele deve listar perfis suportados, como VP9/H.264).&lt;/p&gt;&#10;&lt;p&gt;AMD/NVIDIA: garanta que os drivers Mesa/proprietários estejam instalados.&lt;/p&gt;&#10;&lt;h2 id="ativando-o-suporte-a-flags-em-distros-baseadas-no-ubuntu"&gt;Ativando o suporte a flags em distros baseadas no Ubuntu&#10;&lt;/h2&gt;&lt;p&gt;O pacote Debian do Brave não lê o brave-flags.conf por padrão (ao contrário do pacote do AUR no Arch). Crie um wrapper:&lt;/p&gt;&#10;&lt;p&gt;Corrija as permissões:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo chown --reference=/usr/bin/brave-browser-stable.original /usr/bin/brave-browser-stable&#10;sudo chmod --reference=/usr/bin/brave-browser-stable.original /usr/bin/brave-browser-stable&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Crie o novo inicializador (Bash):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo nano /usr/bin/brave-browser-stable&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cole:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;#!/bin/sh&#10;: $$ {XDG_CONFIG_HOME=&amp;#34; $${HOME}/.config&amp;#34;}&#10;unset -v flags_conf&#10;flags_conf=&amp;#34;${XDG_CONFIG_HOME}/brave-flags.conf&amp;#34;&#10;if [ -f &amp;#34;${flags_conf}&amp;#34; ]&#10;then&#10; unset -v flags&#10; flags=&amp;#34;$$ (sed &amp;#39;s/#.*//&amp;#39; &amp;lt; &amp;#34; $${flags_conf}&amp;#34; | tr &amp;#39;\n&amp;#39; &amp;#39; &amp;#39;)&amp;#34;&#10; set -- $$ {flags} &amp;#34; $$@&amp;#34;&#10;fi&#10;exec /usr/bin/brave-browser-stable.original &amp;#34;$@&amp;#34;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Desvie o inicializador original:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo dpkg-divert --add --rename --divert /usr/bin/brave-browser-stable.original /usr/bin/brave-browser-stable&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora crie/edite o ~/.config/brave-flags.conf para as flags.&lt;/p&gt;&#10;&lt;h2 id="flags-recomendadas"&gt;Flags recomendadas&#10;&lt;/h2&gt;&lt;p&gt;Adicione ao ~/.config/brave-flags.conf (em uma linha só e reinicie o Brave):&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Wayland (geralmente o padrão/a melhor opção):&lt;/strong&gt;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Xorg/X11 (ou como alternativa):&lt;/strong&gt;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--enable-features=VaapiVideoDecoder,VaapiIgnoreDriverChecks,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="verificação"&gt;Verificação&#10;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;Reproduza um vídeo (por exemplo, no YouTube em 1080p ou mais).&lt;/li&gt;&#10;&lt;li&gt;Ctrl + Shift + I → três pontos → More tools → Media.&lt;/li&gt;&#10;&lt;li&gt;Veja o nome do decodificador (Decoder name): VaapiVideoDecoder = acelerado pela GPU (evite o FFmpegVideoDecoder).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="créditos"&gt;Créditos&#10;&lt;/h3&gt;&lt;p&gt;Este comentário incrível no GitHub: &lt;a class="link" href="https://github.com/brave/brave-browser/issues/2300?ref=aquasp.blog#issuecomment-2718755680" target="_blank" rel="noopener"&#10; &gt;https://github.com/brave/brave-browser/issues/2300#issuecomment-2718755680&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Como sempre, a Arch Wiki é um recurso valiosíssimo para tudo relacionado a Linux. Se a aceleração de vídeo por hardware ainda não funcionar, consulte a wiki diretamente para ver as flags mais recentes e dicas de solução de problemas. &lt;a class="link" href="https://wiki.archlinux.org/title/Chromium?ref=aquasp.blog#Hardware_video_acceleration" target="_blank" rel="noopener"&#10; &gt;https://wiki.archlinux.org/title/Chromium#Hardware_video_acceleration&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>7 coisas que você deve fazer depois de instalar o WordPress</title><link>https://aquasp.blog/pt/7-things-that-you-should-do-after-installing-wordpress/</link><pubDate>Tue, 09 Dec 2025 01:45:24 +0000</pubDate><guid>https://aquasp.blog/pt/7-things-that-you-should-do-after-installing-wordpress/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Vai começar um site WordPress do zero em 2026? Seja um blog, uma loja virtual ou um portfólio, estes ajustes vão turbinar a velocidade, reforçar a segurança e garantir um desempenho lisinho desde o primeiro dia.&lt;/p&gt;&#10;&lt;p&gt;Sem ferramentas pagas — só plugins gratuitos e configurações rápidas. Vamos lá!&lt;/p&gt;&#10;&lt;h2 id="1-redimensione-e-comprima-imagens-automaticamente-no-upload"&gt;1. Redimensione e comprima imagens automaticamente no upload&#10;&lt;/h2&gt;&lt;p&gt;Imagens são a principal assassina de banda. Não suba uma foto de 10 MB torcendo para dar certo — automatize a compressão para manter seu site enxuto.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Plugin recomendado:&lt;/strong&gt; &lt;a class="link" href="https://wordpress.org/plugins/resize-image-after-upload/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;Resize Image After Upload&lt;/a&gt; (gratuito, mais de 90 mil instalações ativas, nota 4,8/5)&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Instale e ative logo de cara.&lt;/li&gt;&#10;&lt;li&gt;Defina a largura/altura máxima (por exemplo, 1920px de largura) e o nível de compressão (a qualidade JPEG padrão de 82% é boa).&lt;/li&gt;&#10;&lt;li&gt;Ele redimensiona JPEG/PNG/GIF automaticamente no upload, corta o tamanho dos arquivos em 50–80% e melhora o SEO com carregamentos mais rápidos.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Dica de mestre: para otimizar em massa as imagens que já existem, use junto com o Smush (o plano gratuito processa 50 imagens/mês).&lt;/p&gt;&#10;&lt;p&gt;Resultado: páginas carregam 2–3x mais rápido, menos carga no servidor e o Google mais feliz com o seu site.&lt;/p&gt;&#10;&lt;h2 id="2-corte-o-excesso-desnecessário"&gt;2. Corte o excesso desnecessário&#10;&lt;/h2&gt;&lt;p&gt;O WordPress vem com &amp;ldquo;extras&amp;rdquo; de que você talvez não precise — como blocos do Gutenberg, XML-RPC ou scripts de emoji. Corte a gordura para ter um núcleo mais leve.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Plugin recomendado:&lt;/strong&gt; &lt;a class="link" href="https://wordpress.org/plugins/unbloater/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;Unbloater&lt;/a&gt; (gratuito, mais de 10 mil instalações ativas, nota 5/5)&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Painel simples em &lt;strong&gt;Configurações &amp;gt; Unbloater&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Opções recomendadas:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Backend:&lt;/strong&gt; desative as atualizações automáticas (se você faz isso manualmente), limite as revisões de posts a 3, esconda os avisos de atualização para quem não é administrador, desative o XML-RPC.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; remova os manifestos RSD/WLW, os links curtos, os links de feed, o jQuery Migrate e os scripts de emoji.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Editor de blocos:&lt;/strong&gt; desative totalmente o Gutenberg (se você usa o Editor Clássico) ou remova os blocos que não usa.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Extras:&lt;/strong&gt; bloqueie o DNS prefetch para o WordPress.org e remova a meta tag generator.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Tudo é reversível — desative se aparecer algum problema. Isso reduz as consultas ao banco de dados e o excesso de JS/CSS em 20–30%.&lt;/p&gt;&#10;&lt;h2 id="3-dome-a-heartbeat-api"&gt;3. Dome a Heartbeat API&#10;&lt;/h2&gt;&lt;p&gt;A Heartbeat API do WordPress faz requisições ao seu servidor a cada 15–60 segundos para salvamento automático, presença de usuários etc. Ótimo para colaboração, mas faz a CPU disparar em hospedagem compartilhada.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Plugin recomendado:&lt;/strong&gt; &lt;a class="link" href="https://wordpress.org/plugins/heartbeat-control/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;Heartbeat Control&lt;/a&gt; (gratuito, mais de 90 mil instalações ativas, nota 4,1/5)&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Vá em &lt;strong&gt;Configurações &amp;gt; Heartbeat Control&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;Defina os intervalos: 60 segundos (frontend), 120 segundos (painel/editor).&lt;/li&gt;&#10;&lt;li&gt;Ou desative totalmente no frontend se você não precisa de pré-visualizações ao vivo.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;O Unbloater também resolve isso. Espere uma economia de 10–20% de CPU em sessões ociosas.&lt;/p&gt;&#10;&lt;h2 id="4-limite-as-revisões-de-posts"&gt;4. Limite as revisões de posts&#10;&lt;/h2&gt;&lt;p&gt;Por padrão, o WordPress salva 25 revisões por post — inchando seu banco de dados com o tempo (por exemplo, um site com 1.000 posts = mais de 25 mil registros).&lt;/p&gt;&#10;&lt;p&gt;Adicione ao &lt;code&gt;wp-config.php&lt;/code&gt; (antes de &amp;ldquo;That&amp;rsquo;s all, stop editing!&amp;rdquo;):&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Limit to 3 revisions (or false to disable)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;define&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;WP_POST_REVISIONS&amp;#39;&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;O Unbloater tem uma opção para isso. Limpe as revisões antigas com o WP-Optimize (gratuito).&lt;/p&gt;&#10;&lt;p&gt;Resultado: banco de dados menor = consultas e backups mais rápidos.&lt;/p&gt;&#10;&lt;h2 id="5-desative-o-xml-rpc-a-menos-que-você-precise"&gt;5. Desative o XML-RPC (a menos que você precise)&#10;&lt;/h2&gt;&lt;p&gt;O XML-RPC permite publicar remotamente e usar apps, mas é um ímã de ataques de força bruta (a maioria dos bots mira nele).&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Se você usa o Jetpack/apps de celular: mantenha, mas libere só o seu IP.&lt;/li&gt;&#10;&lt;li&gt;Caso contrário: bloqueie via .htaccess (Apache/LiteSpeed):&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;Files xmlrpc.php&amp;gt;&#10;Order Deny,Allow&#10;Deny from all&#10;# Allow from YOUR.IP.ADDRESS (uncomment if needed)&#10;&amp;lt;/Files&amp;gt;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;O Unbloater ou o &lt;a class="link" href="https://wordpress.org/plugins/loginizer/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;Loginizer&lt;/a&gt; (gratuito, mais de 1 milhão de instalações) também podem desativá-lo.&lt;/p&gt;&#10;&lt;h2 id="6-proteja-os-logins-com-limite-de-tentativas"&gt;6. Proteja os logins com limite de tentativas&#10;&lt;/h2&gt;&lt;p&gt;Os bots martelam o /wp-login.php 24/7. Limite as tentativas para barrar os ataques de força bruta de vez.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Melhor escolha:&lt;/strong&gt; &lt;a class="link" href="https://wordpress.org/plugins/limit-login-attempts-reloaded/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;Limit Login Attempts Reloaded&lt;/a&gt; (gratuito, mais de 2 milhões de instalações, nota 4,9/5)&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Padrão: 3 tentativas falhas → bloqueio de 15 min (que sobe para 24h).&lt;/li&gt;&#10;&lt;li&gt;Cobre o wp-admin, o XML-RPC, o WooCommerce e logins personalizados.&lt;/li&gt;&#10;&lt;li&gt;Inclui logs + notificações.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Alternativa:&lt;/strong&gt; &lt;a class="link" href="https://wordpress.org/plugins/bruteguard/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;BruteGuard&lt;/a&gt; (gratuito, bloqueio de botnets na nuvem através de uma rede compartilhada).&lt;/p&gt;&#10;&lt;p&gt;O &lt;a class="link" href="https://wordpress.org/plugins/loginizer/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;Loginizer&lt;/a&gt; (mais de 1 milhão de instalações) adiciona 2FA + reCAPTCHA como camadas extras.&lt;/p&gt;&#10;&lt;p&gt;Teste: tente logins errados — você verá os bloqueios na hora.&lt;/p&gt;&#10;&lt;h2 id="7-avalie-os-plugins-antes-de-instalar"&gt;7. Avalie os plugins antes de instalar&#10;&lt;/h2&gt;&lt;p&gt;Nem todos os plugins são iguais — alguns incham o seu site com mais de 1 MB de uso de RAM ou com erros de JS. Sempre confira:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://wphive.com/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;&lt;strong&gt;WP Hive&lt;/strong&gt;&lt;/a&gt;: extensão do Chrome + site com testes automatizados (memória, impacto na velocidade da página, compatibilidade com PHP/WordPress, espaço no banco de dados). Por exemplo, Yoast SEO 20.1: +0,1 s no carregamento, 1 MB de RAM (mais pesado que a média).&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://plugintests.com/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;&lt;strong&gt;PluginTests.com&lt;/strong&gt;&lt;/a&gt;: testes básicos de compatibilidade/fumaça para 98% dos plugins do WP.org (erros de ativação, quebras óbvias).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Exemplo rápido (benchmarks de 2025):&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Yoast SEO: sólido, mas pesado (+0,1 s no carregamento, 1 MB de RAM). Ótimo para legibilidade.&lt;/li&gt;&#10;&lt;li&gt;Rank Math SEO: mais leve (sem impacto no carregamento, &amp;lt;250 KB de RAM), mais recursos gratuitos. Muitas vezes 4x mais rápido nos testes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Prefira as opções leves — só adicione as &amp;ldquo;pesadas&amp;rdquo; se forem essenciais.&lt;/p&gt;&#10;&lt;h2 id="resumindo"&gt;Resumindo&#10;&lt;/h2&gt;&lt;p&gt;Aplique isso hoje, e o seu site vai estrear 2–3x mais rápido, mais seguro e preparado para o futuro. Tempo total: ~30 minutos. Sem desculpas!&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura! 🚀&lt;/p&gt;&#10;</description></item><item><title>Como evitar quedas por inatividade quando você está conectado via SSH</title><link>https://aquasp.blog/pt/how-to-avoid-timeouts-while-you-are-logged-on-ssh/</link><pubDate>Tue, 09 Dec 2025 01:41:02 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-avoid-timeouts-while-you-are-logged-on-ssh/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Uma das coisas mais frustrantes quando se trabalha em um servidor?&lt;/p&gt;&#10;&lt;p&gt;Sua sessão SSH cai por causa de uma oscilação rápida no Wi-Fi, de um tempo limite por inatividade ou de uma conexão instável.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Resolva isso de vez em 30 segundos.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="a-solução-universal-edite-sua-configuração-do-ssh"&gt;A solução universal: edite sua configuração do SSH&#10;&lt;/h2&gt;&lt;p&gt;Isso funciona no &lt;strong&gt;Linux, macOS e Windows&lt;/strong&gt; — e aguenta falhas de rede de até ~4–5 minutos.&lt;/p&gt;&#10;&lt;h3 id="passo-1-crie-ou-edite-o-arquivo-de-configuração-do-ssh"&gt;Passo 1: Crie ou edite o arquivo de configuração do SSH&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;No Linux / macOS:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p ~/.ssh&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano ~/.ssh/config&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;No Windows (PowerShell):&lt;/strong&gt;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# Replace YourUsername with your actual Windows username&#10;mkdir &amp;#34;$HOME\.ssh&amp;#34; -Force&#10;notepad &amp;#34;$HOME\.ssh\config&amp;#34;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="passo-2-adicione-estas-linhas"&gt;Passo 2: Adicione estas linhas&#10;&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;sshHost *&#10; ServerAliveInterval 120&#10; ServerAliveCountMax 3&#10; TCPKeepAlive yes&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Salve e saia.&lt;/p&gt;&#10;&lt;p&gt;Pronto. É só isso.&lt;/p&gt;&#10;&lt;h2 id="o-que-isso-faz-de-verdade"&gt;O que isso faz de verdade&#10;&lt;/h2&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Configuração&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Significado&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Host *&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Aplica estas regras a &lt;strong&gt;todas&lt;/strong&gt; as conexões SSH&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;ServerAliveInterval 120&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;A cada 2 minutos, seu computador envia um pacotinho de “ainda estou aqui”&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;ServerAliveCountMax 3&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Só se 3 pacotes seguidos falharem → aí a conexão é fechada (~6 min)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;TCPKeepAlive yes&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Keepalive extra no nível do sistema operacional (ajuda com alguns roteadores/firewalls)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Resultado: agora sua sessão SSH sobrevive a:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Troca de rede Wi-Fi&lt;/li&gt;&#10;&lt;li&gt;Notebook entrando e saindo da suspensão&lt;/li&gt;&#10;&lt;li&gt;Quedas rápidas de internet&lt;/li&gt;&#10;&lt;li&gt;Reconexões de VPN&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;…sem travar nem cair.&lt;/p&gt;&#10;&lt;h2 id="agora-você-é-inabalável"&gt;Agora você é inabalável&#10;&lt;/h2&gt;&lt;p&gt;De agora em diante, quando sua internet piscar, sua sessão SSH simplesmente… espera com paciência.&lt;/p&gt;&#10;&lt;p&gt;Chega de “Connection reset by peer”&#10;Chega de perder sessões do tmux&#10;Chega de raiva&lt;/p&gt;&#10;&lt;p&gt;Você oficialmente subiu de nível.&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura — e continue conectado!&lt;/p&gt;&#10;</description></item><item><title>Como verificar o uso de disco por arquivo ou diretório no Linux</title><link>https://aquasp.blog/pt/how-to-check-disk-usage-per-file-or-directory-on-linux/</link><pubDate>Tue, 09 Dec 2025 01:34:27 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-check-disk-usage-per-file-or-directory-on-linux/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Seja para investigar uma VPS lotada, fazer uma limpeza no servidor de casa ou só por curiosidade — aqui estão os comandos &lt;strong&gt;mais rápidos e úteis&lt;/strong&gt; para entender o que está comendo o seu espaço em disco.&lt;/p&gt;&#10;&lt;h2 id="1-encontre-os-maiores-arquivos-e-pastas-no-diretório-atual"&gt;1. Encontre os maiores arquivos e pastas no diretório atual&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;du -shc * | sort -rh | head -15&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;du -shc * → mostra o tamanho de tudo na pasta atual (em formato legível, com o total)&lt;/li&gt;&#10;&lt;li&gt;sort -rh → ordena do maior para o menor&lt;/li&gt;&#10;&lt;li&gt;head -15 → mostra só os 15 maiores culpados (mude o número se precisar)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Perfeito para achar rapidinho aquele arquivo de log enorme ou aquela pasta de backup.&lt;/p&gt;&#10;&lt;p&gt;Dica de mestre: rode em /var, /home ou / para caçar o que está ocupando espaço.&lt;/p&gt;&#10;&lt;h2 id="2-verifique-o-uso-geral-do-disco-todas-as-partições"&gt;2. Verifique o uso geral do disco (todas as partições)&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;df -h&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mostra:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Espaço total/usado/disponível&lt;/li&gt;&#10;&lt;li&gt;Porcentagem de uso&lt;/li&gt;&#10;&lt;li&gt;Ponto de montagem&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Procure a linha com / (raiz) ou o seu disco principal.&#10;Exemplo: 64G usados / 226G no total → 28% ocupado&lt;/p&gt;&#10;&lt;p&gt;Adicione &amp;ndash;exclude-type=tmpfs para esconder os sistemas de arquivos temporários:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;df -h --exclude-type=tmpfs --exclude-type=devtmpfs&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="3-verifique-o-uso-de-inodes-quando-aparece-disco-cheio-mas-o-df-mostra-espaço-livre"&gt;3. Verifique o uso de inodes (quando aparece &amp;ldquo;disco cheio&amp;rdquo;, mas o df mostra espaço livre)&#10;&lt;/h2&gt;&lt;p&gt;Às vezes o seu disco está cheio de &lt;strong&gt;milhões de arquivinhos&lt;/strong&gt; (logs, cache, sessões etc.). Cada arquivo usa um inode.&lt;/p&gt;&#10;&lt;p&gt;Veja os inodes por pasta no diretório atual:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;du --inodes --max-depth=1 . | sort -nr&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ou no sistema todo:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;df -i&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Se o &amp;ldquo;IUsed&amp;rdquo; estiver perto de 100%, acabaram os inodes — hora de limpar os arquivos pequenos!&lt;/p&gt;&#10;&lt;h2 id="comandos-bônus-de-uma-linha"&gt;Comandos bônus de uma linha&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# Top 10 biggest directories in /home&#10;du -h /home | sort -rh | head -10&#10;&#10;# Find files bigger than 1GB&#10;find / -type f -size +1G 2&amp;gt;/dev/null&#10;&#10;# Show only real disks (clean output)&#10;df -h -x squashfs -x tmpfs -x devtmpfs&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;É só isso!&lt;/p&gt;&#10;&lt;p&gt;Agora você tem o kit definitivo para &lt;strong&gt;nunca mais ser pego de surpresa&lt;/strong&gt; por um disco cheio.&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura!&lt;/p&gt;&#10;</description></item><item><title>Como exportar e importar volumes do Docker com facilidade</title><link>https://aquasp.blog/pt/how-to-easily-export-and-import-docker-volumes/</link><pubDate>Tue, 09 Dec 2025 01:22:26 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-easily-export-and-import-docker-volumes/</guid><description>&lt;p&gt;Se você é como eu, prefere rodar &lt;strong&gt;tudo&lt;/strong&gt; em contêineres Docker. Eles são rápidos, isolados e perfeitos para rodar vários apps em uma única VPS.&lt;/p&gt;&#10;&lt;p&gt;Mas o que acontece quando você quer:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Mover um contêiner para um servidor novo?&lt;/li&gt;&#10;&lt;li&gt;Fazer backup de um volume de banco de dados (NextCloud, PhotoPrism, Vaultwarden etc.)?&lt;/li&gt;&#10;&lt;li&gt;Restaurar dados depois de uma pane?&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;O Docker não tem um botão de “exportar volume” — mas existe um &lt;strong&gt;truque superssimples e confiável&lt;/strong&gt; usando um contêiner Ubuntu temporário.&lt;/p&gt;&#10;&lt;p&gt;Vamos lá!&lt;/p&gt;&#10;&lt;h2 id="passo-1-liste-seus-volumes"&gt;Passo 1: Liste seus volumes&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker volume ls&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Exemplo de saída:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;DRIVER VOLUME NAME&#10;local nextcloud_data&#10;local photoprism_storage&#10;local vaultwarden_data&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Escolha o que você quer exportar (por exemplo, nextcloud_data).&lt;/p&gt;&#10;&lt;h2 id="passo-2-exporte-um-volume--backuptargz"&gt;Passo 2: Exporte um volume → backup.tar.gz&#10;&lt;/h2&gt;&lt;p&gt;Rode este &lt;strong&gt;comando de uma linha&lt;/strong&gt; (troque nextcloud_data pelo nome do seu volume):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;docker run --rm -v nextcloud_data:/data -v &amp;#34;$(pwd)&amp;#34;:/backup ubuntu \&#10; tar -czf /backup/nextcloud-data-backup.tar.gz -C /data ./&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;O que ele faz:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Monta o seu volume em /data dentro de um contêiner temporário&lt;/li&gt;&#10;&lt;li&gt;Monta a sua pasta atual em /backup&lt;/li&gt;&#10;&lt;li&gt;Cria um arquivo compactado com o volume inteiro&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Quando terminar, você terá um arquivo como:&#10;nextcloud-data-backup.tar.gz ← pronto para baixar ou mover!&lt;/p&gt;&#10;&lt;p&gt;Dica de mestre: adicione a data para ficar mais claro&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;docker run --rm -v nextcloud_data:/data -v &amp;#34;$(pwd)&amp;#34;:/backup ubuntu \&#10; tar -czf &amp;#34;/backup/nextcloud-data-$(date +%Y-%m-%d).tar.gz&amp;#34; -C /data ./&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-3-importe-no-servidor-novo"&gt;Passo 3: Importe no servidor novo&#10;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;Copie o arquivo backup.tar.gz para o servidor novo (via scp, rsync etc.)&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Depois, &lt;strong&gt;crie o volume vazio&lt;/strong&gt; (importante!):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;docker volume create nextcloud_data&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Rode o comando de importação (a partir da pasta que contém o arquivo de backup):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;docker run --rm -v nextcloud_data:/data -v &amp;#34;$(pwd)&amp;#34;:/backup ubuntu \&#10; tar -xzf /backup/nextcloud-data-2025-04-05.tar.gz -C /data&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pronto! Seu volume foi totalmente restaurado.&lt;/p&gt;&#10;&lt;p&gt;Nunca deixe o Docker criar o volume automaticamente durante a importação — isso pode causar problemas de permissão ou de mistura de dados.&lt;/p&gt;&#10;&lt;h2 id="bônus-usando-volumes-externos-com-o-docker-compose"&gt;Bônus: usando volumes externos com o Docker Compose&#10;&lt;/h2&gt;&lt;p&gt;Se você usa docker-compose.yml, avise o Docker que o volume é &lt;strong&gt;externo&lt;/strong&gt; (já existe):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;services:&#10; nextcloud:&#10; image: nextcloud:latest&#10; volumes:&#10; - nextcloud_data:/var/www/html&#10;&#10;volumes:&#10; nextcloud_data:&#10; external: true&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A indentação importa — use &lt;strong&gt;exatamente dois espaços&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h2 id="casos-de-uso-reais"&gt;Casos de uso reais&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Migrar o NextCloud para uma VPS nova&lt;/li&gt;&#10;&lt;li&gt;Fazer backup do Vaultwarden antes de atualizar&lt;/li&gt;&#10;&lt;li&gt;Mover a biblioteca do PhotoPrism para um servidor maior&lt;/li&gt;&#10;&lt;li&gt;Recuperação de desastres&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Este método é &lt;strong&gt;100% confiável&lt;/strong&gt;, funciona com qualquer volume e não exige nenhuma ferramenta extra.&lt;/p&gt;&#10;&lt;p&gt;Agora você tem uma estratégia de backup de volumes Docker à prova de balas.&lt;/p&gt;&#10;&lt;p&gt;Boa conteinerização! 🐳&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura!&lt;/p&gt;&#10;</description></item><item><title>Como hospedar em casa com facilidade e colocar seus projetos online mesmo atrás de CGNAT</title><link>https://aquasp.blog/pt/how-to-easily-self-host-at-home-and-put-your-projects-online-under-cgnat/</link><pubDate>Tue, 09 Dec 2025 01:13:41 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-easily-self-host-at-home-and-put-your-projects-online-under-cgnat/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Quer rodar serviços pesados em um servidor potente em casa, mesmo com o seu provedor te colocando atrás de CGNAT? Este guia mostra exatamente como colocá-los online — do &lt;strong&gt;jeito clássico e à prova de balas&lt;/strong&gt;, usando túneis SSH reversos.&lt;/p&gt;&#10;&lt;p&gt;Sem Cloudflare Tunnel. Sem Ngrok. Só SSH + systemd.&lt;/p&gt;&#10;&lt;h2 id="as-desvantagens-e-por-que-dá-para-lidar-com-elas"&gt;As desvantagens (e por que dá para lidar com elas)&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Internet de casa não tem a qualidade de um datacenter (quedas acontecem)&lt;/li&gt;&#10;&lt;li&gt;A maioria dos provedores usa CGNAT → não dá para abrir portas do jeito normal&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Solução:&lt;/strong&gt; use uma VPS barata como “ponte” pública. Seu servidor pesado fica em casa. A VPS só encaminha as portas.&lt;/p&gt;&#10;&lt;h2 id="como-funciona--a-mágica-dos-túneis-ssh-reversos--r"&gt;Como funciona – a mágica dos túneis SSH reversos (-R)&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Internet → Cheap VPS (public IP) → SSH reverse tunnel → Your home server (behind CGNAT)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;O seu servidor de casa abre uma conexão SSH de saída até a VPS e diz:&#10;“Tudo o que chegar na sua porta 8096 → mande para o meu Jellyfin local na 8096”&lt;/p&gt;&#10;&lt;p&gt;Nenhuma porta aberta no roteador de casa. Nenhuma exposição.&lt;/p&gt;&#10;&lt;h2 id="configuração-passo-a-passo"&gt;Configuração passo a passo&#10;&lt;/h2&gt;&lt;h3 id="1-no-seu-servidor-de-casa-o-potente"&gt;1. No seu servidor de casa (o potente)&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Create folder for tunnel configs&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /etc/sshtunnels&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Example: expose Jellyfin (port 8096)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nano /etc/sshtunnels/jellyfin.conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Conteúdo do arquivo:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;8096:8096 # remote_port:local_port&#10;443:8443 # optional: HTTPS reverse proxy on VPS → your local 8443&#10;80:8080&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Uma linha por serviço. O primeiro número = porta na &lt;strong&gt;VPS&lt;/strong&gt;, o segundo = porta no &lt;strong&gt;seu servidor de casa&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h3 id="2-gere-uma-chave-ssh-se-você-ainda-não-tiver-uma"&gt;2. Gere uma chave SSH (se você ainda não tiver uma)&#10;&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;ssh-keygen -t ed25519 -C &amp;#34;home-server-tunnel&amp;#34;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Copie a chave pública para a sua VPS:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;ssh-copy-id user@your-vps-ip&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="3-crie-o-script-que-gerencia-os-túneis"&gt;3. Crie o script que gerencia os túneis&#10;&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo nano /usr/local/bin/sshtunnel.sh&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;#!/bin/bash&#10;&#10;# === EDIT THESE ===&#10;REMOTE_USER=&amp;#34;root&amp;#34; # or your VPS user&#10;REMOTE_HOST=&amp;#34;123.45.67.89&amp;#34; # your VPS public IP&#10;SSH_KEY=&amp;#34;/home/youruser/.ssh/id_ed25519&amp;#34;&#10;SSH_PORT=&amp;#34;22&amp;#34; # change if you use a non-standard port&#10;# ==================&#10;&#10;INSTANCE=&amp;#34;$1&amp;#34;&#10;CONFIG_FILE=&amp;#34;/etc/sshtunnels/${INSTANCE}.conf&amp;#34;&#10;&#10;if [[ ! -f &amp;#34;$CONFIG_FILE&amp;#34; ]]; then&#10; echo &amp;#34;Error: Config file $CONFIG_FILE not found!&amp;#34;&#10; exit 1&#10;fi&#10;&#10;# Build -R arguments&#10;FORWARD_OPTS=&amp;#34;&amp;#34;&#10;while IFS=: read -r remote_port local_port; do&#10; [[ -z &amp;#34;$remote_port&amp;#34; || &amp;#34;$remote_port&amp;#34; =~ ^# ]] &amp;amp;&amp;amp; continue&#10; # Clean any old process using the remote port&#10; ssh -p &amp;#34;$SSH_PORT&amp;#34; &amp;#34;$REMOTE_USER@$REMOTE_HOST&amp;#34; \&#10; &amp;#34;lsof -i :$remote_port -t | xargs -r kill -9&amp;#34; 2&amp;gt;/dev/null&#10; FORWARD_OPTS=&amp;#34;$FORWARD_OPTS -R $remote_port:localhost:$local_port&amp;#34;&#10;done &amp;lt; &amp;#34;$CONFIG_FILE&amp;#34;&#10;&#10;echo &amp;#34;Starting tunnel $INSTANCE → $REMOTE_HOST ($FORWARD_OPTS)&amp;#34;&#10;&#10;exec ssh -o StrictHostKeyChecking=no \&#10; -o ServerAliveInterval=30 \&#10; -o ServerAliveCountThreshold=3 \&#10; -o ExitOnForwardFailure=yes \&#10; -o GatewayPorts=yes \&#10; -N -T \&#10; -i &amp;#34;$SSH_KEY&amp;#34; \&#10; -p &amp;#34;$SSH_PORT&amp;#34; \&#10; $FORWARD_OPTS \&#10; &amp;#34;$REMOTE_USER@$REMOTE_HOST&amp;#34;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Torne-o executável:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo chmod +x /usr/local/bin/sshtunnel.sh&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="4-crie-um-serviço-do-systemd-início-e-reconexão-automáticos"&gt;4. Crie um serviço do systemd (início e reconexão automáticos)&#10;&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo nano /etc/systemd/system/sshtunnel@.service&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;[Unit]&#10;Description=SSH Reverse Tunnel for %i&#10;After=network-online.target&#10;Wants=network-online.target&#10;&#10;[Service]&#10;User=youruser # ← change to your home user (not root!)&#10;Group=youruser&#10;ExecStart=/usr/local/bin/sshtunnel.sh %i&#10;Restart=always&#10;RestartSec=10&#10;&#10;[Install]&#10;WantedBy=multi-user.target&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Recarregue e ative:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo systemctl daemon-reload&#10;&#10;# Start a tunnel (example: jellyfin)&#10;sudo systemctl enable --now sshtunnel@jellyfin.service&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Confira o status:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo systemctl status sshtunnel@jellyfin.service&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="5-no-lado-da-vps-opcional-mas-recomendado"&gt;5. No lado da VPS (opcional, mas recomendado)&#10;&lt;/h3&gt;&lt;p&gt;Instale um servidor web pequeno ou o Caddy/nginx para cuidar do TLS e fazer proxy para as portas encaminhadas.&lt;/p&gt;&#10;&lt;p&gt;Exemplo com o Caddy (HTTPS automático):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# On the VPS&#10;apt install caddy&#10;&#10;# /etc/caddy/Caddyfile&#10;jellyfin.yourdomain.com {&#10; reverse_proxy localhost:8096&#10;}&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora jellyfin.yourdomain.com → o seu Jellyfin de casa, totalmente criptografado.&lt;/p&gt;&#10;&lt;p&gt;Tudo rodando no meu servidor parrudo de casa, atrás de CGNAT.&lt;/p&gt;&#10;&lt;h2 id="vantagens-desta-configuração"&gt;Vantagens desta configuração&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Funciona atrás de qualquer CGNAT / bloqueio do provedor&lt;/li&gt;&#10;&lt;li&gt;Nenhuma dependência de terceiros (sem Cloudflare, sem Ngrok)&lt;/li&gt;&#10;&lt;li&gt;Criptografia completa possível&lt;/li&gt;&#10;&lt;li&gt;Sobrevive a reinicializações (systemd + Restart=always)&lt;/li&gt;&#10;&lt;li&gt;Custa quase nada&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="palavras-finais"&gt;Palavras finais&#10;&lt;/h2&gt;&lt;p&gt;Este é o jeito realmente bacana que encontrei para hospedar serviços pesados em casa em 2025.&lt;/p&gt;&#10;&lt;p&gt;O seu hardware potente fica em casa. A sua VPS de US$ 1/mês é só uma guarda de trânsito.&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura — agora vá montar o seu home lab imbatível!&lt;/p&gt;&#10;</description></item><item><title>Como fazer backup automático do seu blog Ghost auto-hospedado</title><link>https://aquasp.blog/pt/how-to-automatically-backup-your-self-hosted-ghost-blog/</link><pubDate>Tue, 09 Dec 2025 01:05:55 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-automatically-backup-your-self-hosted-ghost-blog/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;O Ghost é uma plataforma de blog &lt;strong&gt;incrivelmente rápida e elegante&lt;/strong&gt;. Mas, ao contrário do WordPress, ele não tem plugins de backup com um clique.&lt;/p&gt;&#10;&lt;p&gt;Isso muda hoje.&lt;/p&gt;&#10;&lt;p&gt;Neste guia, você vai configurar um &lt;strong&gt;sistema de backup diário totalmente automatizado&lt;/strong&gt; que:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Faz o dump do seu banco de dados MySQL&lt;/li&gt;&#10;&lt;li&gt;Faz backup de todos os temas, imagens e conteúdos&lt;/li&gt;&#10;&lt;li&gt;Compacta tudo em um único &lt;code&gt;.zip&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Envia o arquivo com segurança para o seu armazenamento na nuvem (pCloud, NextCloud, Google Drive, Dropbox etc.)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Tudo usando &lt;strong&gt;ferramentas gratuitas&lt;/strong&gt;: &lt;code&gt;rclone&lt;/code&gt; + um script bash simples + cron.&lt;/p&gt;&#10;&lt;p&gt;Vamos começar.&lt;/p&gt;&#10;&lt;h2 id="passo-1-instale-o-rclone"&gt;Passo 1: Instale o Rclone&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y rclone&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;O Rclone é o canivete suíço do armazenamento na nuvem — ele suporta &lt;strong&gt;mais de 70 provedores&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Lista completa: &lt;a class="link" href="https://rclone.org/overview/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://rclone.org/overview/&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="passo-2-configure-o-rclone-conecte-seu-armazenamento-na-nuvem"&gt;Passo 2: Configure o Rclone (conecte seu armazenamento na nuvem)&#10;&lt;/h2&gt;&lt;p&gt;Rode:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;rclone config&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Siga as perguntas:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;n → novo remote&lt;/li&gt;&#10;&lt;li&gt;Dê um nome como ghost-backup ou pcloud&lt;/li&gt;&#10;&lt;li&gt;Escolha seu provedor (por exemplo, webdav para NextCloud, pcloud, google drive etc.)&lt;/li&gt;&#10;&lt;li&gt;Informe suas credenciais/URL quando for pedido&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Teste se funciona:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;rclone ls ghost-backup:&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Você deve ver os arquivos do seu remote (ou uma pasta vazia, se for novo).&lt;/p&gt;&#10;&lt;p&gt;Digite q para sair.&lt;/p&gt;&#10;&lt;h2 id="passo-3-pegue-as-credenciais-do-banco-de-dados-do-ghost"&gt;Passo 3: Pegue as credenciais do banco de dados do Ghost&#10;&lt;/h2&gt;&lt;p&gt;Entre com o usuário do Ghost (não o root):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;su - yourghostuser&#10;cd /var/www/ghost # or wherever you installed Ghost&#10;cat config.production.json&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Procure a seção do banco de dados. Você verá algo assim:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;#34;database&amp;#34;: {&#10; &amp;#34;client&amp;#34;: &amp;#34;mysql&amp;#34;,&#10; &amp;#34;connection&amp;#34;: {&#10; &amp;#34;host&amp;#34;: &amp;#34;localhost&amp;#34;,&#10; &amp;#34;user&amp;#34;: &amp;#34;ghost_db_user&amp;#34;,&#10; &amp;#34;password&amp;#34;: &amp;#34;yoursecretpassword&amp;#34;,&#10; &amp;#34;database&amp;#34;: &amp;#34;ghost_prod&amp;#34;&#10; }&#10;}&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Anote&lt;/strong&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Nome do banco de dados (ghost_prod)&lt;/li&gt;&#10;&lt;li&gt;Usuário (ghost_db_user)&lt;/li&gt;&#10;&lt;li&gt;Senha&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="passo-4-crie-o-script-de-backup"&gt;Passo 4: Crie o script de backup&#10;&lt;/h2&gt;&lt;p&gt;Crie o script como root:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;nano /root/backup-ghost.sh&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cole isto (depois edite as variáveis abaixo):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;#!/bin/bash&#10;&#10;# === EDIT THESE VALUES ===&#10;GHOST_USER=&amp;#34;yourghostuser&amp;#34; # e.g. ghost&#10;GHOST_PATH=&amp;#34;/var/www/ghost&amp;#34; # path to your Ghost install&#10;DB_NAME=&amp;#34;ghost_prod&amp;#34; # from config.production.json&#10;DB_USER=&amp;#34;ghost_db_user&amp;#34; # from config.production.json&#10;DB_PASS=&amp;#34;yoursecretpassword&amp;#34; # from config.production.json&#10;BACKUP_NAME=&amp;#34;theselfhostingart-blog&amp;#34; # name for your backup zip&#10;RCLONE_REMOTE=&amp;#34;ghost-backup&amp;#34; # name you gave in rclone config&#10;RCLONE_PATH=&amp;#34;/&amp;#34; # folder in your cloud (use / for root)&#10;# =========================&#10;&#10;DATE=$(date +&amp;#39;%Y-%m-%d_%H-%M&amp;#39;)&#10;BACKUP_DIR=&amp;#34;/home/$GHOST_USER/backups/$DATE&amp;#34;&#10;ZIP_FILE=&amp;#34;$BACKUP_DIR/$BACKUP_NAME-$DATE.zip&amp;#34;&#10;&#10;echo &amp;#34;Starting Ghost backup: $DATE&amp;#34;&#10;&#10;# Create backup directory&#10;mkdir -p &amp;#34;$BACKUP_DIR&amp;#34;&#10;&#10;# Backup database&#10;echo &amp;#34;Backing up database...&amp;#34;&#10;mysqldump -u &amp;#34;$DB_USER&amp;#34; -p&amp;#34;$DB_PASS&amp;#34; --add-drop-table &amp;#34;$DB_NAME&amp;#34; | gzip &amp;gt; &amp;#34;$BACKUP_DIR/db.sql.gz&amp;#34;&#10;&#10;# Backup content folder (themes, images, etc.)&#10;echo &amp;#34;Backing up content folder...&amp;#34;&#10;rsync -av --exclude=&amp;#39;logs&amp;#39; --exclude=&amp;#39;cache&amp;#39; &amp;#34;$GHOST_PATH/content/&amp;#34; &amp;#34;$BACKUP_DIR/content/&amp;#34;&#10;&#10;# Compress everything&#10;echo &amp;#34;Compressing backup...&amp;#34;&#10;zip -r &amp;#34;$ZIP_FILE&amp;#34; &amp;#34;$BACKUP_DIR/content&amp;#34; &amp;#34;$BACKUP_DIR/db.sql.gz&amp;#34; &amp;gt; /dev/null&#10;&#10;# Upload to cloud&#10;echo &amp;#34;Uploading to cloud storage...&amp;#34;&#10;rclone copy &amp;#34;$ZIP_FILE&amp;#34; &amp;#34;$RCLONE_REMOTE:$RCLONE_PATH&amp;#34;&#10;&#10;# Cleanup: remove local backups older than 1 day (optional but recommended)&#10;echo &amp;#34;Cleaning up old local backups...&amp;#34;&#10;find /home/$GHOST_USER/backups -type d -mtime +1 -exec rm -rf {} +&#10;&#10;echo &amp;#34;Backup complete: $ZIP_FILE → $RCLONE_REMOTE:$RCLONE_PATH&amp;#34;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Torne-o executável:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;chmod +x /root/backup-ghost.sh&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Teste manualmente primeiro&lt;/strong&gt;:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;/root/backup-ghost.sh&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Confira seu armazenamento na nuvem — você deve ver um arquivo como:&#10;theselfhostingart-blog-2025-04-05_03-22.zip&lt;/p&gt;&#10;&lt;h2 id="passo-5-automatize-com-o-cron-backups-diários"&gt;Passo 5: Automatize com o cron (backups diários)&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;crontab -e&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adicione esta linha para um &lt;strong&gt;backup diário às 2h da manhã&lt;/strong&gt;:&lt;/p&gt;&#10;&lt;p&gt;cron&lt;code&gt;0 2 * * * /usr/bin/bash /root/backup-ghost.sh &amp;gt;&amp;gt; /var/log/ghost-backup.log 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Salve e saia.&lt;/p&gt;&#10;&lt;p&gt;Agora o seu blog Ghost tem &lt;strong&gt;backup automático todos os dias&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h2 id="o-que-entra-no-backup"&gt;O que entra no backup?&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Banco de dados completo (posts, usuários, configurações)&lt;/li&gt;&#10;&lt;li&gt;Todas as imagens enviadas&lt;/li&gt;&#10;&lt;li&gt;Temas personalizados&lt;/li&gt;&#10;&lt;li&gt;Tudo o que é preciso para restaurar ou migrar&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Você pode até mandar esse .zip para o suporte do Ghost(Pro) — eles conseguem importá-lo diretamente.&lt;/p&gt;&#10;&lt;h2 id="bônus-restaure-em-caso-de-desastre"&gt;Bônus: restaure em caso de desastre&#10;&lt;/h2&gt;&lt;p&gt;Para restaurar:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Instale um Ghost novo&lt;/li&gt;&#10;&lt;li&gt;Descompacte o backup&lt;/li&gt;&#10;&lt;li&gt;Importe o banco: gunzip &amp;lt; db.sql.gz | mysql -u user -p dbname&lt;/li&gt;&#10;&lt;li&gt;Substitua a pasta content/&lt;/li&gt;&#10;&lt;li&gt;Rode ghost restart&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="créditos-e-agradecimentos"&gt;Créditos e agradecimentos&#10;&lt;/h2&gt;&lt;p&gt;Este método foi inspirado e aprimorado a partir deste excelente post:&#10;&lt;a class="link" href="https://dev.to/kvizdos/how-to-automatically-backup-ghost-blogs-4he1?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;How to Automatically Backup Ghost Blogs – Kenton Vizdos&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Obrigado, Kenton!&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;Agora o seu blog auto-hospedado dorme mais tranquilo à noite. 😴💾&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura!&lt;/p&gt;&#10;</description></item><item><title>Como instalar o NextCloud com OpenLiteSpeed (stack LOMP)</title><link>https://aquasp.blog/pt/how-to-install-nextcloud-with-openlitespeed-lomp-stack/</link><pubDate>Tue, 09 Dec 2025 00:59:45 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-install-nextcloud-with-openlitespeed-lomp-stack/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Hoje vou mostrar como montar o que eu sinceramente acredito ser a &lt;strong&gt;stack de NextCloud mais rápida&lt;/strong&gt; disponível em 2025:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;OpenLiteSpeed&lt;/strong&gt; – o servidor web mais rápido, com cache embutido&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;LSPHP 8.1/8.2&lt;/strong&gt; – a implementação ultrarrápida de PHP da LiteSpeed&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Redis + APCu&lt;/strong&gt; – para cache e travamento (locking) ultrarrápidos&lt;/li&gt;&#10;&lt;li&gt;Roda totalmente &lt;strong&gt;sem root&lt;/strong&gt;, com o seu próprio usuário&lt;/li&gt;&#10;&lt;li&gt;Protegido com cabeçalhos de segurança adequados, HSTS e pasta de dados isolada&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Mesmo que o NextCloud seja comprometido, o invasor ainda não consegue mexer no resto do seu servidor.&lt;/p&gt;&#10;&lt;p&gt;Vamos lá!&lt;/p&gt;&#10;&lt;h2 id="passo-1-proteja-sua-vps-primeiro"&gt;Passo 1: Proteja sua VPS primeiro&#10;&lt;/h2&gt;&lt;p&gt;Antes de tudo, proteja o seu servidor. Siga o meu guia completo aqui:&#10;&lt;a class="link" href="https://aquasp.blog/pt/how-to-make-your-vps-secure/" &gt;Como deixar sua VPS segura&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="passo-2-instale-o-openlitespeed-o-lsphp-o-redis-e-as-ferramentas"&gt;Passo 2: Instale o OpenLiteSpeed, o LSPHP, o Redis e as ferramentas&#10;&lt;/h2&gt;&lt;p&gt;Rode como root:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Update system&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt upgrade -y&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Add OpenLiteSpeed repository&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget -O - https://repo.litespeed.sh | bash&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Install essentials&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install -y curl gnupg2 imagemagick ffmpeg redis openlitespeed lsphp81* lsphp82* zip unzip mariadb-server mariadb-client&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;Observação: no Ubuntu 22.04+, o pacote do ImageMagick pode ser libmagickwand-dev + imagemagick. O comando acima funciona na maioria das versões recentes do Debian/Ubuntu.&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;Ative e reinicie o Redis:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl enable --now redis-server&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-3-crie-um-usuário-de-sistema-dedicado-para-o-nextcloud"&gt;Passo 3: Crie um usuário de sistema dedicado para o NextCloud&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;adduser --shell /bin/bash files&#10;usermod -aG redis files # Allow access to Redis socket&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-4-baixe-e-extraia-o-nextcloud-como-o-usuário-files"&gt;Passo 4: Baixe e extraia o NextCloud como o usuário &amp;ldquo;files&amp;rdquo;&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;su - files&#10;mkdir -p ~/public_html&#10;cd ~/public_html&#10;&#10;wget https://download.nextcloud.com/server/releases/latest.zip&#10;unzip latest.zip&#10;rsync -av nextcloud/ ./&#10;rm -rf nextcloud latest.zip .htaccess .user.ini&#10;exit&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-5-configure-o-painel-web-de-administração-do-openlitespeed-porta-7080"&gt;Passo 5: Configure o painel web de administração do OpenLiteSpeed (porta 7080)&#10;&lt;/h2&gt;&lt;p&gt;Defina uma senha de administrador:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;/usr/local/lsws/admin/misc/admpass.sh&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora acesse: https://your-vps-ip:7080 e entre.&lt;/p&gt;&#10;&lt;h3 id="configuração-do-virtual-host"&gt;Configuração do Virtual Host&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;Apague o virtual host padrão &amp;ldquo;Example&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;Adicione um novo Virtual Host:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Virtual Host Name: yourdomain.com&lt;/li&gt;&#10;&lt;li&gt;Virtual Host Root: /home/files/&lt;/li&gt;&#10;&lt;li&gt;Config File: $SERVER_ROOT/conf/vhosts/$VH_NAME/vhconf.conf&lt;/li&gt;&#10;&lt;li&gt;Document Root: $VH_ROOT/public_html&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol start="3"&gt;&#10;&lt;li&gt;Script Handler → Add:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Suffix: php&lt;/li&gt;&#10;&lt;li&gt;Handler Type: LiteSpeed LVE&lt;/li&gt;&#10;&lt;li&gt;Handler: lsphp81 (ou lsphp82, se preferir o PHP 8.2)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol start="4"&gt;&#10;&lt;li&gt;Rewrite Rules (forçar HTTPS):&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;RewriteEngine On&#10;RewriteCond %{HTTPS} !=on&#10;RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;&#10;&lt;li&gt;Cabeçalhos de segurança (Context → Static → adicione um novo context /):&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Strict-Transport-Security &amp;#34;max-age=63072000; includeSubDomains; preload&amp;#34;&#10;Content-Security-Policy &amp;#34;upgrade-insecure-requests&amp;#34;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;&#10;&lt;li&gt;External App → LSPHP → Edit:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Run as User/Group: files&lt;/li&gt;&#10;&lt;li&gt;PHP_LSAPI_CHILDREN = 100&lt;/li&gt;&#10;&lt;li&gt;LSAPI_AVOID_FORK = 0&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol start="2"&gt;&#10;&lt;li&gt;Listeners:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Apague os listeners padrão&lt;/li&gt;&#10;&lt;li&gt;Adicione HTTP → porta 80&lt;/li&gt;&#10;&lt;li&gt;Adicione HTTPS → porta 443 (Secure = Yes)&lt;/li&gt;&#10;&lt;li&gt;Associe o seu domínio aos dois listeners&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Reinício suave (graceful restart) → OpenLiteSpeed → Graceful Restart&lt;/p&gt;&#10;&lt;h2 id="passo-6-emita-o-ssl-do-lets-encrypt"&gt;Passo 6: Emita o SSL do Let’s Encrypt&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;apt install -y certbot&#10;certbot certonly --webroot -w /home/files/public_html -d yourdomain.com&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anote os caminhos (você vai precisar deles):&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Fullchain: /etc/letsencrypt/live/yourdomain.com/fullchain.pem&lt;/li&gt;&#10;&lt;li&gt;Privkey: /etc/letsencrypt/live/yourdomain.com/privkey.pem&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Adicione-os em:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Virtual Host → aba SSL&lt;/li&gt;&#10;&lt;li&gt;Listener HTTPS → aba SSL&lt;/li&gt;&#10;&lt;li&gt;Chained Certificate = Yes&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Faça o graceful restart de novo.&lt;/p&gt;&#10;&lt;h2 id="passo-7-renovação-automática-do-ssl"&gt;Passo 7: Renovação automática do SSL&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;crontab -e&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adicione:&lt;/p&gt;&#10;&lt;p&gt;cron&lt;code&gt;0 3 * * * /usr/bin/certbot renew --quiet&lt;/code&gt;&lt;/p&gt;&#10;&lt;h2 id="passo-8-instale-e-proteja-o-mariadbmysql"&gt;Passo 8: Instale e proteja o MariaDB/MySQL&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;mysql_secure_installation&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Depois, crie o banco de dados e o usuário:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;mysql -u root -p&#10;CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;&#10;CREATE USER &amp;#39;ncuser&amp;#39;@&amp;#39;localhost&amp;#39; IDENTIFIED BY &amp;#39;strong-password-here&amp;#39;;&#10;GRANT ALL PRIVILEGES ON nextcloud.* TO &amp;#39;ncuser&amp;#39;@&amp;#39;localhost&amp;#39;;&#10;FLUSH PRIVILEGES;&#10;EXIT;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-9-otimize-o-php-e-ative-o-opcache--apcu"&gt;Passo 9: Otimize o PHP e ative o OPCache + APCu&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# Edit the correct php.ini (adjust path if using lsphp82)&#10;sed -i &amp;#39;/usr/local/lsws/lsphp81/etc/php/8.1/litespeed/php.ini&amp;#39; \&#10; -e &amp;#39;s/memory_limit = .*/memory_limit = 1024M/&amp;#39; \&#10; -e &amp;#39;s/upload_max_filesize = .*/upload_max_filesize = 10G/&amp;#39; \&#10; -e &amp;#39;s/post_max_size = .*/post_max_size = 10G/&amp;#39; \&#10; -e &amp;#39;s/max_execution_time = .*/max_execution_time = 3600/&amp;#39; \&#10; -e &amp;#39;s/opcache.enable=.*/opcache.enable=1/&amp;#39; \&#10; -e &amp;#39;s/;opcache.memory_consumption=.*/opcache.memory_consumption=512/&amp;#39; \&#10; -e &amp;#39;s/;opcache.interned_strings_buffer=.*/opcache.interned_strings_buffer=64/&amp;#39; \&#10; -e &amp;#39;s/;opcache.max_accelerated_files=.*/opcache.max_accelerated_files=20000/&amp;#39;&#10;&#10;# Enable APCu CLI&#10;echo &amp;#34;apc.enable_cli = 1&amp;#34; &amp;gt;&amp;gt; /usr/local/lsws/lsphp81/etc/php/8.1/litespeed/php.ini&#10;&#10;pkill -f lsphp&#10;systemctl restart lsws&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-10-configure-o-redis-como-socket-unix"&gt;Passo 10: Configure o Redis como socket Unix&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;sed -i &amp;#39;s/port 6379/port 0/&amp;#39; /etc/redis/redis.conf&#10;sed -i &amp;#39;s|# unixsocket /var/run/redis/redis-server.sock|unixsocket /var/run/redis/redis-server.sock|&amp;#39; /etc/redis/redis.conf&#10;sed -i &amp;#39;s/# unixsocketperm 700/unixsocketperm 770/&amp;#39; /etc/redis/redis.conf&#10;sed -i &amp;#39;s/# maxmemory .*/maxmemory 1gb/&amp;#39; /etc/redis/redis.conf&#10;&#10;systemctl restart redis-server&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-11-configuração-final-do-nextcloud"&gt;Passo 11: Configuração final do NextCloud&#10;&lt;/h2&gt;&lt;h3 id="mova-a-pasta-de-dados-para-fora-da-raiz-web-essencial"&gt;Mova a pasta de dados para fora da raiz web (essencial!)&#10;&lt;/h3&gt;&lt;p&gt;Durante a instalação, defina o diretório de dados como: /home/files/data&lt;/p&gt;&#10;&lt;h3 id="edite-o-configphp-depois-do-primeiro-login"&gt;Edite o config.php (depois do primeiro login)&#10;&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;su - files&#10;nano /home/files/public_html/config/config.php&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adicione &lt;strong&gt;logo depois&lt;/strong&gt; de &amp;lsquo;installed&amp;rsquo; =&amp;gt; true,:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;#39;memcache.local&amp;#39; =&amp;gt; &amp;#39;\\OC\\Memcache\\APCu&amp;#39;,&#10; &amp;#39;memcache.distributed&amp;#39; =&amp;gt; &amp;#39;\\OC\\Memcache\\Redis&amp;#39;,&#10; &amp;#39;memcache.locking&amp;#39; =&amp;gt; &amp;#39;\\OC\\Memcache\\Redis&amp;#39;,&#10; &amp;#39;redis&amp;#39; =&amp;gt; [&#10; &amp;#39;host&amp;#39; =&amp;gt; &amp;#39;/var/run/redis/redis-server.sock&amp;#39;,&#10; &amp;#39;port&amp;#39; =&amp;gt; 0,&#10; ],&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="configure-as-tarefas-em-segundo-plano-cron"&gt;Configure as tarefas em segundo plano (cron)&#10;&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;su - files&#10;crontab -e&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adicione:&lt;/p&gt;&#10;&lt;p&gt;cron&lt;code&gt;*/5 * * * * /usr/local/lsws/lsphp81/bin/php -f /home/files/public_html/cron.php&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Depois, no NextCloud, vá em Administração → Configurações básicas → Tarefas em segundo plano → selecione &lt;strong&gt;Cron&lt;/strong&gt; (recomendado).&lt;/p&gt;&#10;&lt;h2 id="bônus-deixe-o-occ-fácil-de-usar-para-sempre"&gt;Bônus: deixe o occ fácil de usar para sempre&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;su - files&#10;echo &amp;#34;alias occ=&amp;#39;/usr/local/lsws/lsphp81/bin/php /home/files/public_html/occ&amp;#39;&amp;#34; &amp;gt;&amp;gt; ~/.bashrc&#10;source ~/.bashrc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora, de qualquer lugar dentro de ~/public_html:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;cd ~/public_html&#10;occ status&#10;occ maintenance:repair&#10;occ db:add-missing-indices&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="pronto"&gt;Pronto!&#10;&lt;/h2&gt;&lt;p&gt;Agora você tem:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A stack de NextCloud &lt;strong&gt;mais rápida&lt;/strong&gt; (OpenLiteSpeed + Redis + APCu)&lt;/li&gt;&#10;&lt;li&gt;Totalmente &lt;strong&gt;sem root&lt;/strong&gt; e isolada&lt;/li&gt;&#10;&lt;li&gt;Renovação automática do SSL&lt;/li&gt;&#10;&lt;li&gt;Cabeçalhos de segurança reforçados&lt;/li&gt;&#10;&lt;li&gt;Proteção adequada da pasta de dados&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Aproveite a sua nuvem privada e ultrarrápida!&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura! 🚀&lt;/p&gt;&#10;</description></item><item><title>Como deixar sua VPS mais segura contra exclusões acidentais</title><link>https://aquasp.blog/pt/how-to-make-your-vps-safer-against-accidental-deletions/</link><pubDate>Tue, 09 Dec 2025 00:31:57 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-make-your-vps-safer-against-accidental-deletions/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Você já apagou um arquivo ou uma pasta sem querer em uma VPS? Essa sensação é horrível. Às vezes você está trabalhando rápido e apaga um arquivo/pasta muito importante. Isso já aconteceu comigo. Hoje quero compartilhar com vocês uma ferramenta incrível: o &lt;code&gt;trash-cli&lt;/code&gt; . Ele adiciona uma lixeira na linha de comando para evitar esses erros humanos.&lt;/p&gt;&#10;&lt;h2 id="instalando-o-trash-cli"&gt;Instalando o trash-cli&#10;&lt;/h2&gt;&lt;p&gt;O &lt;code&gt;trash-cli&lt;/code&gt; é uma ferramenta de linha de comando leve, disponível nos repositórios do Debian, o que a torna ideal para VPSs com poucos recursos.&lt;/p&gt;&#10;&lt;h3 id="passos-da-instalação"&gt;Passos da instalação&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;Atualize a sua lista de pacotes:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo apt update&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;&#10;&lt;li&gt;Instale o &lt;code&gt;trash-cli&lt;/code&gt;:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo apt install trash-cli&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;&#10;&lt;li&gt;Confira a instalação:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;trash --version&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Se tudo foi instalado corretamente, você verá as informações da versão.&lt;/p&gt;&#10;&lt;p&gt;O processo é rápido e quase não pesa na sua VPS.&lt;/p&gt;&#10;&lt;h2 id="usando-o-trash-cli-para-apagar-com-mais-segurança"&gt;Usando o trash-cli para apagar com mais segurança&#10;&lt;/h2&gt;&lt;p&gt;Depois de instalado, o &lt;code&gt;trash-cli&lt;/code&gt; oferece comandos para gerenciar arquivos com segurança. Ele move os itens para &lt;code&gt;~/.local/share/Trash/&lt;/code&gt; em vez de apagá-los.&lt;/p&gt;&#10;&lt;h3 id="comandos-básicos"&gt;Comandos básicos&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Mandar um arquivo ou diretório para a lixeira&lt;/strong&gt;: &lt;code&gt;trash file.txt&lt;/code&gt; ou &lt;code&gt;trash directory&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Listar os itens na lixeira&lt;/strong&gt;: &lt;code&gt;trash-list&lt;/code&gt; (mostra os arquivos com as datas de exclusão).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Restaurar itens&lt;/strong&gt;: &lt;code&gt;trash-restore&lt;/code&gt; (menu interativo para escolher e recuperar arquivos).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Esvaziar a lixeira&lt;/strong&gt;: &lt;code&gt;trash-empty&lt;/code&gt; (apaga permanentemente todos os itens da lixeira).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Esvaziar itens antigos&lt;/strong&gt;: &lt;code&gt;trash-empty 30&lt;/code&gt; (apaga itens com mais de 30 dias).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Exemplo de fluxo de trabalho:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;trash important_file.txt # Move to trash&#10;trash-list # Check what&amp;#39;s there&#10;trash-restore # Recover if needed&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Isso substitui o uso arriscado do &lt;code&gt;rm&lt;/code&gt; no dia a dia.&lt;/p&gt;&#10;&lt;h2 id="criando-um-alias-do-rm-para-usar-o-trash-cli"&gt;Criando um alias do rm para usar o trash-cli&#10;&lt;/h2&gt;&lt;p&gt;Para deixar o &lt;code&gt;rm&lt;/code&gt; mais seguro por padrão, crie um alias dele para o &lt;code&gt;trash&lt;/code&gt; na configuração do seu shell. Assim, a maioria das exclusões vai para a lixeira.&lt;/p&gt;&#10;&lt;h3 id="configurando-o-alias"&gt;Configurando o alias&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;Edite o seu arquivo &lt;code&gt;~/.bashrc&lt;/code&gt;:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;nano ~/.bashrc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;&#10;&lt;li&gt;Adicione esta linha no final:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;alias rm=&amp;#39;trash&amp;#39;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Salve e saia (Ctrl+X, Y, Enter).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Recarregue a configuração:&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;source ~/.bashrc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora, &lt;code&gt;rm file.txt&lt;/code&gt; vai usar o &lt;code&gt;trash&lt;/code&gt; em vez de apagar permanentemente.&lt;/p&gt;&#10;&lt;h2 id="automatizando-o-esvaziamento-da-lixeira-com-o-cron"&gt;Automatizando o esvaziamento da lixeira com o cron&#10;&lt;/h2&gt;&lt;p&gt;Para a lixeira não acumular indefinidamente, automatize o esvaziamento com uma tarefa no cron.&lt;/p&gt;&#10;&lt;h3 id="configurando-o-esvaziamento-semanal"&gt;Configurando o esvaziamento semanal&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;Edite o seu crontab:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;crontab -e&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;&#10;&lt;li&gt;Adicione esta linha para a exclusão semanal (por exemplo, todo domingo às 2h da manhã):&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;0 2 * * 0 /usr/bin/trash-empty&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;0 2 * * 0&lt;/code&gt;: domingo às 2h da manhã.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;/usr/bin/trash-empty&lt;/code&gt;: limpa toda a lixeira.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol start="3"&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Salve e saia.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Confira:&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;crontab -l&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ajuste o agendamento como precisar (por exemplo, troque &lt;code&gt;0&lt;/code&gt; por &lt;code&gt;1-6&lt;/code&gt; para os dias de semana). Para esvaziar só uma parte, use &lt;code&gt;trash-empty 30&lt;/code&gt; para apagar os itens com mais de 30 dias.&lt;/p&gt;&#10;&lt;h2 id="conclusão"&gt;Conclusão&#10;&lt;/h2&gt;&lt;p&gt;Instalando o &lt;code&gt;trash-cli&lt;/code&gt;, criando um alias do &lt;code&gt;rm&lt;/code&gt; para o &lt;code&gt;trash&lt;/code&gt; e configurando o esvaziamento automático, você deixa sua VPS muito mais segura contra exclusões acidentais. Essa abordagem adiciona uma camada recuperável sem sacrificar o desempenho. Lembre-se de combiná-la com backups regulares e cuidado ao usar comandos. Se você é novo na administração de VPS, comece aos poucos e teste bem. Para configurações mais avançadas, explore a integração com ferramentas de monitoramento. Fique seguro por aí!&lt;/p&gt;&#10;</description></item><item><title>Como deixar sua VPS segura</title><link>https://aquasp.blog/pt/how-to-make-your-vps-secure/</link><pubDate>Tue, 09 Dec 2025 00:30:29 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-make-your-vps-secure/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Se você acabou de comprar uma VPS e está começando a hospedar seus próprios serviços, esta é uma das &lt;strong&gt;melhorias de segurança mais importantes&lt;/strong&gt; que você pode fazer.&lt;/p&gt;&#10;&lt;p&gt;Ao trocar para autenticação por chave SSH e desativar o login por senha, seu servidor fica praticamente imune a ataques de força bruta — mesmo que alguém descubra sua senha ou que você ainda esteja usando a porta padrão 22.&lt;/p&gt;&#10;&lt;h2 id="passo-1-gere-um-par-de-chaves-ssh-na-sua-máquina-local"&gt;Passo 1: Gere um par de chaves SSH na sua máquina local&#10;&lt;/h2&gt;&lt;h3 id="linux-e-macos"&gt;Linux e macOS&#10;&lt;/h3&gt;&lt;p&gt;Abra um terminal e rode:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh-keygen -t rsa -b &lt;span style="color:#ae81ff"&gt;4096&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ou (formato mais novo, recomendado):&lt;/p&gt;&#10;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;ssh-keygen -t ed25519&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Aperte Enter para aceitar o local padrão do arquivo e &lt;strong&gt;deixe a senha da chave (passphrase) em branco&lt;/strong&gt; (é só apertar Enter duas vezes).&lt;/p&gt;&#10;&lt;p&gt;Suas chaves serão salvas como:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Chave privada: ~/.ssh/id_rsa ou ~/.ssh/id_ed25519&lt;/li&gt;&#10;&lt;li&gt;Chave pública: ~/.ssh/id_rsa.pub ou ~/.ssh/id_ed25519.pub&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Nunca compartilhe a chave privada!&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h3 id="windows-powershell"&gt;Windows (PowerShell)&#10;&lt;/h3&gt;&lt;p&gt;Abra o PowerShell e rode:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;ssh-keygen.exe -t ed25519&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(ou -t rsa -b 4096 se o ed25519 não for suportado)&lt;/p&gt;&#10;&lt;p&gt;Aperte Enter em todas as perguntas (sem passphrase). As chaves serão criadas em C:\Users\YourUser.ssh\&lt;/p&gt;&#10;&lt;h2 id="passo-2-copie-sua-chave-pública-para-a-vps"&gt;Passo 2: Copie sua chave pública para a VPS&#10;&lt;/h2&gt;&lt;h3 id="linux-e-macos-método-mais-fácil"&gt;Linux e macOS (método mais fácil)&#10;&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;ssh-copy-id user@your-vps-ip&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Troque user e your-vps-ip pelo seu nome de usuário e pelo IP do servidor.&lt;/p&gt;&#10;&lt;h3 id="windows"&gt;Windows&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;Cole sua chave pública (é uma linha longa que começa com ssh-ed25519 ou ssh-rsa) → salve com &lt;strong&gt;Ctrl+O → Enter → Ctrl+X&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Teste: abra um terminal/PowerShell &lt;strong&gt;novo&lt;/strong&gt; e tente entrar. Deve funcionar &lt;strong&gt;sem pedir senha&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Edite o arquivo: (Bash)&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;nano ~/.ssh/authorized_keys&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Crie a pasta .ssh e o arquivo authorized_keys (se ainda não existirem): (Bash)&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;mkdir -p ~/.ssh&#10;chmod 700 ~/.ssh&#10;touch ~/.ssh/authorized_keys&#10;chmod 600 ~/.ssh/authorized_keys&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Entre na sua VPS normalmente (com senha): (PowerShell)&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;ssh user@your-vps-ip&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Copie sua chave pública para a área de transferência: (PowerShell)&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Get-Content $HOME\.ssh\id_ed25519.pub | Set-Clipboard&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(ou id_rsa.pub se você usou RSA)&lt;/p&gt;&#10;&lt;h2 id="passo-3-desative-a-autenticação-por-senha"&gt;Passo 3: Desative a autenticação por senha&#10;&lt;/h2&gt;&lt;p&gt;Agora que o login com chave funciona, desative completamente o login por senha.&lt;/p&gt;&#10;&lt;p&gt;Entre na sua VPS (usando sua chave) e edite a configuração do SSH:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo nano /etc/ssh/sshd_config&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Encontre e altere (ou adicione) estas linhas:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;PasswordAuthentication no&#10;ChallengeResponseAuthentication no&#10;UsePAM no&#10;PubkeyAuthentication yes&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Salve e saia.&lt;/p&gt;&#10;&lt;p&gt;Reinicie o serviço SSH:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo systemctl restart sshd&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(ou sudo service ssh restart em sistemas mais antigos)&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Teste final&lt;/strong&gt;: tente entrar a partir de um terminal novo. Só deve funcionar com a sua chave privada — tentativas com senha serão recusadas na hora.&lt;/p&gt;&#10;&lt;h2 id="pronto"&gt;Pronto!&#10;&lt;/h2&gt;&lt;p&gt;Agora sua VPS está protegida contra:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Ataques de força bruta&lt;/li&gt;&#10;&lt;li&gt;Credential stuffing (uso de senhas vazadas em massa)&lt;/li&gt;&#10;&lt;li&gt;Senhas fracas ou vazadas&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Mesmo que um invasor saiba seu usuário e sua senha, ele &lt;strong&gt;não consegue entrar&lt;/strong&gt; sem o arquivo da sua chave privada.&lt;/p&gt;&#10;&lt;p&gt;Dica de mestre: guarde um backup da sua chave privada em local seguro e considere adicionar uma passphrase depois, usando ssh-keygen -p.&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura! 😊&lt;/p&gt;&#10;</description></item><item><title>Como remover os limites de upload do All In One WP Migration</title><link>https://aquasp.blog/pt/how-to-remove-upload-limits-on-all-in-one-wp-migration/</link><pubDate>Tue, 09 Dec 2025 00:25:04 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-remove-upload-limits-on-all-in-one-wp-migration/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Infelizmente, muitas hospedagens impõem limites de upload bem baixos (às vezes só 2–50 MB), e a Unlimited Extension oficial custa US$ 69.&lt;/p&gt;&#10;&lt;p&gt;Se você está nessa situação e precisa de um jeito gratuito de enviar backups enormes (10 GB, 40 GB ou mais), este truque simples vai ajudar.&lt;/p&gt;&#10;&lt;h2 id="a-solução-use-o-plugin-big-file-uploads"&gt;A solução: use o plugin &amp;ldquo;Big File Uploads&amp;rdquo;&#10;&lt;/h2&gt;&lt;p&gt;A versão gratuita do All-in-One WP Migration não limita os uploads artificialmente — ela só respeita o limite que a sua hospedagem ou servidor impõe. A Unlimited Extension paga funciona dividindo o arquivo &lt;code&gt;.wpress&lt;/code&gt; em pedaços menores durante o upload.&lt;/p&gt;&#10;&lt;p&gt;A boa notícia: existe um plugin totalmente gratuito que faz exatamente o mesmo truque de dividir em pedaços!&lt;/p&gt;&#10;&lt;h3 id="guia-passo-a-passo"&gt;Guia passo a passo&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;Instale e ative o plugin chamado &lt;strong&gt;Big File Uploads&lt;/strong&gt;&#10;→ Link direto: &lt;a class="link" href="https://wordpress.org/plugins/tuxedo-big-file-uploads/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://wordpress.org/plugins/tuxedo-big-file-uploads/&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Depois de ativar, vá em:&#10;&lt;strong&gt;Configurações → Big File Uploads&lt;/strong&gt;&#10;(ou encontre na página de Plugins → link “Configurações” embaixo do nome do plugin)&lt;/li&gt;&#10;&lt;li&gt;Você verá o tamanho máximo de upload atual (no começo, ele será igual ao limite padrão da sua hospedagem).&lt;/li&gt;&#10;&lt;li&gt;Mude para o valor que quiser:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1 GB = 1024 MB&lt;/li&gt;&#10;&lt;li&gt;10 GB = 10240 MB&lt;/li&gt;&#10;&lt;li&gt;40 GB = 40960 MB&#10;(Basta digitar o número em megabytes — não precisa colocar “MB” nem “GB”)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol start="5"&gt;&#10;&lt;li&gt;Clique em &lt;strong&gt;Salvar alterações&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Pronto! O novo limite vale na hora.&lt;/p&gt;&#10;&lt;p&gt;Agora, quando você voltar em &lt;strong&gt;All-in-One WP Migration → Importar&lt;/strong&gt;, o tamanho máximo de arquivo vai mostrar o novo valor (até 40 GB ou mais funciona perfeitamente).&lt;/p&gt;&#10;&lt;h2 id="conclusão"&gt;Conclusão&#10;&lt;/h2&gt;&lt;p&gt;Isto &lt;strong&gt;não&lt;/strong&gt; é um ataque à ServMask — eles criaram um plugin incrível e merecem todo o apoio. Se você puder pagar, compre a Unlimited Extension oficial.&lt;/p&gt;&#10;&lt;p&gt;Mas, se o orçamento estiver apertado e você só precisa migrar ou restaurar um site enorme uma ou duas vezes, o plugin &lt;strong&gt;Big File Uploads&lt;/strong&gt; é uma alternativa 100% gratuita e confiável, que funciona perfeitamente com a versão gratuita do All-in-One WP Migration.&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura! 🙂&lt;/p&gt;&#10;</description></item><item><title>Como rodar o seu próprio nó de Monero</title><link>https://aquasp.blog/pt/how-to-run-your-own-monero-node/</link><pubDate>Tue, 09 Dec 2025 00:07:50 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-run-your-own-monero-node/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Na minha opinião, o Monero é uma das criptomoedas mais importantes. Ele não tem a mesma participação de mercado que o Bitcoin, mas é bem único em um aspecto: &lt;strong&gt;privacidade&lt;/strong&gt;. O Monero é igualzinho a dinheiro vivo — ninguém precisa saber quanto Monero foi enviado nem quem enviou. Nesse ponto, ele é o oposto do Bitcoin. Na verdade, quando o assunto é privacidade, o Bitcoin é &lt;strong&gt;pior que o dinheiro fiduciário&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Você pode ler mais detalhes aqui:&#10;&lt;a class="link" href="https://lukesmith.xyz/articles/monero-maximalism-or-how-bitcoin-is-a-coin/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://lukesmith.xyz/articles/monero-maximalism-or-how-bitcoin-is-a-coin/&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Obs.:&lt;/strong&gt; eu &lt;strong&gt;NÃO&lt;/strong&gt; estou recomendando que ninguém invista em Monero. O Monero foi feito para ser uma moeda, mas, como as criptomoedas ainda são extremamente voláteis, muita gente o trata como investimento. Faça sua própria pesquisa — não me responsabilizo por nenhum investimento que você fizer.&lt;/p&gt;&#10;&lt;h2 id="1-escolha-uma-vps-ou-monte-em-casa"&gt;1. Escolha uma VPS ou monte em casa&#10;&lt;/h2&gt;&lt;p&gt;Antes de tudo, você vai precisar de um servidor. Pode usar o seu próprio PC de casa, se preferir, ou uma VPS. A VPS é mais fácil, porque fica online 24/7 e você sempre consegue abrir as portas necessárias.&lt;/p&gt;&#10;&lt;p&gt;Em casa, muitos provedores bloqueiam as portas de entrada, então o seu nó não seria público (ele ainda ajudaria a rede, mas você não conseguiria se conectar a ele de fora com facilidade sem algo como o ngrok).&lt;/p&gt;&#10;&lt;p&gt;Eu, pessoalmente, recomendo a &lt;strong&gt;Contabo&lt;/strong&gt; para rodar um nó de Monero, porque eles têm ótimos preços nos planos de VPS de armazenamento.&#10;Veja os preços aqui: &lt;a class="link" href="https://contabo.com/en/storage-vps/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;Contabo Storage VPS&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;A &lt;strong&gt;Storage VPS S&lt;/strong&gt; é mais que suficiente. Hoje a blockchain do Monero ocupa cerca de 175 GB, usa menos de 2 GB de RAM e quase nada de CPU depois de totalmente sincronizada (~3 % de uso).&lt;/p&gt;&#10;&lt;h2 id="2-protegendo-a-vps"&gt;2. Protegendo a VPS&#10;&lt;/h2&gt;&lt;p&gt;Antes de tudo, &lt;strong&gt;desative o login por senha&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Depois, instale e configure o UFW (se ainda não estiver configurado):&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install ufw&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw default deny incoming&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw default allow outgoing&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw allow ssh&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw allow &lt;span style="color:#ae81ff"&gt;18080&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw allow &lt;span style="color:#ae81ff"&gt;18089&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw enable&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-criando-um-usuário-dedicado"&gt;3. Criando um usuário dedicado&#10;&lt;/h2&gt;&lt;p&gt;Por segurança, nunca rode o Monero como root. Em vez disso, crie um usuário normal:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;adduser monerouser&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Defina uma senha e aperte Enter no resto das perguntas.&lt;/p&gt;&#10;&lt;h2 id="4-mudando-as-configurações-e-sincronizando-o-nó"&gt;4. Mudando as configurações e sincronizando o nó&#10;&lt;/h2&gt;&lt;p&gt;Troque para o novo usuário:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;su monerouser&#10;cd ~&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Baixe os binários oficiais do Monero CLI (Linux 64 bits):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;wget -c https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.3.4.tar.bz2&#10;mkdir monero&#10;tar -xjvf monero-linux-x64-v0.18.3.4.tar.bz2 -C monero --strip-components=1&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(Se precisar, troque a versão na URL/no nome do arquivo pela mais recente em &lt;a class="link" href="https://getmonero.org/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://getmonero.org&lt;/a&gt;.)&lt;/p&gt;&#10;&lt;p&gt;Entre na pasta e inicie o monerod uma vez só para criar os arquivos de configuração (pare depois de alguns segundos com Ctrl+C):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;cd monero&#10;./monerod&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora edite o arquivo de configuração:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;nano ~/.bitmonero/bitmonero.conf&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cole as configurações recomendadas a seguir:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# P2P full node&#10;public-node=true # Advertises the RPC-restricted port over p2p&#10;&#10;# RPC settings&#10;rpc-restricted-bind-ip=0.0.0.0&#10;rpc-restricted-bind-port=18089&#10;&#10;# Node settings&#10;enforce-dns-checkpointing=true&#10;db-sync-mode=safe # Slow but reliable db writes&#10;enable-dns-blocklist=true # Block known-malicious nodes&#10;no-igd=true # Disable UPnP&#10;no-zmq=true&#10;&#10;# Bandwidth settings (much faster sync + better contribution)&#10;out-peers=32&#10;in-peers=32&#10;limit-rate-up=1048576 # 1 GB/s upload&#10;limit-rate-down=1048576 # 1 GB/s download&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Salve com &lt;strong&gt;Ctrl+O → Enter → Ctrl+X&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Inicie o nó em modo destacado (em segundo plano):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;./monerod --detach&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pronto! Agora é só esperar ele sincronizar por completo.&lt;/p&gt;&#10;&lt;p&gt;Confira o status da sincronização quando quiser com:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;./monerod status&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A sincronização inicial costuma levar algumas horas, dependendo da sua conexão e da velocidade da VPS.&lt;/p&gt;&#10;&lt;p&gt;Depois de totalmente sincronizado, você pode conectar qualquer carteira Monero (Cake Wallet, Monero GUI, Feather etc.) ao seu próprio nó usando o IP da sua VPS e a porta &lt;strong&gt;18089&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h2 id="conclusão-e-créditos"&gt;Conclusão e créditos&#10;&lt;/h2&gt;&lt;p&gt;É só isso! A comunidade do Monero incentiva muito que cada um rode o próprio nó completo. Isso deixa a rede mais descentralizada e dá a você o máximo de privacidade.&lt;/p&gt;&#10;&lt;p&gt;Este guia não teria sido possível sem estes excelentes materiais:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://www.getmonero.org/resources/user-guides/vps_run_node.html?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://www.getmonero.org/resources/user-guides/vps_run_node.html&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://www.coincashew.com/coins/overview-xmr/guide-or-how-to-run-a-full-node?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://www.coincashew.com/coins/overview-xmr/guide-or-how-to-run-a-full-node&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Obrigado pela leitura! 🙂&lt;/p&gt;&#10;</description></item><item><title>Como hospedar sua própria instância do Piped</title><link>https://aquasp.blog/pt/how-to-self-host-your-own-piped-instance/</link><pubDate>Mon, 08 Dec 2025 23:58:10 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-self-host-your-own-piped-instance/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;O Piped é um front-end alternativo e de código aberto para o YouTube, focado em privacidade. Sem rastreamento do Google, sem anúncios (nem nos vídeos que normalmente têm anúncios que não dá para pular), e funciona perfeitamente com o SponsorBlock e o DeArrow.&lt;/p&gt;&#10;&lt;p&gt;Hospedar sua própria instância com Docker é incrivelmente fácil e leva menos de 20 minutos.&lt;/p&gt;&#10;&lt;h2 id="requisitos"&gt;Requisitos&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Um domínio (ou subdomínio)&lt;/li&gt;&#10;&lt;li&gt;Uma VPS KVM barata com suporte a Docker (evite OpenVZ — kernel antigo)&lt;/li&gt;&#10;&lt;li&gt;~US$ 3–6/mês é mais que suficiente (1 CPU, 1–2 GB de RAM)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Ótimos provedores baratos em 2025:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;RackNerd&lt;/li&gt;&#10;&lt;li&gt;Hostinger (meu link de afiliado, se quiser apoiar: &lt;a class="link" href="https://hostinger.com.br/?REFERRALCODE=waterdownfall&amp;amp;ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://hostinger.com.br?REFERRALCODE=waterdownfall&lt;/a&gt;)&lt;/li&gt;&#10;&lt;li&gt;Cloudcone, Hetzner Cloud, BuyVM etc.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="passo-1-proteja-e-prepare-sua-vps"&gt;Passo 1: Proteja e prepare sua VPS&#10;&lt;/h2&gt;&lt;p&gt;(Só chaves SSH, firewall etc. — faça isso primeiro!)&lt;/p&gt;&#10;&lt;p&gt;Depois, instale o Docker (exemplo para Ubuntu/Debian):&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt upgrade -y&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install -y ca-certificates curl gnupg lsb-release&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Add Docker repo&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /etc/apt/keyrings&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;deb [arch=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt; signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;lsb_release -cs&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt; stable&amp;#34;&lt;/span&gt; &amp;gt; /etc/apt/sources.list.d/docker.list&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt update&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="passo-2-implante-o-piped-com-a-configuração-oficial-em-docker"&gt;Passo 2: Implante o Piped com a configuração oficial em Docker&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;cd /opt&#10;git clone https://github.com/TeamPiped/Piped-Docker&#10;cd Piped-Docker&#10;./configure-instance.sh&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Durante o script:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Escolha o &lt;strong&gt;Caddy&lt;/strong&gt; como proxy reverso (o mais fácil, com SSL automático)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Informe seu domínio e os subdomínios:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Frontend → piped.yourdomain.com&lt;/li&gt;&#10;&lt;li&gt;API do backend → pipedapi.yourdomain.com&lt;/li&gt;&#10;&lt;li&gt;Proxy → pipedproxy.yourdomain.com&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="passo-3-aponte-o-dns-para-sua-vps"&gt;Passo 3: Aponte o DNS para sua VPS&#10;&lt;/h2&gt;&lt;p&gt;Crie três registros A no seu provedor de DNS:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;piped.yourdomain.com → VPS_IP&#10;pipedapi.yourdomain.com → VPS_IP&#10;pipedproxy.yourdomain.com → VPS_IP&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-4-suba-tudo"&gt;Passo 4: Suba tudo&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;docker compose up -d&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pronto!&#10;Depois que o DNS propagar (normalmente em menos de 10 minutos), o seu YouTube privado estará no ar em:&lt;/p&gt;&#10;&lt;p&gt;&lt;a class="link" href="https://piped.yourdomain.com/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://piped.yourdomain.com&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;O Caddy cuida automaticamente do SSL gratuito do Let’s Encrypt — sem precisar mexer no certbot manualmente.&lt;/p&gt;&#10;&lt;h2 id="passo-5-opcional-confira-os-logs"&gt;Passo 5: (Opcional) Confira os logs&#10;&lt;/h2&gt;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# See what Caddy is doing&#10;docker logs -f caddy&#10;&#10;# Or any other container&#10;docker logs -f piped-frontend&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="dicas-bônus"&gt;Dicas bônus&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Quer deixar pública? É só compartilhar a URL — qualquer pessoa pode usar a sua instância.&lt;/li&gt;&#10;&lt;li&gt;Quer deixar privada? Bloqueie com regras de firewall do Cloudflare ou com autenticação básica no Caddy.&lt;/li&gt;&#10;&lt;li&gt;Use junto com o app &lt;strong&gt;LibreTube&lt;/strong&gt; (Android) para ter a experiência completa sem Google.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Agora você tem o seu próprio YouTube sem anúncios, sem rastreamento e com SponsorBlock — totalmente sob o seu controle.&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura!&lt;/p&gt;&#10;</description></item><item><title>Como instalar o WordPress em LEMP com Redis e WP-CLI no Debian 11</title><link>https://aquasp.blog/pt/how-to-setup-wordpress-on-lemp-with-redis-and-wp-cli-on-debian-11/</link><pubDate>Mon, 08 Dec 2025 23:47:36 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-setup-wordpress-on-lemp-with-redis-and-wp-cli-on-debian-11/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Este é o jeito mais rápido, mais seguro e que mais economiza recursos para hospedar o WordPress por conta própria em 2025.&#10;Vamos usar uma stack LEMP de verdade (Linux + Nginx + MySQL/MariaDB + PHP-FPM) com isolamento de PHP por site, cache de objetos com Redis, SSL automático e WP-CLI — tudo ajustado para velocidade e segurança.&lt;/p&gt;&#10;&lt;p&gt;Vamos lá.&lt;/p&gt;&#10;&lt;h2 id="passo-0-proteja-e-atualize-sua-vps"&gt;Passo 0: Proteja e atualize sua VPS&#10;&lt;/h2&gt;&lt;p&gt;(Se ainda não fez isso, siga primeiro um guia de proteção de VPS — só chaves SSH, firewall, fail2ban etc.)&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt upgrade -y&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt autoremove --purge&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;reboot&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="passo-1-instale-a-stack-principal"&gt;Passo 1: Instale a stack principal&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# Nginx&#10;apt install nginx -y&#10;systemctl enable nginx&#10;&#10;# MariaDB (better than MySQL on Debian)&#10;apt install mariadb-server -y&#10;systemctl enable mariadb&#10;&#10;# PHP 8.3 + all needed extensions (using ondrej/sury repo)&#10;apt install ca-certificates apt-transport-https lsb-release -y&#10;wget -qO- https://packages.sury.org/php/apt.gpg | gpg --dearmor &amp;gt; /usr/share/keyrings/sury-php.gpg&#10;echo &amp;#34;deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main&amp;#34; &amp;gt; /etc/apt/sources.list.d/sury-php.list&#10;apt update&#10;apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl php8.3-imagick php8.3-redis -y&#10;systemctl enable php8.3-fpm&#10;&#10;# Redis&#10;curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg&#10;echo &amp;#34;deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main&amp;#34; &amp;gt; /etc/apt/sources.list.d/redis.list&#10;apt update &amp;amp;&amp;amp; apt install redis-server -y&#10;systemctl enable redis-server&#10;&#10;# Certbot + WP-CLI&#10;apt install python3-certbot-nginx -y&#10;curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar&#10;chmod +x wp-cli.phar &amp;amp;&amp;amp; mv wp-cli.phar /usr/local/bin/wp&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-2-proteja-o-mariadb-e-crie-o-banco-de-dados"&gt;Passo 2: Proteja o MariaDB e crie o banco de dados&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;mysql_secure_installation&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;mysql -u root -p&#10;CREATE DATABASE wp_yoursite;&#10;CREATE USER &amp;#39;wp_yoursite&amp;#39;@&amp;#39;localhost&amp;#39; IDENTIFIED BY &amp;#39;strongpassword&amp;#39;;&#10;GRANT ALL ON wp_yoursite.* TO &amp;#39;wp_yoursite&amp;#39;@&amp;#39;localhost&amp;#39;;&#10;FLUSH PRIVILEGES;&#10;EXIT;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-3-isole-o-php-fpm-por-site-segurança--estabilidade"&gt;Passo 3: Isole o PHP-FPM por site (segurança + estabilidade)&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;cd /etc/php/8.3/fpm/pool.d/&#10;cp www.conf yoursite.conf&#10;nano yoursite.conf&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Substitua:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;[www] → [yoursite]&lt;/li&gt;&#10;&lt;li&gt;user = www-data → user = yoursiteuser (vamos criar esse usuário daqui a pouco)&lt;/li&gt;&#10;&lt;li&gt;group = www-data → group = yoursiteuser&lt;/li&gt;&#10;&lt;li&gt;listen = /run/php/php8.3-fpm.sock → listen = /run/php/php8.3-fpm-yoursite.sock&lt;/li&gt;&#10;&lt;li&gt;Mude o gerenciador de processos de dynamic → ondemand (economiza RAM)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl restart php8.3-fpm&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(Vai falhar até o usuário existir — tudo bem.)&lt;/p&gt;&#10;&lt;h2 id="passo-4-otimize-o-php-e-ative-o-opcache"&gt;Passo 4: Otimize o PHP e ative o OPcache&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;sed -i &amp;#34;s/memory_limit = .*/memory_limit = 1024M/&amp;#34; /etc/php/8.3/fpm/php.ini&#10;sed -i &amp;#34;s/upload_max_filesize = .*/upload_max_filesize = 10240M/&amp;#34; /etc/php/8.3/fpm/php.ini&#10;sed -i &amp;#34;s/post_max_size = .*/post_max_size = 10240M/&amp;#34; /etc/php/8.3/fpm/php.ini&#10;sed -i &amp;#34;s/max_execution_time = .*/max_execution_time = 600/&amp;#34; /etc/php/8.3/fpm/php.ini&#10;sed -i &amp;#34;s/;opcache.enable=1/opcache.enable=1/&amp;#34; /etc/php/8.3/fpm/php.ini&#10;sed -i &amp;#34;s/;opcache.memory_consumption=.*/opcache.memory_consumption=512/&amp;#34; /etc/php/8.3/fpm/php.ini&#10;sed -i &amp;#34;s/;opcache.max_accelerated_files=.*/opcache.max_accelerated_files=20000/&amp;#34; /etc/php/8.3/fpm/php.ini&#10;sed -i &amp;#34;s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/&amp;#34; /etc/php/8.3/fpm/php.ini&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-5-crie-o-usuário-do-sistema-e-o-diretório-do-site"&gt;Passo 5: Crie o usuário do sistema e o diretório do site&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;adduser yoursiteuser --shell /bin/bash&#10;su yoursiteuser&#10;mkdir ~/public_html &amp;amp;&amp;amp; cd ~/public_html&#10;echo &amp;#34;cd ~/public_html&amp;#34; &amp;gt;&amp;gt; ~/.bashrc&#10;exit&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-6-configuração-do-nginx-rápida-e-segura"&gt;Passo 6: Configuração do Nginx (rápida e segura)&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;nano /etc/nginx/sites-available/yoursite.conf&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;upstream php-yoursite {&#10; server unix:/run/php/php8.3-fpm-yoursite.sock;&#10;}&#10;&#10;server {&#10; listen 80;&#10; listen [::]:80;&#10; server_name yourdomain.com www.yourdomain.com;&#10; root /home/yoursiteuser/public_html;&#10; index index.php index.html;&#10;&#10; client_max_body_size 10G;&#10;&#10; location / {&#10; try_files $uri $uri/ /index.php?$args;&#10; }&#10;&#10; location ~ \.php$ {&#10; include fastcgi_params;&#10; fastcgi_pass php-yoursite;&#10; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&#10; }&#10;&#10; location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?|ttf|eot)$ {&#10; expires max;&#10; log_not_found off;&#10; }&#10;}&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;ln -s /etc/nginx/sites-available/yoursite.conf /etc/nginx/sites-enabled/&#10;nginx -t &amp;amp;&amp;amp; systemctl reload nginx&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-7-instale-o-wordpress-via-wp-cli-como-o-usuário-do-site"&gt;Passo 7: Instale o WordPress via WP-CLI (como o usuário do site)&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;su yoursiteuser&#10;cd ~/public_html&#10;&#10;wp core download&#10;wp config create --dbname=wp_yoursite --dbuser=wp_yoursite --dbpass=&amp;#39;strongpassword&amp;#39; --locale=en_US&#10;wp core install --url=https://yourdomain.com --title=&amp;#34;Your Site&amp;#34; --admin_user=admin --admin_password=&amp;#39;strongpass&amp;#39; --admin_email=you@domain.com&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-8-ssl-com-lets-encrypt-renovação-automática"&gt;Passo 8: SSL com Let’s Encrypt (renovação automática)&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;certbot --nginx -d yourdomain.com -d www.yourdomain.com&#10;# Choose redirect to HTTPS when asked&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adicione o cron de renovação automática:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;crontab -e&#10;# Add:&#10;0 0 * * 0 certbot renew --quiet&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-9-ative-o-cache-de-objetos-com-redis"&gt;Passo 9: Ative o cache de objetos com Redis&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# As root&#10;usermod -aG redis yoursiteuser&#10;chmod 770 /var/run/redis/redis-server.sock&#10;&#10;# Optimize Redis config&#10;sed -i &amp;#39;s/port 6379/port 0/&amp;#39; /etc/redis/redis.conf&#10;sed -i &amp;#39;s|# unixsocket /run/redis/redis-server.sock|unixsocket /var/run/redis/redis-server.sock|&amp;#39; /etc/redis/redis.conf&#10;sed -i &amp;#39;s/# unixsocketperm 700/unixsocketperm 770/&amp;#39; /etc/redis/redis.conf&#10;sed -i &amp;#39;s/# maxmemory .*/maxmemory 1024mb/&amp;#39; /etc/redis/redis.conf&#10;systemctl restart redis-server&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# As yoursiteuser&#10;cd ~/public_html&#10;wp plugin install redis-cache --activate&#10;wp config set WP_REDIS_SCHEME unix&#10;wp config set WP_REDIS_PATH &amp;#39;/var/run/redis/redis-server.sock&amp;#39;&#10;wp redis enable&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="pronto"&gt;Pronto!&#10;&lt;/h2&gt;&lt;p&gt;Agora você tem:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Pool do PHP-FPM totalmente isolado (1 usuário = 1 site = nenhum estrago entre sites)&lt;/li&gt;&#10;&lt;li&gt;Cache de objetos com Redis via socket Unix&lt;/li&gt;&#10;&lt;li&gt;OPcache + limites de upload enormes&lt;/li&gt;&#10;&lt;li&gt;Renovação automática do SSL&lt;/li&gt;&#10;&lt;li&gt;O roteamento mais rápido possível no Nginx&lt;/li&gt;&#10;&lt;li&gt;WP-CLI pronto para usar&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;O seu wp-admin vai parecer instantâneo, e o site vai aguentar o tráfego como um campeão — mesmo numa VPS de US$ 5/mês.&lt;/p&gt;&#10;&lt;p&gt;Próximos passos:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Instale um plugin de cache de página (qualquer um gratuito serve)&lt;/li&gt;&#10;&lt;li&gt;Configure o Cloudflare (opcional, mas recomendado)&lt;/li&gt;&#10;&lt;li&gt;Backups regulares&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Aproveite o seu WordPress privado e ultrarrápido!&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura! 😊&lt;/p&gt;&#10;</description></item><item><title>Como montar o seu próprio servidor de e-mail</title><link>https://aquasp.blog/pt/how-to-setup-your-own-email-server/</link><pubDate>Mon, 08 Dec 2025 23:35:02 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-setup-your-own-email-server/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Quer ter o seu próprio e-mail ultraprivado, como &lt;a class="link" href="" &gt;name@yourdomain.com&lt;/a&gt;, com uma interface de webmail bonita?&#10;Este guia mostra como montar um servidor de e-mail completo em menos de uma hora usando o lendário script &lt;strong&gt;EmailWiz&lt;/strong&gt; do Luke Smith + o webmail &lt;strong&gt;Roundcube&lt;/strong&gt; — tudo numa VPS de US$ 2–3/mês.&lt;/p&gt;&#10;&lt;p&gt;Tudo é gratuito, de código aberto e 100% sob o seu controle.&lt;/p&gt;&#10;&lt;h2 id="passo-0-arrume-uma-vps-barata"&gt;Passo 0: Arrume uma VPS barata&#10;&lt;/h2&gt;&lt;p&gt;Bons provedores com promoções frequentes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Contabo&lt;/li&gt;&#10;&lt;li&gt;Seção “Offers” do LowEndTalk&lt;/li&gt;&#10;&lt;li&gt;Hostinger (meu link de afiliado, se quiser me apoiar -&amp;gt; &lt;a class="link" href="https://hostinger.com.br/?REFERRALCODE=waterdownfall&amp;amp;ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://hostinger.com.br?REFERRALCODE=waterdownfall&lt;/a&gt;)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Requisitos:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Qualquer localização (EUA funciona bem)&lt;/li&gt;&#10;&lt;li&gt;Debian 10 ou 11 (vamos usar o Debian 10 neste guia)&lt;/li&gt;&#10;&lt;li&gt;Pelo menos 1 GB de RAM (2 GB ou mais recomendado)&lt;/li&gt;&#10;&lt;li&gt;Defina o hostname no cadastro como o seu domínio (por exemplo, sobremail.com)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Espere a implantação → pegue a senha de root no e-mail → entre via SSH.&lt;/p&gt;&#10;&lt;h2 id="passo-1-proteção-básica-da-vps"&gt;Passo 1: Proteção básica da VPS&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh root@your-vps-ip&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt upgrade -y&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Troque a senha de root:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;passwd&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Crie e envie uma chave SSH (faça isso a partir da sua máquina local):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;ssh-copy-id root@your-vps-ip&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora desative o login por senha:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;nano /etc/ssh/sshd_config&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Altere:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;PasswordAuthentication no&#10;UsePAM no&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Depois:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl restart sshd&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora só a sua chave SSH funciona — muito mais seguro.&lt;/p&gt;&#10;&lt;h2 id="passo-2-instale-o-emailwiz-o-script-mágico"&gt;Passo 2: Instale o EmailWiz (o script mágico)&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;apt install curl nginx python3-certbot-nginx -y&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Aponte estes registros DNS para o IP da sua VPS:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;yourdomain.com → IP da VPS (registro A)&lt;/li&gt;&#10;&lt;li&gt;mail.yourdomain.com → IP da VPS (registro A)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Rode o script do Luke:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;curl -LO lukesmith.xyz/emailwiz.sh&#10;sh emailwiz.sh&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Siga as perguntas:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Responda Yes/Y para tudo&lt;/li&gt;&#10;&lt;li&gt;Quando pedir o “System mail name” → digite SÓ yourdomain.com (NÃO mail.yourdomain.com!)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Espere ~5–10 minutos. Quando terminar, ele te dá três registros DNS para adicionar:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Registro TXT do DKIM (mail._domainkey.yourdomain.com)&lt;/li&gt;&#10;&lt;li&gt;Registro TXT do DMARC (_dmarc.yourdomain.com)&lt;/li&gt;&#10;&lt;li&gt;Registro TXT do SPF (domínio raiz)&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Adicione-os no seu provedor de DNS (Cloudflare, Namecheap etc.).&lt;/p&gt;&#10;&lt;h2 id="passo-3-configure-o-dns-reverso-essencial-para-a-entregabilidade"&gt;Passo 3: Configure o DNS reverso (essencial para a entregabilidade!)&#10;&lt;/h2&gt;&lt;p&gt;No painel da Cloudcone → Networking → rDNS → defina como yourdomain.com&#10;&lt;strong&gt;NÃO ative o IPv6&lt;/strong&gt; (a Cloudcone ainda não suporta rDNS em IPv6 — isso vai prejudicar a entregabilidade).&lt;/p&gt;&#10;&lt;h2 id="passo-4-crie-sua-primeira-caixa-de-e-mail"&gt;Passo 4: Crie sua primeira caixa de e-mail&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;useradd -G mail -m yourusername&#10;passwd yourusername&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agora o seu e-mail é: &lt;a class="link" href="mailto:yourusername@yourdomain.com" &gt;yourusername@yourdomain.com&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Teste no Thunderbird/cliente IMAP:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;IMAP: mail.yourdomain.com (porta 993, SSL/TLS)&lt;/li&gt;&#10;&lt;li&gt;SMTP: mail.yourdomain.com (porta 465, SSL/TLS)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="passo-5-instale-o-webmail-roundcube"&gt;Passo 5: Instale o webmail Roundcube&#10;&lt;/h2&gt;&lt;p&gt;Adicione o backports + o repositório do PHP 8.x:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2&#10;echo &amp;#34;deb https://packages.sury.org/php/ $(lsb_release -sc) main&amp;#34; | tee /etc/apt/sources.list.d/sury-php.list&#10;wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -&#10;apt update&#10;apt install -y php8.0-fpm php8.0-common php8.0-gd php8.0-imap php8.0-mysql php8.0-curl php8.0-zip php8.0-xml php8.0-mbstring php8.0-intl mariadb-server&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Proteja o MySQL:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;mysql_secure_installation&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Crie o banco de dados do Roundcube:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;mysql -u root -p&#10;CREATE DATABASE roundcube;&#10;CREATE USER &amp;#39;roundcubeuser&amp;#39;@&amp;#39;localhost&amp;#39; IDENTIFIED BY &amp;#39;strongpassword&amp;#39;;&#10;GRANT ALL ON roundcube.* TO &amp;#39;roundcubeuser&amp;#39;@&amp;#39;localhost&amp;#39;;&#10;FLUSH PRIVILEGES;&#10;EXIT;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Baixe e extraia o Roundcube (a versão completa mais recente):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;cd /var/www&#10;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&#10;tar xvf roundcubemail-1.6.9-complete.tar.gz&#10;mv roundcubemail-1.6.9 roundcube&#10;rm roundcubemail-1.6.9-complete.tar.gz&#10;chown -R www-data:www-data /var/www/roundcube/temp /var/www/roundcube/logs&#10;mysql roundcube &amp;lt; /var/www/roundcube/SQL/mysql.initial.sql&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Configuração do Nginx para o Roundcube (/etc/nginx/sites-enabled/roundcube):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;server {&#10; listen 80;&#10; listen [::]:80;&#10; server_name yourdomain.com;&#10; root /var/www/roundcube;&#10; index index.php;&#10;&#10; location / {&#10; try_files $uri $uri/ /index.php;&#10; }&#10;&#10; location ~ \.php$ {&#10; include fastcgi_params;&#10; fastcgi_pass unix:/run/php/php8.0-fpm.sock;&#10; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&#10; }&#10;&#10; location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {&#10; expires 360d;&#10; access_log off;&#10; }&#10;}&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Teste e recarregue o Nginx, depois obtenha o SSL:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;nginx -t &amp;amp;&amp;amp; systemctl reload nginx&#10;certbot --nginx -d yourdomain.com&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Acesse &lt;a class="link" href="https://yourdomain.com/installer" target="_blank" rel="noopener"&#10; &gt;https://yourdomain.com/installer&lt;/a&gt; → siga o assistente:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Banco de dados: roundcube, usuário roundcubeuser, a senha que você definiu&lt;/li&gt;&#10;&lt;li&gt;Host IMAP: localhost&lt;/li&gt;&#10;&lt;li&gt;Host SMTP: localhost&lt;/li&gt;&#10;&lt;li&gt;Host padrão: mail.yourdomain.com&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Ative todos os plugins &lt;strong&gt;menos o Enigma&lt;/strong&gt; (ele quebra as identidades em versões mais antigas).&lt;/p&gt;&#10;&lt;p&gt;Ao terminar, apague o instalador:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;rm -rf /var/www/roundcube/installer&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-6-ajustes-de-qualidade-de-vida"&gt;Passo 6: Ajustes de qualidade de vida&#10;&lt;/h2&gt;&lt;p&gt;Edite /var/www/roundcube/config/config.inc.php:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;// Login with just username (no need to type @domain.com)&#10;$config[&amp;#39;username_domain&amp;#39;] = &amp;#39;yourdomain.com&amp;#39;;&#10;&#10;// Stay logged in for 6 months&#10;$config[&amp;#39;session_lifetime&amp;#39;] = 259200;&#10;&#10;// Disable Enigma if you enabled it&#10;// Remove &amp;#39;enigma&amp;#39; from $config[&amp;#39;plugins&amp;#39;] array&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Aumente o tamanho dos anexos:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;nano /etc/php/8.0/fpm/php.ini&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;upload_max_filesize = 50M&#10;post_max_size = 50M&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Depois:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl restart php8.0-fpm&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="passo-7-proteção-contra-força-bruta-com-o-fail2ban"&gt;Passo 7: Proteção contra força bruta com o Fail2Ban&#10;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;apt install fail2ban -y&#10;cd /var/www/roundcube/plugins&#10;wget https://github.com/texxasrulez/roundcube_fail2ban/archive/refs/tags/1.4.zip&#10;unzip 1.4.zip&#10;mv roundcube_fail2ban-1.4 fail2ban&#10;rm 1.4.zip&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ative na configuração do Roundcube (config.inc.php):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$config[&amp;#39;plugins&amp;#39;][] = &amp;#39;fail2ban&amp;#39;;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adicione a jail (/etc/fail2ban/jail.local – crie se não existir):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;[roundcube]&#10;enabled = true&#10;port = http,https&#10;filter = roundcube&#10;action = iptables-multiport[name=roundcube, port=&amp;#34;http,https&amp;#34;]&#10;logpath = /var/www/roundcube/logs/errors.log&#10;maxretry = 5&#10;bantime = 3600&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Crie o filtro (/etc/fail2ban/filter.d/roundcube.conf):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;[Definition]&#10;failregex = IMAP Error: Login failed for .* from &amp;lt;HOST&amp;gt;&#10;ignoreregex =&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Reinicie:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl restart fail2ban php8.0-fpm&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pronto! Agora o seu webmail está protegido.&lt;/p&gt;&#10;&lt;h2 id="resultado-final"&gt;Resultado final&#10;&lt;/h2&gt;&lt;p&gt;Agora você tem:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Servidor de e-mail completo com DKIM, SPF e DMARC&lt;/li&gt;&#10;&lt;li&gt;Webmail Roundcube bonito e rápido&lt;/li&gt;&#10;&lt;li&gt;Zero envolvimento do Google/Microsoft&lt;/li&gt;&#10;&lt;li&gt;Login uma vez a cada 6 meses&lt;/li&gt;&#10;&lt;li&gt;Proteção contra força bruta&lt;/li&gt;&#10;&lt;li&gt;Tudo por ~US$ 50/ano&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Bem-vindo à verdadeira liberdade no e-mail.&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura! 😊&lt;/p&gt;&#10;</description></item><item><title>Como usar IA com privacidade no navegador Brave (2 métodos)</title><link>https://aquasp.blog/pt/how-to-use-ai-privately-at-brave-browser-2-methods/</link><pubDate>Mon, 08 Dec 2025 23:15:59 +0000</pubDate><guid>https://aquasp.blog/pt/how-to-use-ai-privately-at-brave-browser-2-methods/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;O Brave Browser 1.69 trouxe um recurso revolucionário: agora você pode conectar o &lt;strong&gt;Leo&lt;/strong&gt; (o assistente de IA integrado do Brave) a &lt;strong&gt;qualquer&lt;/strong&gt; modelo que quiser — inclusive modelos totalmente locais ou APIs de terceiros.&#10;Isso significa ter uma barra lateral de IA sempre disponível, sem assinatura e com controle total sobre privacidade e custo.&lt;/p&gt;&#10;&lt;p&gt;Aqui estão os dois melhores métodos que testei (um ultraprivado e outro mais inteligente, porém na nuvem).&lt;/p&gt;&#10;&lt;h2 id="método-1--privacidade-máxima-rode-um-modelo-local-com-o-ollama-sem-precisar-de-gpu"&gt;Método 1 – Privacidade máxima: rode um modelo local com o Ollama (sem precisar de GPU)&#10;&lt;/h2&gt;&lt;p&gt;Dá para rodar um modelo surpreendentemente capaz totalmente offline, mesmo em um hardware bem modesto.&#10;O ponto ideal hoje é o &lt;strong&gt;Gemma 2 2B, do Google&lt;/strong&gt; — ele é minúsculo (~1,4 GB), roda muito bem na CPU e funciona perfeitamente mesmo com só 4–6 GB de RAM livres.&lt;/p&gt;&#10;&lt;h3 id="passo-1-instale-o-ollama"&gt;Passo 1: Instale o Ollama&#10;&lt;/h3&gt;&lt;p&gt;Baixe e instale o Ollama pelo site oficial: &lt;a class="link" href="https://ollama.com/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://ollama.com&lt;/a&gt;&#10;(Ele tem pacotes nativos para Windows, macOS e Linux.)&lt;/p&gt;&#10;&lt;h3 id="passo-2-baixe-o-gemma-2-2b"&gt;Passo 2: Baixe o Gemma 2 2B&#10;&lt;/h3&gt;&lt;p&gt;Abra um terminal e rode:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ollama pull gemma2:2b&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(Se você usa Docker: docker exec -it ollama ollama pull gemma2:2b)&lt;/p&gt;&#10;&lt;h3 id="passo-3-confira-se-está-rodando"&gt;Passo 3: Confira se está rodando&#10;&lt;/h3&gt;&lt;p&gt;Abra &lt;a class="link" href="http://localhost:11434/?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;http://localhost:11434&lt;/a&gt; no seu navegador.&#10;Você deve ver “Ollama is running” — é só disso que você precisa.&lt;/p&gt;&#10;&lt;h3 id="passo-4-adicione-o-modelo-ao-brave-leo"&gt;Passo 4: Adicione o modelo ao Brave Leo&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;Abra o Brave → Configurações → Leo&lt;/li&gt;&#10;&lt;li&gt;Clique em &lt;strong&gt;Adicionar novo modelo&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Preencha os detalhes exatamente assim:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Label&lt;/strong&gt; → o que você quiser (por exemplo, “Gemma 2 2B Local”)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Model Request Name&lt;/strong&gt; → gemma2:2b&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Server Endpoint&lt;/strong&gt; → http://localhost:11434/v1/chat/completions&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;API Key&lt;/strong&gt; → deixe em branco&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;(Opcional, mas recomendado) Defina este modelo como &lt;strong&gt;padrão&lt;/strong&gt; para novas conversas.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Pronto! Agora você tem uma IA totalmente privada e offline dentro do Brave, que quase não usa recursos.&lt;/p&gt;&#10;&lt;h2 id="método-2--respostas-mais-inteligentes-nuvem-use-o-cryptotalksai-pague-pelo-uso-sem-assinatura"&gt;Método 2 – Respostas mais inteligentes (nuvem): use o CryptoTalks.ai (pague pelo uso, sem assinatura)&#10;&lt;/h2&gt;&lt;p&gt;Se você quer acesso aos melhores modelos (GPT-4o, Claude 3.5 Sonnet, Gemini 1.5 Flash, Llama 3.1 405B etc.) sem criar contas na OpenAI/Anthropic/Google, o CryptoTalks.ai é hoje a melhor opção.&#10;Você paga só pelo que usa e pode colocar saldo na conta com Bitcoin ou Lightning.&lt;/p&gt;&#10;&lt;h3 id="passo-1-crie-uma-conta-e-pegue-seu-token"&gt;Passo 1: Crie uma conta e pegue seu token&#10;&lt;/h3&gt;&lt;p&gt;Acesse &lt;a class="link" href="https://cryptotalks.ai/signup?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://cryptotalks.ai/signup&lt;/a&gt; → cadastre-se → copie seu token de API (guarde-o em segurança!).&lt;/p&gt;&#10;&lt;h3 id="passo-2-coloque-um-pouquinho-de-crédito"&gt;Passo 2: Coloque um pouquinho de crédito&#10;&lt;/h3&gt;&lt;p&gt;Deposite qualquer valor via Bitcoin ou Lightning. Mesmo US$ 1–2 duram muito tempo para uso pessoal.&lt;/p&gt;&#10;&lt;h3 id="passo-3-adicione-os-modelos-ao-brave-leo"&gt;Passo 3: Adicione o(s) modelo(s) ao Brave Leo&#10;&lt;/h3&gt;&lt;p&gt;Mesmo processo de antes, só com valores diferentes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Label&lt;/strong&gt; → por exemplo, “Claude 3.5 Sonnet”, “GPT-4o” etc.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Model Request Name&lt;/strong&gt; → o ID exato do modelo na documentação deles, por exemplo:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;openai/chatgpt-4o-latest&lt;/li&gt;&#10;&lt;li&gt;anthropic/claude-3.5-sonnet&lt;/li&gt;&#10;&lt;li&gt;google/gemini-flash-1.5&lt;/li&gt;&#10;&lt;li&gt;meta-llama/llama-3.1-405b-instruct&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Server Endpoint&lt;/strong&gt; → &lt;a class="link" href="https://cryptotalks.ai/v1/chat/completions/" target="_blank" rel="noopener"&#10; &gt;https://cryptotalks.ai/v1/chat/completions/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;API Key&lt;/strong&gt; → cole o seu token&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Você pode adicionar quantos modelos quiser e alternar entre eles na hora pela barra lateral do Leo.&lt;/p&gt;&#10;&lt;p&gt;Dica de mestre: confira os rankings atuais de modelos em &lt;a class="link" href="https://artificialanalysis.ai/models?ref=aquasp.blog" target="_blank" rel="noopener"&#10; &gt;https://artificialanalysis.ai/models&lt;/a&gt; para escolher o melhor para o que você precisa.&lt;/p&gt;&#10;&lt;h2 id="uso-no-dia-a-dia"&gt;Uso no dia a dia&#10;&lt;/h2&gt;&lt;p&gt;Com o Leo + o seu próprio modelo, você pode:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Resumir artigos longos ou vídeos do YouTube com um clique&lt;/li&gt;&#10;&lt;li&gt;Explicar trechos de código complexos&lt;/li&gt;&#10;&lt;li&gt;Escrever rascunhos de e-mails ou mensagens&lt;/li&gt;&#10;&lt;li&gt;Traduzir na hora&lt;/li&gt;&#10;&lt;li&gt;Tudo sem sair do navegador e sem mandar dados para as big techs&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Quando estou na bateria e não quero nenhum consumo extra de energia → mudo para o Gemma 2 2B local.&#10;Quando preciso do máximo de inteligência → mudo para o Claude 3.5 Sonnet ou o GPT-4o via CryptoTalks.&lt;/p&gt;&#10;&lt;h2 id="conclusão"&gt;Conclusão&#10;&lt;/h2&gt;&lt;p&gt;O Brave acabou de transformar cada navegador em uma estação de trabalho de IA privada e personalizável.&#10;Escolha o Método 1 para 100% de privacidade e custo zero, ou o Método 2 quando quiser as melhores respostas disponíveis hoje.&lt;/p&gt;&#10;&lt;p&gt;De um jeito ou de outro — bem-vindo ao futuro da navegação.&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura! 😊&lt;/p&gt;&#10;</description></item><item><title>Cache de página, cache de objetos e cache de CDN – entendendo todos os tipos de cache</title><link>https://aquasp.blog/pt/page-cache-object-cache-and-cdn-cache-understanding-all-types-of-caching/</link><pubDate>Mon, 08 Dec 2025 23:13:04 +0000</pubDate><guid>https://aquasp.blog/pt/page-cache-object-cache-and-cdn-cache-understanding-all-types-of-caching/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="entendendo-os-diferentes-tipos-de-cache-principalmente-para-escalar-sites-com-cms"&gt;Entendendo os diferentes tipos de cache (principalmente para escalar sites com CMS)&#10;&lt;/h2&gt;&lt;p&gt;Se você já se perguntou o que as pessoas querem dizer quando falam em “cache de página”, “cache de objetos” ou “cache de CDN”, este post é para você. Essas são as três principais camadas de cache, que fazem uma diferença enorme na hora de escalar o WordPress, o WooCommerce ou qualquer outro CMS.&lt;/p&gt;&#10;&lt;h2 id="o-que-é-cache-de-página"&gt;O que é cache de página?&#10;&lt;/h2&gt;&lt;p&gt;O cache de página (também chamado de &lt;strong&gt;cache de página inteira&lt;/strong&gt; ou &lt;strong&gt;cache de HTML&lt;/strong&gt;) é exatamente o que o nome diz: a página HTML inteira já renderizada é salva como um arquivo estático.&lt;/p&gt;&#10;&lt;p&gt;Em um site realmente estático (HTML + CSS + JS puros), não há necessidade de cache de página, porque todos os arquivos já são estáticos.&#10;Mas, com um CMS como o WordPress, cada requisição normalmente dispara PHP → tema → plugins → consultas ao banco de dados → saída em HTML. Esse processo consome CPU e leva tempo.&lt;/p&gt;&#10;&lt;p&gt;O cache de página inteira pula tudo isso. O primeiro visitante dispara o processo completo de PHP+MySQL, o HTML resultante é salvo, e todos os visitantes seguintes recebem na hora o HTML estático já gerado — sem PHP, sem consultas ao banco de dados, com quase zero de CPU.&lt;/p&gt;&#10;&lt;p&gt;Resultado: carga no servidor de 10 a 100× menor e páginas carregando muito mais rápido.&lt;/p&gt;&#10;&lt;h2 id="o-que-é-cache-de-objetos"&gt;O que é cache de objetos?&#10;&lt;/h2&gt;&lt;p&gt;O cache de objetos guarda os resultados de consultas caras ao banco de dados (ou de qualquer processamento lento) em uma memória rápida (geralmente Redis ou Memcached).&lt;/p&gt;&#10;&lt;p&gt;Pense nele como um intermediário superrápido entre o seu código PHP e o banco de dados.&lt;/p&gt;&#10;&lt;p&gt;Exemplo com o WordPress:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;O WordPress precisa da lista de posts publicados → ele pergunta ao MySQL.&lt;/li&gt;&#10;&lt;li&gt;Primeira requisição: o MySQL faz o trabalho e devolve os dados, e o cache de objetos os salva na RAM.&lt;/li&gt;&#10;&lt;li&gt;As próximas 10 000 requisições: o cache de objetos devolve na hora os mesmos dados direto da memória → o MySQL dorme em paz.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;O cache de objetos é esperto — ele se invalida sozinho quando os dados mudam (por exemplo, quando você publica um post novo).&lt;/p&gt;&#10;&lt;p&gt;Por que você ainda precisa dele, mesmo com o cache de página inteira:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Usuários logados (incluindo o painel do WordPress, as páginas de conta do WooCommerce etc.) não podem ter a página inteira em cache para todo mundo.&lt;/li&gt;&#10;&lt;li&gt;Essas páginas ainda passam pelo PHP e pelo MySQL → o cache de objetos as deixa toleráveis, em vez de dolorosamente lentas.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Cache de objetos + cache de página inteira juntos formam a combinação clássica para tráfego alto.&lt;/p&gt;&#10;&lt;h2 id="o-que-é-cache-de-cdn"&gt;O que é cache de CDN?&#10;&lt;/h2&gt;&lt;p&gt;Uma CDN (Content Delivery Network, ou rede de distribuição de conteúdo) copia seus arquivos estáticos (CSS, JS, imagens, fontes) — e, se você quiser, também suas páginas HTML inteiras — para servidores “PoP” espalhados pelo mundo.&lt;/p&gt;&#10;&lt;p&gt;Sem CDN: um visitante no Japão baixa tudo do seu servidor de origem que fica, digamos, no Brasil → latência alta.&lt;/p&gt;&#10;&lt;p&gt;Com CDN:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Os arquivos estáticos são entregues pelo PoP mais próximo (muitas vezes a menos de 30 ms).&lt;/li&gt;&#10;&lt;li&gt;Se você também ativar o cache de página inteira na CDN, a página HTML inteira também é entregue por esse PoP próximo → o servidor de origem nem é tocado nas páginas em cache.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;É por isso que alguns sites carregam instantaneamente de qualquer lugar do planeta.&lt;/p&gt;&#10;&lt;h2 id="exemplo-real-o-fluxo-de-tráfego-do-wordpress"&gt;Exemplo real: o fluxo de tráfego do WordPress&#10;&lt;/h2&gt;&lt;h3 id="sem-nenhum-cache"&gt;Sem nenhum cache&#10;&lt;/h3&gt;&lt;p&gt;Visitante → servidor web → PHP → dezenas de arquivos de plugins → consultas ao MySQL → HTML → visitante&#10;→ CPU alta, TTFB lento, bate fácil nos limites de recursos.&lt;/p&gt;&#10;&lt;h3 id="só-com-cache-de-página-inteira"&gt;Só com cache de página inteira&#10;&lt;/h3&gt;&lt;p&gt;Primeiro visitante: o mesmo caminho lento de cima (mas o HTML é salvo).&#10;Os próximos 10 000 visitantes: o servidor web entrega na hora o HTML pronto → quase zero de CPU.&lt;/p&gt;&#10;&lt;h3 id="só-com-cache-de-objetos"&gt;Só com cache de objetos&#10;&lt;/h3&gt;&lt;p&gt;Toda requisição ainda roda PHP + plugins, mas as consultas ao banco são respondidas pela RAM em vez do disco → mais rápido que sem cache, mas ainda pesado.&lt;/p&gt;&#10;&lt;h3 id="com-cache-de-página-inteira--cache-de-objetos"&gt;Com cache de página inteira + cache de objetos&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Visitantes anônimos → HTML estático (superrápido, quase sem carga)&lt;/li&gt;&#10;&lt;li&gt;Usuários logados → o PHP roda, mas o cache de objetos deixa as consultas ao banco instantâneas → carga administrável&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="adicione-por-cima-uma-cdn-com-cache-de-página-inteira"&gt;Adicione por cima uma CDN com cache de página inteira&#10;&lt;/h3&gt;&lt;p&gt;Agora até o HTML estático é entregue a partir de pontos de borda no mundo todo. O seu servidor de origem pode basicamente tirar um cochilo até que algo realmente precise de PHP (por exemplo, envio de formulários, invalidação de cache).&lt;/p&gt;&#10;&lt;h2 id="conclusão"&gt;Conclusão&#10;&lt;/h2&gt;&lt;p&gt;Aqui está a hierarquia, do mais impactante para o menos (para a maioria dos sites com CMS):&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Cache de página inteira na CDN&lt;/strong&gt; → o mais rápido para os visitantes, escala para milhões de acessos com quase nenhuma carga na origem.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cache de página inteira na origem&lt;/strong&gt; → ainda é um ganho enorme se você não puder fazer cache na CDN.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cache de objetos (Redis/Memcached)&lt;/strong&gt; → obrigatório para usuários logados, WooCommerce, painéis etc.&lt;/li&gt;&#10;&lt;li&gt;Todo o resto (OPcache, cache do navegador etc.) → bom de ter, geralmente já vem ativado por padrão.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Se você for fazer uma coisa só: ative um cache de página inteira decente (e leve-o para a sua CDN, se possível).&#10;Se você tem tráfego de usuários logados ou uma loja: adicione o cache de objetos com Redis/Memcached.&lt;/p&gt;&#10;&lt;p&gt;É isso — as três camadas de cache que movem basicamente todo site WordPress com tráfego alto no planeta.&lt;/p&gt;&#10;&lt;p&gt;Espero que isso tenha esclarecido as coisas!&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura! 😊&lt;/p&gt;&#10;</description></item><item><title>7 coisas que você deve fazer depois de instalar o Xubuntu 22.04</title><link>https://aquasp.blog/pt/top-7-things-that-you-should-do-after-installing-xubuntu-22-04/</link><pubDate>Mon, 08 Dec 2025 22:24:22 +0000</pubDate><guid>https://aquasp.blog/pt/top-7-things-that-you-should-do-after-installing-xubuntu-22-04/</guid><description>&lt;h2 id="introdução"&gt;Introdução&#10;&lt;/h2&gt;&lt;p&gt;Recentemente fiz uma análise do Pop!_OS 22.04 depois de usá-lo por bastante tempo. Adorei, mas queria experimentar outra coisa a longo prazo e acabei escolhendo o Ubuntu 22.04 — mais especificamente o sabor Xubuntu, com XFCE.&lt;/p&gt;&#10;&lt;p&gt;Sempre que instalo um sistema do zero, faço algumas coisas para garantir que ele fique ágil, rode bem os jogos e (em notebooks) tenha a melhor duração de bateria possível.&lt;/p&gt;&#10;&lt;p&gt;Antes de começar qualquer um dos passos abaixo, recomendo fortemente &lt;strong&gt;fazer uma atualização completa do sistema&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="instale-o-kernel-liquorix"&gt;Instale o kernel Liquorix&#10;&lt;/h2&gt;&lt;p&gt;O Liquorix é um kernel Linux para entusiastas, otimizado para a responsividade no desktop, para trabalhos de áudio/vídeo de baixa latência e para reduzir as variações no tempo de quadro nos jogos.&lt;/p&gt;&#10;&lt;p&gt;O kernel padrão do Ubuntu é de uso geral e precisa funcionar bem tanto em desktops quanto em servidores. O Liquorix pega o mesmo código-fonte do kernel Linux e aplica patches e opções de compilação voltados para o desktop. O resultado é visivelmente mais ágil, principalmente sob carga pesada ou ao alternar rápido entre janelas (alt-tab) nos jogos.&lt;/p&gt;&#10;&lt;p&gt;Instalar no Ubuntu/Debian é um comando só:&lt;/p&gt;&#10;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;curl &amp;#39;https://liquorix.net/install-liquorix.sh&amp;#39; | sudo bash&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Reinicie depois e você já estará usando o kernel novo.&lt;/p&gt;&#10;&lt;h2 id="instale-os-drivers-gráficos-mais-recentes"&gt;Instale os drivers gráficos mais recentes&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Para quem usa Nvidia:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo add-apt-repository ppa:graphics-drivers/ppa&#10;sudo dpkg --add-architecture i386&#10;sudo apt update&#10;sudo apt install -y nvidia-driver-560 libvulkan1 libvulkan1:i386&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Para quem usa AMD ou Intel (PPA do Kisak – Mesa mais recente):&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo add-apt-repository ppa:kisak/kisak-mesa&#10;sudo dpkg --add-architecture i386&#10;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade&#10;sudo apt install libgl1-mesa-dri:i386 mesa-vulkan-drivers mesa-vulkan-drivers:i386&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mesmo em uma versão LTS mais antiga, isso traz os drivers de código aberto mais novos e o suporte a Vulkan.&lt;/p&gt;&#10;&lt;h2 id="reduza-o-swappiness"&gt;Reduza o swappiness&#10;&lt;/h2&gt;&lt;p&gt;O Pop!_OS define vm.swappiness=10 por padrão (o swap só é usado quando a RAM está ~90% cheia). O Ubuntu/Xubuntu vem com 60, o que é agressivo demais para uso em desktop.&lt;/p&gt;&#10;&lt;p&gt;Mude de forma permanente:&lt;/p&gt;&#10;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo nano /etc/sysctl.conf&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adicione esta linha no final:&lt;/p&gt;&#10;&lt;p&gt;text&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;vm.swappiness=10&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Salve e saia. A mudança vale na hora ou na próxima reinicialização.&lt;/p&gt;&#10;&lt;h2 id="instale-utilitários-essenciais"&gt;Instale utilitários essenciais&#10;&lt;/h2&gt;&lt;p&gt;Estas são as ferramentas que instalo em toda instalação nova:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Redshift&lt;/strong&gt; – filtro de luz azul&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Flameshot&lt;/strong&gt; – a melhor ferramenta de captura de tela&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;AppImageLauncher&lt;/strong&gt; – integra AppImages ao seu menu&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Gamemode&lt;/strong&gt; – ganhos enormes de FPS em muitos jogos&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;TLP&lt;/strong&gt; – essencial para notebooks (muitas vezes dobra a duração da bateria)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo apt install redshift flameshot appimagelauncher gamemode tlp tlp-rdw&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(Ative o TLP se precisar: sudo tlp start)&lt;/p&gt;&#10;&lt;h2 id="instale-seus-apps-favoritos-do-dia-a-dia"&gt;Instale seus apps favoritos do dia a dia&#10;&lt;/h2&gt;&lt;p&gt;Minhas escolhas pessoais:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Brave Browser (Chromium focado em privacidade)&lt;/li&gt;&#10;&lt;li&gt;VLC (de preferência via AppImage/Flatpak/Snap, para evitar dependências pesadas do Qt no XFCE)&lt;/li&gt;&#10;&lt;li&gt;LibreOffice&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="crie-aliases-úteis"&gt;Crie aliases úteis&#10;&lt;/h2&gt;&lt;p&gt;Abra o seu .bashrc:&lt;/p&gt;&#10;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;nano ~/.bashrc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adicione alguns aliases úteis no final, por exemplo:&lt;/p&gt;&#10;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;alias apply_filter=&amp;#39;redshift -O 1900&amp;#39;&#10;alias update=&amp;#39;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&amp;#39;&#10;alias please=&amp;#39;sudo $(history -p !!)&amp;#39; # rerun last command with sudo&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Recarregue o arquivo:&lt;/p&gt;&#10;&lt;p&gt;Bash&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;source ~/.bashrc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="personalize-a-aparência-opcional"&gt;Personalize a aparência (opcional)&#10;&lt;/h2&gt;&lt;p&gt;O Xubuntu + XFCE é extremamente personalizável. Uso uma configuração bem minimalista e controlo quase tudo com atalhos de teclado. Você pode configurá-los em &lt;strong&gt;Configurações → Gerenciador de janelas&lt;/strong&gt; e &lt;strong&gt;Configurações → Teclado → Atalhos de aplicativos&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h2 id="conclusão"&gt;Conclusão&#10;&lt;/h2&gt;&lt;p&gt;Os três maiores ganhos de desempenho — kernel Liquorix, drivers gráficos mais recentes e swappiness baixo — fazem uma diferença enorme. Exemplo real: &lt;em&gt;Life is Strange: True Colors&lt;/em&gt; saltou de ~23 FPS com travadas nas configurações padrão para 40+ FPS estáveis depois de aplicar essas mudanças.&lt;/p&gt;&#10;&lt;p&gt;Se você está tendo lentidões ou travamentos aleatórios no Xubuntu/Ubuntu, tente estes passos primeiro. Eles resolvem uma quantidade surpreendente de problemas.&lt;/p&gt;&#10;&lt;p&gt;Obrigado pela leitura!&lt;/p&gt;&#10;</description></item></channel></rss>