SSD Nodes Learn Hosting plans →
Guias Matt ConnorPor Matt Connor · Atualizado 2026-08-29

Searx ou SearXNG: qual instalar hoje?

O Searx não recebe commits desde abril de 2023. Veja como confirmar o abandono, por que instalar SearXNG e o que muda na configuração da instância.

Searx ou SearXNG: qual deve instalar?

Searx e SearXNG são dois projetos diferentes com nomes quase iguais, e apenas um deles ainda recebe correções. Instale o SearXNG. O Searx original não recebe nenhum commit de código desde abril de 2023, e o próprio README resume a situação numa linha: "Searx já não é mantido."

Isto cria um problema prático, não filosófico. Os dois projetos partilham uma captura de ecrã, a maior parte de um ficheiro de configuração e metade do nome, por isso um guia escrito para um parece aplicar-se ao outro. Não se aplica. O ficheiro de definições está noutro local, a proteção contra bots é nova e o nome do pacote desapareceu das versões atuais do Ubuntu. A seguir, apresentamos a diferença entre os projetos, os comandos para verificar o estado por si mesmo e a lista do que mudou para quem está a configurar uma instância.

O que é o Searx e de onde veio o SearXNG

O Searx é um metamoto de pesquisa. Não mantém um índice próprio. Recebe a sua consulta, encaminha-a para outros serviços de pesquisa, como Bing, DuckDuckGo ou Wikipedia, e depois combina as respostas numa única página de resultados. A vantagem é que esses serviços veem o endereço do servidor em vez do seu. O custo é a manutenção. Cada motor é um pequeno componente de código que analisa o HTML ou a API de outra entidade. Por isso, um motor deixa de funcionar sempre que esse serviço upstream muda. Um metamoto de pesquisa só é tão saudável quanto as pessoas que corrigem os seus módulos de motores.

O repositório searx foi criado em outubro de 2013. Em abril de 2021, um antigo maintainer iniciou o SearXNG como um fork desse projeto. O "NG" significa next generation. O README do próprio Searx descreve os dois projetos lado a lado, e essa descrição continua a ser o resumo mais claro da separação:

O SearxNG é um fork do searx, criado por um antigo maintainer do searx.
O SearxNG tem rolling releases, dependências atualizadas com maior frequência e motores corrigidos mais rapidamente.

A divergência que esteve na origem do fork estava relacionada com os diagnósticos. O Searx considerava que uma instância não devia armazenar dados de utilização, e as suas predefinições deixam isso explícito: enable_stats: False # activate /stats page - note: it may leak usage data. O SearXNG tomou a decisão oposta e inclui enable_metrics: true nas suas predefinições. Essas métricas preenchem as barras de tempo de resposta e as páginas de erro, que facilitam encontrar e corrigir um motor avariado. As duas posições são defensáveis. Apenas uma delas continuou a lançar código.

O Searx morreu? Como verificar por si próprio

“Mort[o]” não é um estado que o GitHub reporte, por isso leia os dois sinais disponíveis e tire a sua conclusão. O primeiro é saber se o repositório está arquivado e quando recebeu o último push.

curl -s https://api.github.com/repos/searx/searx | jq -r '.archived, .pushed_at'
curl -s https://api.github.com/repos/searxng/searxng | jq -r '.archived, .pushed_at'

Em 22 August 2026, o primeiro comando imprime false e 2026-05-14T10:02:22Z. O segundo imprime false e um timestamp do dia em que o executar. Repare no primeiro valor. O repositório searx não está arquivado e ninguém bloqueou o acesso, por isso esta pergunta continua a surgir.

pushed_at é, por si só, um sinal fraco, porque muda quando há um push para qualquer branch, incluindo uma alteração de uma linha na documentação. Leia antes a lista de commits.

curl -s 'https://api.github.com/repos/searx/searx/commits?per_page=5' \
  | jq -r '.[] | .commit.committer.date[:10] + "  " + (.commit.message | split("\n")[0])'

Em August 2026, o resultado é:

2026-05-14  [doc] add hister reference
2023-09-07  Searx is no longer maintained
2023-04-05  Fix quoting issue in search_operator plugin (#3479)
2023-04-04  Bump pallets-sphinx-themes from 2.0.2 to 2.0.3 (#3450)
2023-04-04  Bump selenium from 4.7.2 to 4.8.3 (#3490)

Leia de baixo para cima. O trabalho normal termina em April 2023. O commit de September 2023 corresponde à inclusão do aviso no README pelos maintainers. O único commit posterior é de documentação, porque o autor original passou a trabalhar no Hister, uma ferramenta de pesquisa que indexa as páginas e os ficheiros que escolher, em vez de consultar outros motores. É uma ideia diferente e útil se aquilo que pretende é um motor de pesquisa pessoal sobre o seu próprio conteúdo.

O segundo sinal é o empacotamento, que é aquilo de que a maioria dos tutoriais antigos depende silenciosamente.

  • O PyPI contém uma searx release, a versão 0.17.0, carregada em July 2020. pip install searx tem sucesso e fornece código de nove meses antes de o fork existir.
  • O Debian disponibilizou o searx 1.1.0 no Debian 12 (bookworm) e continua a incluí-lo em unstable. O pacote foi removido de testing em October 2023, por isso o Debian 13 (trixie) não tem qualquer pacote searx.
  • O Ubuntu disponibilizou-o pela última vez na versão 22.04, com a versão 1.0.0. No Ubuntu 24.04, sudo apt install searx termina com E: Unable to locate package searx.
  • O searx.space, o diretório de instâncias públicas para o qual o projeto sempre encaminhou os utilizadores, lista agora instâncias SearXNG.

Este é o estado real. O código é público, continua a funcionar e pode cloná-lo e iniciá-lo hoje. O que não existe são correções para os motores nem atualizações de segurança, e esse é o objetivo principal de um motor de metapesquisa. Os motores degradam-se segundo o calendário de terceiros. Uma instância sem manutenção devolve menos resultados a cada mês sem que ninguém altere o servidor.

O que o fork alterou numa nova instância

O ficheiro de definições mudou e agora é uma sobreposição

No Searx, editava searx/settings.yml dentro da árvore do código-fonte. No SearXNG, o ficheiro fica em /etc/searxng/settings.yml, e o processo encontra-o através da variável de ambiente SEARXNG_SETTINGS_PATH. O modelo que o instalador copia para esse local é curto:

use_default_settings: true

general:
  debug: false
  instance_name: "SearXNG"

search:
  safe_search: 2
  autocomplete: 'duckduckgo'
  formats:
    - html

server:
  # Is overwritten by ${SEARXNG_SECRET}
  secret_key: "ultrasecretkey"
  limiter: true
  image_proxy: true

valkey:
  # URL to connect valkey database. Is overwritten by ${SEARXNG_VALKEY_URL}.
  url: valkey://localhost:6379/0

use_default_settings: true é a linha que altera a forma de trabalhar. Com ela, o ficheiro contém apenas sobreposições, e cada chave omitida usa os valores predefinidos incluídos no pacote. Sem ela, o ficheiro tem de descrever toda a configuração, mecanismo a mecanismo. É assim que uma instância pode iniciar sem erros e não encontrar nada. Um ficheiro de definições antigo do Searx colado neste caminho é uma configuração completa com nomes de chaves diferentes. Por isso, segue a segunda abordagem e falha.

A chave secreta impede o processo de iniciar

sudo -H sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" \
              "/etc/searxng/settings.yml"

Execute esse comando uma vez, depois de copiar o modelo. Se o omitir, o SearXNG regista uma linha e termina com o estado 1, porque webapp.py compara a chave com o valor do modelo antes de disponibilizar qualquer serviço:

server.secret_key is not changed. Please use something else instead of ultrasecretkey.

A verificação é ignorada quando general.debug é true. Assim, uma instância pode funcionar numa sessão de depuração e depois recusar iniciar no systemd ou num contentor. Um contentor que reinicia continuamente com essa linha em docker compose logs está a ser afetado por esta verificação, não por uma imagem danificada.

O limitador é novo e precisa de Valkey

O Searx não tinha limitação de taxa dentro da aplicação. As instâncias públicas do Searx colocavam serviços separados à sua frente: filtron para filtrar pedidos e morty para fazer proxy do conteúdo dos resultados. Ambos os repositórios receberam o último commit em 2023.

O SearXNG trata dessa função internamente. A limitação de taxa e a deteção de bots são fornecidas pelo limitador, ativado com server.limiter. Nos valores predefinidos distribuídos, está definido como false, e no modelo do instalador como true. Precisa de uma base de dados Valkey para guardar os contadores. Valkey é um fork do Redis, e o Ubuntu 24.04 disponibiliza-o em pacotes:

sudo apt install -y valkey-server
server:
  limiter: true

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

Os guias escritos antes dessa alteração de nome configuram um bloco redis:. Por isso, copie o nome da chave da documentação atual do limitador. O ajuste fino fica num segundo ficheiro, /etc/searxng/limiter.toml, e server.public_instance: true ativa a deteção de bots mais rigorosa necessária numa instância pública, incluindo o método do token de ligação. O resultado visível é que alguns pedidos recebem HTTP 429 em vez de resultados. Isto também pode acontecer aos seus próprios pedidos se usar scripts contra a instância. Esse comportamento tem uma página própria aqui: porque uma instância SearXNG responde 429 Too Many Requests.

Os mecanismos suspendem-se e os tempos limite são longos

Quando um serviço upstream responde com um CAPTCHA ou uma página de limitação de taxa, o SearXNG gera uma exceção tipada e deixa de consultar esse mecanismo durante um período definido, em vez de repetir pedidos até ser bloqueado. Os valores predefinidos estão em searx/settings.yml, sob search.suspended_times. Estes são os 6 valores publicados em agosto de 2026:

ChartSearXNG default engine suspension times, in seconds
The data behind this chart
[
  {
    "label": "SearxEngineAccessDenied",
    "suspend_seconds": "180"
  },
  {
    "label": "SearxEngineCaptcha",
    "suspend_seconds": "3,600"
  },
  {
    "label": "SearxEngineTooManyRequests",
    "suspend_seconds": "180"
  },
  {
    "label": "cf_SearxEngineCaptcha",
    "suspend_seconds": "1,296,000"
  },
  {
    "label": "cf_SearxEngineAccessDenied",
    "suspend_seconds": "86,400"
  },
  {
    "label": "recaptcha_SearxEngineCaptcha",
    "suspend_seconds": "604,800"
  }
]

Uma resposta simples de acesso negado suspende esse mecanismo durante 180 segundos. Um CAPTCHA suspende-o durante 3,600 segundos. Um CAPTCHA do Cloudflare suspende-o durante 1,296,000 segundos, ou seja, quinze dias, e um Google reCAPTCHA durante 604,800 segundos, ou seja, uma semana. Os valores longos são intencionais. Voltar a fazer pedidos depois de um serviço já ter sinalizado o endereço pode fazer com que o IP da instância seja bloqueado permanentemente.

Enquanto um mecanismo está suspenso, a página de resultados ignora-o e apresenta-o no bloco lateral intitulado "Mensagens dos mecanismos de pesquisa", e /stats/errors lista o que falhou. Uma instância nova que apresenta poucos resultados está normalmente a mostrar este estado, não uma instalação danificada.

A API JSON está desativada por predefinição

O valor predefinido distribuído é formats: [html] e não há mais nada configurado. Por isso, a API que todos os scripts pretendem usar fica fechada até ser ativada.

curl -s -o /dev/null -w '%{http_code}\n' \
  'http://127.0.0.1:8888/search?q=test&format=json'

Esse comando apresenta 403, porque a rota de pesquisa chama flask.abort(403) quando o formato solicitado não está listado em search.formats. Adicione o formato e reinicie o serviço:

search:
  formats:
    - html
    - json

O ficheiro de definições do searx não tinha nenhuma chave formats. Por isso, a saída JSON estava simplesmente disponível quando solicitada. Todos os scripts e exemplos desse período partem do mesmo pressuposto, e o modo de falha é um 403 sem explicação. Se estiver a integrar uma instância em ferramentas, dar a um agente um endpoint SearXNG para pesquisar começa por esta definição.

Por que os tutoriais copiados do Searx falham

Cada uma destas linhas aparece em guias que continuam bem posicionados nos resultados de pesquisa, mas falha ou induz em erro numa instalação atual.

  • sudo apt install searx no Ubuntu 24.04 para em E: Unable to locate package searx, porque o pacote foi disponibilizado pela última vez no 22.04.
  • pip install searx funciona e instala a versão 0.17.0, de julho de 2020. Nada avisa que essa versão é anterior ao fork.
  • git clone https://github.com/asciimoo/searx continua a funcionar, porque o GitHub redireciona o nome antigo do proprietário e fornece a árvore de abril de 2023.
  • Os passos que editam searx/settings.yml na árvore de código-fonte não alteram nada no SearXNG, que lê /etc/searxng/settings.yml.
  • Os passos que instalam filtron ou morty estão a reconstruir componentes que o SearXNG já inclui.
  • Um URL redis: para o limitador está uma renomeação atrás da chave valkey: atual.

Os guias do SearXNG também ficam desatualizados, e o URL de clonagem é a forma mais rápida de identificar a idade de um guia. Os ficheiros Compose ficavam anteriormente num repositório searxng-docker separado. Esse repositório foi arquivado em março de 2026 e os ficheiros foram movidos para container/ no repositório principal. O início rápido atual para contentores, presente na documentação, é:

mkdir -p ./searxng/core-config/
cd ./searxng/
curl -fsSL \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/docker-compose.yml \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/.env.example
cp -i .env.example .env
nano .env
docker compose up -d

Edite .env antes do último comando. A imagem mapeia variáveis de ambiente para chaves de configuração, por isso SEARXNG_SECRET torna-se server.secret_key e SEARXNG_BASE_URL torna-se server.base_url. A instalação automatizada no host segue um caminho diferente, mas produz o mesmo resultado:

git clone https://github.com/searxng/searxng.git searxng
cd searxng
sudo -H ./utils/searxng.sh install all

Isto cria o utilizador searxng, o ambiente virtual em /usr/local/searxng e o serviço uWSGI, que é a configuração de referência na documentação do SearXNG. O guia mais longo para esse caminho está em instalar o SearXNG no seu próprio VPS.

Instância pública ou a sua própria instância

Uma instância pública é um servidor de outra pessoa que termina a sua ligação TLS (transport layer security), pelo que o software nesse servidor lê a sua consulta em texto simples. A documentação do próprio SearXNG apresenta claramente a questão da confiança: tem de confiar no administrador e não pode saber se os pedidos são registados, agregados ou enviados a terceiros. A lista visível é curta e completa. A infraestrutura do operador pode ver o texto da consulta, a hora, o endereço IP de onde o pedido chega, o user agent do navegador e o cookie de preferências que contém as suas definições. O operador também controla o código, pelo que qualquer patch aplicado é executado em todas as pesquisas que fizer nessa instância.

Uma predefinição facilita o registo acidental. O Searx enviava as pesquisas como POST. O SearXNG disponibiliza method: "GET", com o comentário de que POST mantém as consultas fora do histórico do navegador, mas causa problemas de usabilidade. Com GET, a consulta fica na linha do pedido, pelo que é gravada por predefinição no log de acesso do reverse proxy e no histórico do navegador. Este é o comportamento normal de um servidor Web. É importante saber isto antes de escolher em que servidor a consulta será processada.

Executar a sua própria instância transfere a confiança, em vez de a eliminar. Controla o código e os logs. Se preferir não publicar um hostname ou um certificado TLS para uma máquina usada por apenas uma pessoa, aceder-lhe através de um serviço onion v3 mantém a instância fora do DNS público, sem deixar de permitir o acesso a partir de qualquer lugar. Em contrapartida, os motores upstream veem um único endereço para todas as suas pesquisas. Numa instância usada por uma só pessoa, cada consulta pode ser associada a si, em vez de se misturar com as consultas de um grupo de utilizadores. Uma instância pública com muitos utilizadores oferece esse grupo e retira-lhe os logs. Escolha a propriedade que considera mais importante. Se quiser primeiro consultar a lista completa de riscos, se é seguro utilizar o SearXNG explica esses riscos.

Uma nota prática sobre um VPS. Os intervalos de endereços de datacenters são sinalizados mais rapidamente do que as ligações domésticas. Por isso, uma instância nova encontra CAPTCHAs em alguns motores logo nas primeiras pesquisas. Esse é o comportamento de suspensão descrito acima, e não uma configuração incorreta.

Se já executa uma instância do Searx

Nada deixa de funcionar no dia em que lê isto. O servidor continua a funcionar até uma alteração a montante voltar a quebrar outro motor. Depois, permanece avariado. Planeie a migração e não reutilize o ficheiro de configuração. Comece pelo modelo do SearXNG. Em seguida, adicione apenas o que alterou deliberadamente: o nome da instância, safe_search, os motores que ativou ou desativou pelo nome e as predefinições da interface. Os nomes e as opções dos motores foram alterados no fork. Verifique cada um na documentação atual, em vez de presumir que a chave ainda existe. As regras do Filtron e um URL do morty não têm equivalente, porque essas funções foram integradas na aplicação.

Execute a nova instância noutra porta enquanto a antiga ainda está ativa. Ela está a funcionar quando a página inicial devolve 200, uma pesquisa devolve resultados de mais de um motor e /stats/errors está vazio ou lista falhas que compreende. Em seguida, altere o reverse proxy para a nova instância e pare o serviço antigo.

FAQ

O Searx está descontinuado em 2026?

O repositório não está arquivado, por isso nada impede que o clone, mas o projeto não é mantido. O último commit de código foi feito em abril de 2023, e o README contém a frase "Searx is no longer maintained." Confirme isso com curl -s https://api.github.com/repos/searx/searx | jq -r '.pushed_at' e leia as mensagens dos commits recentes, porque uma data de push isolada pode resultar apenas de uma alteração na documentação. Num motor de metapesquisa, não ser mantido significa que os resultados pioram por si próprios, porque cada módulo de motor depende de um site upstream que continua a mudar.

Ainda posso instalar o Searx com apt ou pip?

Não nos sistemas atuais, e onde ainda é possível isso não é útil. O Ubuntu empacotou o searx pela última vez na versão 22.04, com a versão 1.0.0, por isso sudo apt install searx em 24.04 devolve E: Unable to locate package searx. O Debian incluiu a versão 1.1.0 no Debian 12 e removeu-a do testing em outubro de 2023, por isso o Debian 13 não tem esse pacote. O PyPI ainda disponibiliza a versão 0.17.0, de julho de 2020, que é mais antiga do que o próprio fork. Instale antes o SearXNG.

O meu antigo searx settings.yml funciona no SearXNG?

Não. Copie os valores, não o ficheiro. O SearXNG lê /etc/searxng/settings.yml e espera use_default_settings: true no início, por isso o seu ficheiro funciona como uma camada sobre os valores predefinidos fornecidos. Um ficheiro antigo do searx é uma configuração completa com nomes de chaves diferentes e não tem limiter, nem o bloco valkey, nem a lista formats. Comece pelo modelo em utils/templates/etc/searxng/settings.yml e volte a adicionar as suas alterações uma de cada vez.

Porque é que a minha própria instância SearXNG devolve menos resultados do que uma instância pública?

Alguns motores estão suspensos. Quando um motor responde com um CAPTCHA ou uma página de limite de pedidos, o SearXNG deixa de o consultar durante um período fixo: de 180 segundos para uma recusa simples até 1,296,000 segundos para um CAPTCHA do Cloudflare. A página de resultados apresenta esta informação em "Mensagens dos motores de pesquisa", e /stats/errors lista as falhas com os respetivos motivos. Os endereços de centros de dados são sinalizados mais cedo do que as ligações domésticas, por isso uma nova instância num VPS deteta o problema rapidamente.

Devo usar uma instância pública do SearXNG ou executar a minha própria?

Execute a sua própria instância se quiser controlar o código e os logs, e aceitar que os motores upstream passam a ver um único endereço para todas as suas pesquisas. Use uma instância pública se for mais importante misturar as suas consultas com as de outras pessoas do que saber o que é registado. Numa instância pública, o operador pode ver o texto da consulta, a hora, o seu endereço IP e o seu user agent, além de poder alterar o código quando quiser. Não é possível verificar externamente uma política de registo declarada.