Índice do diárioDockup / nota de campo
Note / self-host-searxng

Como fazer self-host do SearXNG em 2026: Search API, limites de requisições e TLS

Faça self-host do SearXNG com portas corretas, armazenamento persistente, HTTPS, secrets, backups e verificações de upgrade. Saiba como corrigir situações em que os engines bloqueiam o IP do servidor.

A maioria das instruções de instalação do SearXNG termina no primeiro carregamento da página. Isso é cedo demais: os engines podem bloquear o IP do servidor ou os formatos podem omitir json para clientes de API. Um teste de produção útil é mais exigente — enviar pesquisas em HTML e JSON, confirmar que vários engines contribuem com resultados e acionar o limitador configurado a partir de um cliente de teste.

O papel do SearXNG é simples: um metasearch engine focado em privacidade e uma search API. O seu limite operacional inclui mais do que o processo web, portanto a dependência, o estado armazenado e a rota pública precisam ser explicitamente identificados antes da chegada de dados reais.

Defina primeiro o que significa sucesso para o SearXNG

Não permita que a imagem do SearXNG escolha acidentalmente a arquitetura de produção. A imagem fornece um processo na porta 8080; o armazenamento, o routing e os requisitos externos ainda precisam de ciclos de vida definidos de forma deliberada. O contrato de rede do SearXNG é Redis ou Valkey quando as funcionalidades de limitação e deteção de bots estão ativadas. Mantenha os endpoints privados no DNS interno, permita apenas as chamadas de saída necessárias e forneça ao SearXNG uma credencial de serviço com escopo limitado.

A implementação está pronta para testes mais aprofundados quando consegue enviar pesquisas em HTML e JSON, confirmar que vários engines contribuem com resultados e acionar o limitador configurado a partir de um cliente de teste. Acompanhe a transação nos logs e observe a latência dos engines upstream, as queries simultâneas, o parsing dos resultados e os bloqueios aplicados ao IP do servidor. Essas observações mostram se a topologia atual isola o componente correto.

Separe os containers substituíveis dos dados duradouros

Crie um recovery manifest para o SearXNG: settings.yml, a configuração do limitador e quaisquer plugins locais. Monte /etc/searxng antes do bootstrap, grave dados de exemplo inofensivos e substitua o container para provar que esse caminho é realmente persistente. Verifique agora as permissões e o espaço livre, porque um caminho montado, mas sem permissão de escrita, comporta-se exatamente como se não houvesse persistência.

Faça o backup para um failure domain separado do servidor em execução. Recrie o SearXNG a partir da imagem fixada e verifique se os engines personalizados, os formatos, as regras do limitador e as configurações de proxy são recuperados, e se uma query conhecida produz resultados de vários engines. O guia de volumes persistentes ajuda a transformar esse exercício numa política de snapshots e retenção.

Feche o acesso temporário de configuração

As credenciais de bootstrap são temporárias; o trust model é permanente. No SearXNG, tenha atenção para não enviar o secret_key de exemplo incluído na imagem nem desativar os controlos de rate em um endpoint público. Mantenha uma secret key não padrão, ative os controlos contra abuso e exponha JSON apenas quando um agent ou uma aplicação precisar disso.

Trate SEARXNG_SECRET de acordo com o seu papel no SearXNG: mantenha os valores sensíveis fora do Git, documente os efeitos da rotação e nunca substitua um exemplo público em produção. Execute a imagem sem capabilities Linux desnecessárias e exponha apenas a rota pública da aplicação. Mantenha a atividade administrativa visível sem registar valores secretos.

Registe uma implementação do SearXNG validada

Transforme o smoke test do SearXNG num comando de release repetível ou num runbook curto. O resultado deve demonstrar o seguinte: enviar pesquisas em HTML e JSON, confirmar que vários engines contribuem com resultados e acionar o limitador configurado a partir de um cliente de teste. Registe com o resultado a versão da aplicação, o digest do container, o hostname da rota e o identificador dos dados de teste.

Execute a mesma verificação depois de uma substituição rotineira do container e após restaurar settings.yml, a configuração do limitador e quaisquer plugins locais em outro local. A restauração foi bem-sucedida quando os engines personalizados, os formatos, as regras do limitador e as configurações de proxy são recuperados, e uma query conhecida produz resultados de vários engines. Compare o timing e o consumo relacionados com a latência dos engines upstream, as queries simultâneas, o parsing dos resultados e os bloqueios aplicados ao IP do servidor; uma alteração significativa merece investigação, mesmo quando a ação final continua a passar.

Em seguida, exercite uma falha segura: negue temporariamente ao identity de teste o acesso ao Redis ou Valkey quando as funcionalidades de limitação e deteção de bots estiverem ativadas. Confirme que o SearXNG sinaliza a falha e volta ao funcionamento normal sem edições manuais destrutivas. Preserve apenas o trecho de log necessário e com os dados sensíveis removidos. Este gate em quatro partes cobre o arranque, a persistência, a recuperação e o tratamento de falhas.

Execute a primeira instância com características de produção

Use o container como um runtime substituível, não como a fonte da verdade.

docker run -d \
  --name searxng \
  --restart unless-stopped \
  -p 127.0.0.1:8080:8080 \
  -v searxng-data:/etc/searxng \
  -e SEARXNG_SECRET=replace-with-a-long-random-value \
  searxng/searxng:latest

Adicione as configurações de conexão revistas para Redis ou Valkey quando as funcionalidades de limitação e deteção de bots estiverem ativadas; use nomes privados para serviços privados. Inspecione o utilizador do container, os caminhos com permissão de escrita e o listener associado antes de o expor. Execute a ação completa — enviar pesquisas em HTML e JSON, confirmar que vários engines contribuem com resultados e acionar o limitador configurado a partir de um cliente de teste — e guarde a referência exata da imagem que produziu o resultado.

Evite que o sucesso do proxy mascare uma falha da aplicação

Exponha um hostname HTTPS para o SearXNG; mantenha a porta 8080 privada. Defina server base_url e os trusted proxy headers para HTTPS. Isso impede que browsers e clientes de API descubram dois endereços concorrentes.

A partir de um cliente limpo, execute a transação validada e inspecione o primeiro request que falhar. Use o guia de domínio personalizado quando houver problemas de DNS ou TLS. Trate “os engines bloqueiam o IP do servidor ou os formatos omitem json para clientes de API” como um diagnóstico separado da aplicação depois de a rota estar comprovada.

Logs que respondem à próxima pergunta

A primeira métrica operacional útil para o SearXNG é saber se consegue enviar pesquisas em HTML e JSON, confirmar que vários engines contribuem com resultados e acionar o limitador configurado a partir de um cliente de teste. Combine-a com sinais de saturação relativos à latência dos engines upstream, às queries simultâneas, ao parsing dos resultados e aos bloqueios aplicados ao IP do servidor. Um probe limitado ao processo não deve chamar dependências dispendiosas nem reiniciar o container porque um upstream está temporariamente indisponível.

Trate os upgrades como alterações de dados, porque a sintaxe das configurações, as definições dos engines e o comportamento do limitador podem mudar. Por isso, faça o deploy das alterações de configuração e de imagem como parte da mesma revisão. Fixe as versões, ensaie com o estado restaurado e mantenha a imagem anterior disponível até que um rollback continue a ser válido. Quando os engines bloquearem o IP do servidor ou os formatos omitirem json para clientes de API, preserve os logs anteriores ao restart; normalmente contêm a mensagem causal.

Ligue o SearXNG ao ciclo de vida da Dockup

A camada de plataforma do SearXNG é composta pela porta 8080, ingress, TLS, configuração de runtime, armazenamento e acessibilidade da dependência. A Dockup pode reproduzir esses elementos na sua própria infraestrutura ou num servidor ligado pelo cliente.

Depois, o operador conclui a camada do produto: definir server base_url e os trusted proxy headers para HTTPS; aplicar esta regra de acesso — manter uma secret key não padrão, ativar os controlos contra abuso e expor JSON apenas quando um agent ou uma aplicação precisar disso; e executar “enviar pesquisas em HTML e JSON, confirmar que vários engines contribuem com resultados e acionar o limitador configurado a partir de um cliente de teste”. Registar esse teste juntamente com a implementação evita confundir o provisionamento automatizado com a prontidão da aplicação.

Perguntas frequentes

Do que o SearXNG precisa para uma implementação de produção?

Encaminhe o container do SearXNG na porta 8080 através de uma única origem HTTPS. O requisito de rede de suporte é Redis ou Valkey quando as funcionalidades de limitação e deteção de bots estão ativadas. Não considere o SearXNG pronto até conseguir enviar pesquisas em HTML e JSON, confirmar que vários engines contribuem com resultados e acionar o limitador configurado a partir de um cliente de teste.

Que dados do SearXNG devem fazer parte de um backup?

Persista /etc/searxng e inclua settings.yml, a configuração do limitador e quaisquer plugins locais no mesmo recovery manifest. Uma restauração limpa do SearXNG só é bem-sucedida quando os engines personalizados, os formatos, as regras do limitador e as configurações de proxy são recuperados, e uma query conhecida produz resultados de vários engines.

O SearXNG precisa de HTTPS por trás de um reverse proxy?

Use HTTPS para a origem pública do SearXNG e mantenha a porta 8080 na rota interna. Aplique corretamente a configuração do SearXNG: defina server base_url e os trusted proxy headers para HTTPS. No SearXNG, o HTTPS protege credenciais ou conteúdos do utilizador durante o trânsito e mantém consistente o comportamento do cliente sensível à origem.

Como deve ser testado um upgrade do SearXNG?

Restaure o estado atual do SearXNG numa implementação isolada, aplique a versão candidata e repita a sua transação de aceitação. Preste especial atenção porque a sintaxe das configurações, as definições dos engines e o comportamento do limitador podem mudar. Por isso, faça o deploy das alterações de configuração e de imagem como parte da mesma revisão. Mantenha a imagem anterior do SearXNG até compreender os limites da migração de dados e do rollback.