<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VPS &amp; Security on Blog do Aquasp</title><link>https://aquasp.blog/pt/tag/vps-security/</link><description>Recent content in VPS &amp; Security 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/vps-security/index.xml" rel="self" type="application/rss+xml"/><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 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 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>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></channel></rss>