Implementación local y configuración de SearXNG

Despliegue y Configuración de SearXNG

CherryStudio admite búsquedas en la web a través de SearXNG, un proyecto de código abierto que se puede implementar localmente o en un servidor, por lo que su configuración difiere ligeramente de otros métodos que requieren proveedores de API.

Enlace al proyecto SearXNG: SearXNG

Ventajas de SearXNG

  • Código abierto y gratuito, sin necesidad de API

  • Relativamente alto nivel de privacidad

  • Altamente personalizable

Despliegue Local

1. Despliegue Directo con Docker

Como SearXNG no requiere configuración de entorno compleja y puede implementarse simplemente proporcionando un puerto libre sin necesidad de docker compose, la forma más rápida es usar Docker para obtener la imagen directamente.

1. Descargar e instalar docker

Después de instalar, seleccione una ruta de almacenamiento para la imagen:

2. Buscar y obtener la imagen de SearXNG

Escriba searxng en la barra de búsqueda:

Obtener la imagen:

3. Ejecutar la imagen

Después de obtener la imagen, vaya a la página images:

Seleccione la imagen obtenida y haga clic en ejecutar:

Abra las opciones de configuración:

Ejemplo con el puerto 8085:

Después de ejecutarse con éxito, haga clic en el enlace para abrir la interfaz frontend de SearXNG:

Si aparece esta página, significa que el despliegue fue exitoso:

Despliegue en Servidor

Dado que instalar Docker en Windows puede ser complicado, los usuarios pueden implementar SearXNG en un servidor y compartirlo con otros. Sin embargo, actualmente SearXNG no admite autenticación, lo que permite que otros escaneen y abusen de su instancia implementada.

Por ello, Cherry Studio ahora admite la configuración de Autenticación HTTP Básica (RFC7617). Si implementa SearXNG en un entorno público, debe configurar la autenticación HTTP básica usando software de proxy inverso como Nginx. A continuación se muestra un breve tutorial que requiere conocimientos básicos de administración de Linux.

Implementar SearXNG

De manera similar, use Docker para implementar. Suponiendo que ya ha instalado Docker CE siguiendo la guía oficial, aquí hay comandos para una instalación nueva en sistemas Debian:

sudo apt update
sudo apt install git -y

# Obtener el repositorio oficial
cd /opt
git clone https://github.com/searxng/searxng-docker.git
cd /opt/searxng-docker

# Si su servidor tiene poco ancho de banda, establezca esto en false
export IMAGE_PROXY=true

# Modificar el archivo de configuración
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 cambiar el puerto de escucha local o reutilizar Nginx existente, edite docker-compose.yaml:

version: "3.7"

services:
# Si no necesita Caddy y reutiliza Nginx local, elimine esto. No necesitamos Caddy por defecto.
  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"
# Si no necesita Caddy y reutiliza Nginx local, elimine lo anterior. No necesitamos Caddy por defecto.
  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
    # Por defecto se asigna al puerto 8080 del host. Si quiere escuchar en el puerto 8000, cambie a "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:
# Si no necesita Caddy y reutiliza Nginx local, elimine lo siguiente
  caddy-data:
  caddy-config:
# Si no necesita Caddy y reutiliza Nginx local, elimine lo anterior
  valkey-data2:

Ejecute docker compose up -d para iniciar. Verifique los registros con docker compose logs -f searxng.

Configurar Proxy Inverso Nginx y Autenticación HTTP Básica

Si usa paneles de servidor como BaoTa o 1Panel, consulte su documentación para configurar Nginx. Modifique el archivo de configuración como se muestra:

server
{
    listen 443 ssl;

    # Su nombre de host
    server_name search.example.com;

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

    # Si está configurado SSL:
    ssl_certificate    /path/to/your/cert/fullchain.pem;
    ssl_certificate_key    /path/to/your/cert/privkey.pem;

    # HSTS
    # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

    location / {
        # Agregar estas dos líneas (ajuste la ruta según su sistema)
        auth_basic "Introduzca su nombre de usuario y contraseña";
        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  ...;
}

Si guarda la configuración en /etc/nginx/conf.d, genere el archivo de contraseñas (reemplace example_name y example_password):

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

Reinicie o recargue Nginx. Verifique que se solicite autenticación:

Configuración en Cherry Studio

Una vez implementado SearXNG localmente o en servidor, configure CherryStudio.

Acceda a los ajustes de búsqueda web y seleccione Searxng:

Si la verificación falla al ingresar la URL local:

Esto ocurre porque no se ha configurado el tipo de retorno JSON. Modifique el archivo de configuración.

En Docker, vaya a la pestaña Files, busque la carpeta con etiqueta:

Expanda y encuentre otra carpeta etiquetada:

Busque el archivo de configuración settings.yml:

Ábralo en el editor:

En la línea 78, modifique para incluir JSON:

Guarde y reinicie la imagen después de agregar el tipo JSON:

Verifique nuevamente en Cherry Studio (ahora debería ser exitosa):

Use http://localhost:port localmente o http://host.docker.internal:port para Docker.

Para instancias con autenticación HTTP básica, Cherry Studio mostrará error 401 durante la verificación:

Ingrese las credenciales en el cliente:

La verificación ahora debería ser exitosa.

Otras Configuraciones

SearXNG tiene capacidades de búsqueda predeterminadas. Para personalizar motores de búsqueda:

Estos ajustes no afectan las llamadas de modelos grandes:

Para motores usados por modelos grandes, edite el archivo de configuración:

Referencia de configuración de idioma:

Si el contenido es extenso, edítelo localmente y pegue los cambios.

Causas Comunes de Falla en Verificación

Formato de Retorno Sin JSON

Agregue json al formato en el archivo de configuración:

Motor de Búsqueda Mal Configurado

Cherry Studio usa motores con categorías web y general. Google puede fallar en algunas regiones. Para usar Baidu:

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

Velocidad de Acceso Demasiado Alta

Desactive el limitador en la configuración:

最后更新于

这有帮助吗?