Implantação Local SearXNG

Implantação e Configuração do SearXNG

CherryStudio oferece suporte à pesquisa na web via SearXNG. Como o SearXNG é um projeto de código aberto que pode ser implantado localmente ou em servidores, sua configuração difere ligeiramente de outros provedores que exigem APIs.

Link do projeto SearXNG: SearXNG

Vantagens do SearXNG

  • Código aberto e gratuito, sem necessidade de API

  • Alta privacidade relativa

  • Altamente personalizável

Implantação Local

1. Implantação Direta com Docker

Como o SearXNG não requer configurações complexas de ambiente, podemos implantá-lo rapidamente usando Docker com apenas uma porta livre, sem precisar do docker compose.

1. Baixar e configurar Docker

Após instalar, selecione um caminho para armazenamento de imagens:

2. Pesquisar e baixar a imagem do SearXNG

Na barra de pesquisa, digite searxng:

Baixar a imagem:

3. Executar a imagem

Após o download, acesse a página Images:

Selecione a imagem baixada e clique em "Run":

Abra as configurações para ajustar:

Exemplo usando a porta 8085:

Após execução bem-sucedida, clique no link para abrir a interface do SearXNG:

Esta página confirma a implantação bem-sucedida:

Implantação em Servidor

Como a instalação do Docker no Windows pode ser complexa, os usuários podem implantar o SearXNG em servidores e compartilhá-lo. No entanto, o SearXNG atualmente não suporta autenticação, permitindo que outros localizem e abusem da instância.

Para solucionar isso, o Cherry Studio agora suporta Autenticação Básica HTTP (RFC7617). Se você expor seu SearXNG publicamente, configure obrigatoriamente a autenticação via Nginx ou software similar. Abaixo está um tutorial rápido (requer conhecimentos básicos de Linux).

Implantar o SearXNG

Use Docker conforme anteriormente. Supondo que o Docker CE já está instalado (tutorial oficial), execute estes comandos (Debian):

sudo apt update
sudo apt install git -y

# Clonar repositório oficial
cd /opt
git clone https://github.com/searxng/searxng-docker.git
cd /opt/searxng-docker

# Para servidores com baixa largura de banda, defina como false
export IMAGE_PROXY=true

# Modificar configurações
cat <<EOF > /opt/searxng-docker/searxng/settings.yml
# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
  # base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
  secret_key: $(openssl rand -hex 32)
  limiter: false  # can be disabled for a private instance
  image_proxy: $IMAGE_PROXY
ui:
  static_use_hash: true
redis:
  url: redis://redis:6379/0
search:
  formats:
    - html
    - json
EOF

Para alterar a porta ou reutilizar um Nginx existente, edite docker-compose.yaml:

version: "3.7"

services:
# Remova esta seção para reutilizar o Nginx existente
  caddy:
    container_name: caddy
    image: docker.io/library/caddy:2-alpine
    network_mode: host
    restart: unless-stopped
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data:rw
      - caddy-config:/config:rw
    environment:
      - SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME:-http://localhost}
      - SEARXNG_TLS=${LETSENCRYPT_EMAIL:-internal}
    cap_drop:
      - ALL
    cap_add:
      - NET_BIND_SERVICE
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"
# Remova esta seção para reutilizar o Nginx existente
  redis:
    container_name: redis
    image: docker.io/valkey/valkey:8-alpine
    command: valkey-server --save 30 1 --loglevel warning
    restart: unless-stopped
    networks:
      - searxng
    volumes:
      - valkey-data2:/data
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
      - DAC_OVERRIDE
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

  searxng:
    container_name: searxng
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    networks:
      - searxng
    # Porta padrão 8080. Para usar 8000: "127.0.0.1:8000:8080"
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
      - UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
      - UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

networks:
  searxng:

volumes:
# Remova esta seção para reutilizar o Nginx existente
  caddy-data:
  caddy-config:
# Remova esta seção para reutilizar o Nginx existente
  valkey-data2:

Execute docker compose up -d para iniciar. Monitore logs com docker compose logs -f searxng.

Configurar Proxy Reverso e Autenticação HTTP Básica no Nginx

Se usar painéis como Baota ou 1Panel, consulte a documentação para configurar o proxy reverso. Adicione ao arquivo Nginx:

server
{
    listen 443 ssl;

    # Seu nome de host
    server_name search.example.com;

    # index index.html;
    # root /data/www/default;

    # Certificado SSL
    ssl_certificate    /path/to/your/cert/fullchain.pem;
    ssl_certificate_key    /path/to/your/cert/privkey.pem;

    # Adicione estas linhas ao bloco location
    location / {
        auth_basic "Informe seu usuário e senha";
        auth_basic_user_file /etc/nginx/conf.d/search.htpasswd;

        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_protocol_addr;
        proxy_pass http://127.0.0.1:8000;
        client_max_body_size 0;
    }

    # access_log  ...;
    # error_log  ...;
}

Crie o arquivo de senhas (substitua exemplo_usuario e exemplo_senha):

echo "exemplo_usuario:$(openssl passwd -5 'exemplo_senha')" > /etc/nginx/conf.d/search.htpasswd

Reinicie o Nginx. Acesse a página para verificar a autenticação:

Configuração no Cherry Studio

Após implantar o SearXNG, configure no CherryStudio:

Acesse as configurações de pesquisa na web e selecione Searxng:

A validação inicial falhará (normal, sem JSON configurado):

Corrigir Configuração

No Docker, acesse a guia Files e localize settings.yml:

Abra o editor de arquivos:

Na linha 78, adicione json aos formatos:

Antes

Depois

Reinicie a imagem:

Valide novamente no Cherry Studio:

Use:

  • Local: http://localhost:[porta]

  • Docker: http://host.docker.internal:[porta]

Para instâncias em servidor com autenticação, adicione credenciais nas configurações:

Personalização de Mecanismos de Busca

O SearXNG vem com configurações padrão. Para personalizar mecanismos usados pelos modelos de IA, ajuste o arquivo de configuração:

Exemplo de configuração:

Erros Comuns de Validação

Formato JSON Não Adicionado

Adicione json aos formatos em settings.yml:

Mecanismos de Busca Incorretos

Para evitar falhas com Google em regiões bloqueadas, force o uso do Baidu:

use_default_settings:
  engines:
    keep_only:
      - baidu
engines:
  - name: baidu
    engine: baidu 
    categories: 
      - web
      - general
    disabled: false

Limite de Taxa Excedido

Desative o limiter em settings.yml:

最后更新于

这有帮助吗?