Tropic Host

SearXNG: o que é e como instalar seu próprio mecanismo de busca em um VPS

6 min de leitura
Tropic
SearXNG: o que é e como instalar seu próprio mecanismo de busca em um VPS

SearXNG: seu próprio mecanismo de busca sem rastreamento em um VPS

Um mecanismo de busca comum pode associar uma consulta ao endereço IP, aos cookies e ao histórico de atividades. O SearXNG muda o caminho: o navegador acessa sua instância, que consulta vários mecanismos de busca externos e reúne as respostas em uma única página.

As fontes externas veem o endereço do servidor SearXNG, e não os cookies do usuário. O próprio serviço não cria um perfil publicitário. No entanto, isso não representa anonimato total: o proprietário de uma instância pública pode tecnicamente manter logs e, depois que você abre um link, o site de destino volta a interagir diretamente com o navegador.

Vamos conhecer os recursos do SearXNG e instalar nossa própria instância em um VPS com HTTPS e proteção por senha.

O que é o SearXNG e como ele funciona

O SearXNG é um metabuscador gratuito e de código aberto. Ele não possui um índice próprio de sites: o serviço obtém resultados de mecanismos de busca configurados e de fontes especializadas, padroniza esses resultados e os exibe em uma única interface.

Navegador → seu SearXNG → mecanismos de busca
                            ↓
                   resultados combinados

A cada consulta, o SearXNG:

  1. identifica a categoria da busca: web, imagens, notícias, vídeos ou outra;
  2. consulta as fontes selecionadas em nome do servidor;
  3. não envia a elas os cookies do usuário e usa um perfil de navegador aleatório nas solicitações de saída;
  4. reúne as respostas em uma única página de resultados.

A velocidade depende dos sistemas externos: eles podem responder lentamente, exibir um CAPTCHA ou bloquear o endereço IP. O SearXNG é uma camada intermediária controlável, e não um índice autônomo.

Por que o SearXNG é mais interessante do que um único mecanismo de busca

Diferentes fontes em uma única página de resultados

É possível combinar mecanismos de busca gerais com fontes especializadas: enciclopédias, mapas, publicações científicas, repositórios, notícias ou catálogos de imagens. Isso ajuda quando uma página de resultados comum está sobrecarregada de páginas de SEO ou encontra com dificuldade materiais de nicho.

No momento em que este artigo foi preparado, a documentação listava 272 integrações, das quais 83 estavam ativadas por padrão. Isso não significa que todas sejam igualmente estáveis.

O conjunto depende da configuração. Algumas fontes estáveis costumam funcionar mais rápido do que todas as opções disponíveis ativadas ao mesmo tempo.

Comandos rápidos

Atalhos permitem selecionar temporariamente um mecanismo, uma categoria ou um idioma:

!wp docker compose       — pesquisar na Wikipédia
!images aurora boreal    — pesquisar imagens
:pt !wp servidor proxy   — pesquisar em português na Wikipédia

O comando !! redireciona o usuário diretamente para um mecanismo de busca externo. Nesse modo, a proteção do SearXNG deixa de se aplicar.

Busca para o navegador e para suas próprias ferramentas

O SearXNG oferece suporte ao OpenSearch, portanto pode ser definido como mecanismo de busca padrão no navegador. Também há uma API HTTP com respostas em JSON, CSV ou RSS, caso o administrador tenha permitido os formatos necessários.

Uma única instância pode se tornar o backend de busca de um painel interno, bot, script de pesquisa ou assistente de IA local. A API deve ser exposta somente depois da configuração de autenticação e limites de solicitações.

Qual é o nível de privacidade do SearXNG

O que ele fazO que ele não faz
Não envia os cookies do navegador aos mecanismos de busca externosNão oferece anonimato total
Oculta o IP do usuário atrás do IP do servidorNão protege o usuário depois que ele abre o site encontrado
Remove publicidade de terceiros e alguns parâmetros de rastreamentoNão garante que o proprietário de um servidor alheio não mantenha logs
Pode encaminhar imagens por proxyNão substitui VPN, Tor nem as proteções do navegador

Uma instância pública é prática para conhecer o serviço, mas é necessário confiar no administrador, e um endereço IP compartilhado recebe restrições com maior frequência.

Seu próprio servidor oferece controle sobre logs, fontes e acesso, mas não torna o navegador anônimo.

Instância pública, servidor doméstico ou VPS

OpçãoVantagensLimitações
PúblicaNão é necessário instalar nadaConfiança no proprietário, sobrecarga, CAPTCHA
Servidor domésticoControle total sem alugar um VPSO dispositivo precisa funcionar continuamente; o acesso externo é mais difícil de configurar
VPS próprioOperação 24 horas por dia, domínio, HTTPS, acesso de diferentes dispositivosÉ necessário atualizar os contêineres e monitorar a segurança

Uma instância própria do SearXNG é útil para uma família, equipe, desenvolvedor ou ferramentas locais de IA. Para buscas ocasionais, uma instância pública é mais simples.

De que VPS o SearXNG precisa

A carga depende do número de usuários, das fontes e das consultas simultâneas. Configurações iniciais práticas:

CenárioCPURAMArmazenamento
Um usuário1 vCPU1 GB10 GB
Família ou pequena equipe2 vCPU2 GB20 GB
API e serviços adicionais2–4 vCPUa partir de 4 GBa partir de 30 GB

Não é necessário um disco grande. A qualidade da rede, um endereço IP estável e uma reserva de RAM são mais importantes.

Um VPS Linux da tropic.host é adequado para esse cenário: você pode começar com uma configuração pequena e aumentar os recursos à medida que adiciona usuários ou acesso à API. Ao escolher um plano, é mais útil investir em RAM e qualidade de rede do que pagar a mais por capacidade de armazenamento.

Como instalar o SearXNG em um VPS com Docker Compose

Neste exemplo, usaremos Ubuntu 24.04 LTS, search.example.com, Valkey e Caddy. Aponte o registro DNS A para o servidor e abra as portas 80 e 443.

1. Instale o Docker e crie um diretório

sudo apt update
sudo apt install -y docker.io docker-compose-v2 openssl
sudo systemctl enable --now docker

sudo mkdir -p /opt/searxng/searxng
cd /opt/searxng

Crie um arquivo .env com o domínio e um segredo aleatório:

printf 'SEARXNG_HOSTNAME=search.example.com\nSEARXNG_SECRET=%s\n' \
  "$(openssl rand -hex 32)" | sudo tee .env >/dev/null
sudo chmod 600 .env

2. Crie docker-compose.yml

name: searxng

services:
  searxng:
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    environment:
      SEARXNG_BASE_URL: https://${SEARXNG_HOSTNAME}/
      SEARXNG_SECRET: ${SEARXNG_SECRET}
      SEARXNG_VALKEY_URL: valkey://valkey:6379/0
    volumes:
      - ./searxng:/etc/searxng:rw
      - searxng-cache:/var/cache/searxng
    depends_on: [valkey]

  valkey:
    image: docker.io/valkey/valkey:9-alpine
    restart: unless-stopped
    command: valkey-server --save 30 1 --loglevel warning
    volumes:
      - valkey-data:/data

  caddy:
    image: docker.io/caddy:2-alpine
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    environment:
      SEARXNG_HOSTNAME: ${SEARXNG_HOSTNAME}
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data
      - caddy-config:/config
    depends_on: [searxng]

volumes:
  searxng-cache:
  valkey-data:
  caddy-data:
  caddy-config:

3. Configure o SearXNG

Crie searxng/settings.yml:

use_default_settings: true

general:
  instance_name: "Private Search"

search:
  safe_search: 1
  autocomplete: ""
  formats: [html]

server:
  limiter: true
  image_proxy: true

valkey:
  url: valkey://valkey:6379/0

Crie searxng/limiter.toml:

[botdetection]
trusted_proxies = [
  "127.0.0.0/8",
  "::1",
  "172.16.0.0/12",
]

O limiter reduz o risco de bots sobrecarregarem a instância e fazerem com que os mecanismos de busca externos restrinjam seu endereço IP mais rapidamente.

4. Adicione uma senha e HTTPS

Gere o hash de uma senha forte:

sudo docker run --rm caddy:2-alpine \
  caddy hash-password --plaintext 'SUBSTITUA_A_SENHA'

Insira o hash obtido no arquivo Caddyfile:

{$SEARXNG_HOSTNAME} {
    basic_auth {
        searchuser INSIRA_O_HASH
    }

    reverse_proxy searxng:8080 {
        header_up X-Real-IP {remote_host}
    }
}

O Caddy armazena o hash, e não a senha em texto simples. Em vez do Basic Auth, o serviço também pode ficar restrito a uma VPN.

5. Inicie os contêineres

sudo docker compose config
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

Abra https://search.example.com. O Caddy obterá automaticamente um certificado TLS e, em seguida, o navegador solicitará o nome de usuário searchuser e a senha. Os logs do SearXNG estão disponíveis com o comando:

sudo docker compose logs -f searxng

O que configurar depois da inicialização

Mantenha apenas as fontes úteis, escolha o idioma e a configuração do SafeSearch e, depois, adicione o SearXNG ao navegador por meio do OpenSearch. Para atualizar, basta executar:

sudo docker compose pull
sudo docker compose up -d

Faça backup de .env, Caddyfile e do diretório searxng. Ative a API JSON somente quando necessário e não a deixe sem senha nem limitação da frequência de solicitações.

Erros comuns

ErroConsequênciaSolução
Abrir a instância para todosBots geram carga e o IP recebe restrições com maior frequênciaUsar senha, VPN ou login único
Ativar fontes demaisResultados lentos e timeoutsManter apenas alguns mecanismos estáveis
Considerar o SearXNG um índice próprioParte dos resultados desaparece quando os sistemas externos falhamLevar em conta a dependência das fontes
Esperar anonimato totalO site encontrado ainda pode rastrear o navegadorUsar proteção do navegador, VPN ou Tor
Executar sem HTTPSConsultas e senha são transmitidas de forma inseguraUsar um proxy reverso com TLS

Conclusão

O SearXNG reúne diferentes fontes em uma única interface, reduz a personalização e oferece uma busca unificada ao navegador, a scripts ou a uma IA local. Uma instância pública é suficiente para conhecer o serviço. Para uso contínuo, é melhor ter seu próprio servidor com HTTPS, autenticação, limiter e um pequeno conjunto de fontes estáveis.

É possível começar com 1 GB de RAM. Aumente os recursos conforme crescer o número de usuários, ao ativar a API ou ao executar contêineres adicionais.

FAQ

O SearXNG é totalmente anônimo?

Não. Ele oculta alguns dados dos mecanismos de busca externos, mas o administrador da instância pode manter logs. Depois que você abre um site, os mecanismos de rastreamento desse site passam a valer.

O SearXNG é melhor que o Google?

Ele resolve outro problema. O Google geralmente é mais rápido e personaliza mais os resultados. O SearXNG oferece maior controle, permite combinar fontes e depende menos do perfil do usuário.

É possível usar o SearXNG sem um VPS?

Sim. Você pode usar uma instância pública, um computador doméstico, um NAS ou um minisservidor. Um VPS é necessário para acesso 24 horas por dia a partir de qualquer rede.

Quanta RAM é necessária?

Para um usuário, é razoável começar com 1 GB. Para uma família, equipe, API ou contêineres adicionais, é melhor ter de 2 a 4 GB.

É possível conectar o SearXNG a um navegador ou a uma IA?

Sim. O navegador pode usar o OpenSearch, enquanto programas podem usar a API HTTP. O acesso à API deve ser protegido por autenticação e por um limiter.