Outils pour utilisateurs

Outils du site


services:searxng

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
services:searxng [2026/03/10 01:11] ewenservices:searxng [2026/03/10 14:26] (Version actuelle) ewen
Ligne 6: Ligne 6:
  
 **Établissement :** Lycée Paul-Louis Courier, Tours  **Établissement :** Lycée Paul-Louis Courier, Tours 
 +
    
 **Date :** Mars 2026   **Date :** Mars 2026  
  
 {{ :wiki:logo.png?150 |Logo PLC-SIO}} {{ :wiki:logo.png?150 |Logo PLC-SIO}}
 +
 +===== 0. Prérequis =====
 +
 +Avant de commencer, s'assurer que les éléments suivants sont en place :
 +
 +**Serveur hôte (X200)**
 +  * Debian ou Ubuntu installé
 +  * Docker et Docker Compose installés et fonctionnels
 +  * Accès ''sudo'' disponible
 +
 +**VPS**
 +  * Nginx installé
 +  * Accès SSH disponible
 +  * Un nom de domaine avec un record A pointant vers l'IP publique du VPS
 +
 +**Vérification rapide avant de démarrer :**
 +<code bash>
 +docker --version        # Vérifie que Docker est installé
 +docker compose version  # Vérifie que Docker Compose est disponible
 +nginx -v                # Sur le VPS, vérifie que Nginx est installé
 +</code>
 +
 +<note tip>Ce guide ne couvre pas l'installation de Docker ni de Nginx. Se référer à la documentation officielle si ces composants ne sont pas encore en place : [[https://docs.docker.com/engine/install/debian/|Installation Docker (Debian)]] et [[https://nginx.org/en/docs/install.html|Installation Nginx]].</note>
  
 ===== 1. Présentation et préparation du répertoire ===== ===== 1. Présentation et préparation du répertoire =====
Ligne 15: Ligne 39:
 SearXNG est un métamoteur de recherche respectueux de la vie privée. Le déploiement s'effectue via des conteneurs Docker sur le serveur. SearXNG est un métamoteur de recherche respectueux de la vie privée. Le déploiement s'effectue via des conteneurs Docker sur le serveur.
  
-Nous déploierons alors SearXNG à l'aide d'une image docker dédiée, sur notre infrastructure X200 + VPS, à l'addresse [[https://search.ewengadonnaud.xyz|search.ewengadonnaud.xyz]]+Nous déploierons alors SearXNG à l'aide d'une image docker dédiée, sur notre infrastructure X200 + VPS, à l'adresse [[https://search.ewengadonnaud.xyz|search.ewengadonnaud.xyz]]
  
 Il convient donc de la création d'un record A sur notre registrar au préalable, pointant vers l'adresse du VPS.  Il convient donc de la création d'un record A sur notre registrar au préalable, pointant vers l'adresse du VPS. 
  
 Création des répertoires nécessaires à l'hébergement de la configuration : Création des répertoires nécessaires à l'hébergement de la configuration :
- 
 <code bash> <code bash>
-sudo mkdir -p /opt/searxng/searxng+sudo mkdir -p /opt/searxng/searxng # Chemin docker couramment utilisé
 cd /opt/searxng cd /opt/searxng
 </code> </code>
Ligne 29: Ligne 52:
  
 Création du fichier de configuration principal ''settings.yml'' permettant de définir le port d'écoute et les paramètres de sécurité : Création du fichier de configuration principal ''settings.yml'' permettant de définir le port d'écoute et les paramètres de sécurité :
- 
 <code yaml> <code yaml>
 use_default_settings: true use_default_settings: true
- 
 server: server:
   port: 8080   port: 8080
Ligne 40: Ligne 61:
   image_proxy: true   image_proxy: true
 </code> </code>
- 
 Création du fichier ''docker-compose.yml''. L'ajout de serveurs DNS publics de manière explicite est nécessaire afin de pallier les erreurs de résolution de noms (temporary failure in name resolution) lors de l'initialisation des moteurs de recherche par le conteneur : Création du fichier ''docker-compose.yml''. L'ajout de serveurs DNS publics de manière explicite est nécessaire afin de pallier les erreurs de résolution de noms (temporary failure in name resolution) lors de l'initialisation des moteurs de recherche par le conteneur :
- 
 <code yaml> <code yaml>
 version: '3' version: '3'
- 
 services: services:
   searxng:   searxng:
Ligne 51: Ligne 69:
     container_name: searxng     container_name: searxng
     ports:     ports:
-      - "8087:8080"+      - "8080:8080"
     volumes:     volumes:
       - ./searxng:/etc/searxng       - ./searxng:/etc/searxng
Ligne 59: Ligne 77:
       - 8.8.8.8       - 8.8.8.8
 </code> </code>
- 
 Lancement de l'infrastructure via Docker : Lancement de l'infrastructure via Docker :
- 
 <code bash> <code bash>
 sudo docker compose up -d sudo docker compose up -d
 </code> </code>
- 
 ===== 3. Configuration du Reverse Proxy Nginx ===== ===== 3. Configuration du Reverse Proxy Nginx =====
- +Création du bloc serveur Nginx sur le VPS pour relayer le trafic via le tunnel WireGuard vers le port 8080 de la machine cible :
-Création du bloc serveur Nginx sur le VPS pour relayer le trafic via le tunnel WireGuard vers le port 8087 de la machine cible : +
 <code nginx> <code nginx>
 server { server {
     server_name search.ewengadonnaud.xyz;     server_name search.ewengadonnaud.xyz;
- 
     location / {     location / {
-        proxy_pass http://10.10.0.2:8087;+        proxy_pass http://X.X.X.X:8080# Où X.X.X.X est l'IP cible, à modifier à notre convenance/contexte
                  
         proxy_set_header Host $host;         proxy_set_header Host $host;
Ligne 84: Ligne 96:
 } }
 </code> </code>
- +===== 4. Sécurisation SSL/TLS avec Certbot ===== 
-===== 4. Intégration au navigateur web ===== +Afin de garantir la confidentialité des requêtes (HTTPS), nous allons générer un certificat SSL gratuit via Let's Encrypt en utilisant l'outil Certbot. 
 +Installation de Certbot et de son plugin pour Nginx sur le VPS : 
 +<code bash> 
 +sudo apt update 
 +sudo apt install python3-certbot-nginx 
 +</code> 
 +Génération du certificat et configuration automatique du Reverse Proxy Nginx : 
 +<code bash> 
 +sudo certbot --nginx -d search.ewengadonnaud.xyz 
 +</code> 
 +Certbot va automatiquement détecter le bloc serveur Nginx configuré à l'étape précédente, le modifier pour y inclure les certificats de sécurité, et forcer la redirection du trafic de HTTP vers HTTPS. 
 +===== 5. Intégration au navigateur web =====
 Pour configurer SearXNG comme moteur de recherche par défaut au sein du navigateur client : Pour configurer SearXNG comme moteur de recherche par défaut au sein du navigateur client :
- 
 * **Nom :** SearXNG * **Nom :** SearXNG
 * **Raccourci :** sx * **Raccourci :** sx
 * **URL avec %s à la place de la requête :** ''https://search.ewengadonnaud.xyz/search?q=%s'' * **URL avec %s à la place de la requête :** ''https://search.ewengadonnaud.xyz/search?q=%s''
- 
 {{ :services:searxng:capture_integration_nav.png |Intégration au navigateur}} {{ :services:searxng:capture_integration_nav.png |Intégration au navigateur}}
 +
 +===== 6. Activation des favicons (optionnel) =====
 +Par défaut, SearXNG n'affiche pas les favicons des sites dans les résultats de recherche. Cette fonctionnalité est désactivée car elle génère une charge serveur supplémentaire. Son activation nécessite trois modifications.
 +
 +<note warning>L'activation des favicons augmente significativement la charge en requêtes client/serveur. À ne configurer que si les ressources du serveur le permettent.</note>
 +
 +**Étape 1 — Ajout du resolver dans ''settings.yml''**
 +
 +Ajouter une section ''search'' dédiée dans le fichier ''settings.yml'' (attention : ne pas placer cette clé dans la section ''server'') :
 +<code yaml>
 +search:
 +  favicon_resolver: "duckduckgo"
 +</code>
 +Les resolvers disponibles sont : ''duckduckgo'', ''allesedv'', ''google'', ''yandex''.
 +
 +**Étape 2 — Création du fichier de cache ''favicons.toml''**
 +
 +Créer le fichier ''/opt/searxng/searxng/favicons.toml''. Ce fichier configure le cache SQLite qui stocke les icônes localement afin de limiter les requêtes externes répétées :
 +<code toml>
 +[favicons]
 +cfg_schema = 1
 +
 +[favicons.cache]
 +db_url = "/var/cache/searxng/faviconcache.db"
 +LIMIT_TOTAL_BYTES = 2147483648
 +</code>
 +
 +**Étape 3 — Déclaration du volume de cache dans ''docker-compose.yml''**
 +
 +Le cache doit être persistant entre les redémarrages du conteneur. Modifier le ''docker-compose.yml'' pour y ajouter un volume nommé dédié :
 +<code yaml>
 +version: '3'
 +services:
 +  searxng:
 +    image: searxng/searxng:latest
 +    container_name: searxng
 +    ports:
 +      - "8080:8080"
 +    volumes:
 +      - ./searxng:/etc/searxng
 +      - searxng-cache:/var/cache/searxng
 +    restart: unless-stopped
 +    dns:
 +      - 1.1.1.1
 +      - 8.8.8.8
 +
 +volumes:
 +  searxng-cache:
 +</code>
 +
 +Redémarrer le conteneur pour appliquer l'ensemble des modifications :
 +<code bash>
 +docker compose restart
 +</code>
services/searxng.1773101510.txt.gz · Dernière modification : de ewen