Déploiement local de SearXNG

Déploiement et configuration de SearXNG

CherryStudio prend en charge les recherches sur le web via SearXNG, un projet open source pouvant être déployé localement ou sur un serveur. Son mode de configuration diffère légèrement des autres solutions nécessitant des fournisseurs d'API.

Lien du projet SearXNG : SearXNG

Avantages de SearXNG

  • Open source et gratuit, sans API nécessaire

  • Respect élevé de la vie privée

  • Hautement personnalisable

Déploiement local

1. Déploiement direct via Docker

Comme SearXNG ne nécessite pas de configuration environnementale complexe, vous pouvez le déployer simplement en fournissant un port libre sans utiliser docker compose. La méthode la plus rapide consiste à utiliser Docker pour extraire directement l'image et la déployer.

1. Télécharger et configurer Docker

Après l'installation, choisissez un chemin de stockage pour l'image :

2. Rechercher et extraire l'image SearXNG

Entrez searxng dans la barre de recherche :

Extraire l'image :

3. Exécuter l'image

Après l'extraction réussie, accédez à la page Images :

Sélectionnez l'image extraite et cliquez sur Exécuter :

Ouvrez les paramètres pour configurer :

Exemple avec le port 8085 :

Après le succès de l'exécution, cliquez sur le lien pour ouvrir l'interface frontale de SearXNG :

Cette page indique que le déploiement a réussi :

Déploiement sur serveur

Comme l'installation de Docker sous Windows peut être complexe, les utilisateurs peuvent déployer SearXNG sur un serveur et le partager avec d'autres. Malheureusement, SearXNG ne prend pas encore en charge l'authentification nativement, permettant ainsi à d'autres personnes de scanner et d'utiliser abusivement votre instance déployée.

Cherry Studio prend désormais en charge la configuration de l'authentification HTTP de base (RFC7617). Si vous exposez votre SearXNG déployé sur Internet, il est impératif de configurer cette authentification via un logiciel de proxy inverse comme Nginx. Voici un bref tutoriel qui nécessite des connaissances de base en administration Linux.

Déployer SearXNG

De manière similaire, utilisez Docker pour le déploiement. Supposons que vous ayez déjà installé Docker CE sur le serveur selon le tutoriel officiel. Voici des commandes complètes pour une installation neuve sous Debian :

sudo apt update
sudo apt install git -y

# Extraire le dépôt officiel
cd /opt
git clone https://github.com/searxng/searxng-docker.git
cd /opt/searxng-docker

# Si la bande passante de votre serveur est limitée, définissez sur false
export IMAGE_PROXY=true

# Modifier le fichier de configuration
cat <<EOF > /opt/searxng-docker/searxng/settings.yml
# voir https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
  # base_url est défini dans la variable d'environnement SEARXNG_BASE_URL, voir .env et docker-compose.yml
  secret_key: $(openssl rand -hex 32)
  limiter: false  # peut être désactivé pour une instance privée
  image_proxy: $IMAGE_PROXY
ui:
  static_use_hash: true
redis:
  url: redis://redis:6379/0
search:
  formats:
    - html
    - json
EOF

Si vous devez modifier le port d'écoute local ou réutiliser un Nginx existant, éditez le fichier docker-compose.yaml comme suit :

version: "3.7"

services:
# Si Caddy n'est pas nécessaire et que vous réutilisez un Nginx local existant, supprimez cette section.
  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 Caddy n'est pas nécessaire et que vous réutilisez un Nginx local existant, supprimez cette section.
  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
    # Par défaut mappé sur le port 8080 de l'hôte, si vous voulez écouter sur 8000, remplacez par "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 Caddy n'est pas nécessaire et que vous réutilisez un Nginx local existant, supprimez cette section
  caddy-data:
  caddy-config:
# Si Caddy n'est pas nécessaire et que vous réutilisez un Nginx local existant, supprimez cette section
  valkey-data2:

Exécutez docker compose up -d pour démarrer. Visualisez les journaux avec docker compose logs -f searxng.

Déployer le proxy inverse Nginx et l'authentification HTTP de base

Si vous utilisez des panneaux de serveur comme Baota ou 1Panel, consultez leur documentation pour ajouter un site et configurer le proxy inverse Nginx. Modifiez ensuite le fichier de configuration Nginx comme dans l'exemple ci-dessous :

server
{
    listen 443 ssl;

    # Votre nom d'hôte
    server_name search.example.com;

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

    # Si SSL est configuré, ajoutez ces deux lignes
    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";

    # Configuration proxy inverse standard
    location / {
        # Ajoutez ces deux lignes dans le bloc location, conservez le reste
        auth_basic "Veuillez saisir votre nom d'utilisateur et mot de passe";
        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  ...;
}

Supposons que le fichier de configuration Nginx soit dans /etc/nginx/conf.d, placez-y également le fichier de mots de passe.

Exécutez la commande (remplacez example_name et example_password par vos identifiants) :

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

Redémarrez Nginx (ou rechargez la configuration).

Ouvrez ensuite la page web. Vous devriez être invité à saisir vos identifiants. Entrez ceux définis précédemment pour vérifier la configuration.

Configuration dans Cherry Studio

Une fois SearXNG déployé localement ou sur serveur, procédez à la configuration dans CherryStudio.

Accédez à la page des paramètres de recherche web et sélectionnez Searxng :

La validation échoue si vous entrez directement l'URL du déploiement local :

Cela est dû au format JSON non activé par défaut. Modifiez le fichier de configuration.

Revenez à Docker, dans l'onglet Fichiers, trouvez le dossier avec les étiquettes :

Déroulez et trouvez un autre dossier étiqueté :

Localisez le fichier de configuration settings.yml :

Ouvrez l'éditeur de fichiers :

À la ligne 78, seul le format html est présent :

Ajoutez le format json, enregistrez et réexécutez l'image :

Revenez dans Cherry Studio pour valider :

L'adresse peut être locale : http://localhost:port Ou l'adresse Docker : http://host.docker.internal:port

Pour les déploiements serveur avec proxy inverse et format json activé, la validation retournera l'erreur 401 si l'authentification HTTP est configurée :

Configurez l'authentification HTTP de base dans le client avec vos identifiants :

La validation devrait alors réussir.

Autres configurations

SearXNG possède désormais une capacité de recherche par défaut. Pour personnaliser les moteurs de recherche, configurez manuellement.

Notez que ces préférences n'affectent pas la configuration appelée par le grand modèle :

Pour configurer les moteurs utilisés par le grand modèle, modifiez le fichier de configuration :

Référence de configuration linguistique :

Si le contenu est trop long, copiez-le dans un IDE local, modifiez-le et collez-le dans le fichier de configuration.

Causes courantes d'échec de validation

Format de retour sans JSON

Ajoutez json aux formats de retour dans le fichier de configuration :

Moteur de recherche mal configuré

Cherry Studio sélectionne par défaut les moteurs avec des catégories web et general. Google étant souvent inaccessible en Chine, forcez l'utilisation de Baidu :

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

Taux de requêtes trop élevé

Désactivez le limiteur de SearXNG dans les paramètres :

最后更新于

这有帮助吗?