Tropic Host

SearXNG : qu'est-ce que c'est et comment installer son propre moteur de recherche sur un VPS

7 min de lecture
Tropic
SearXNG : qu'est-ce que c'est et comment installer son propre moteur de recherche sur un VPS

SearXNG : votre propre moteur de recherche sans pistage sur un VPS

Un moteur de recherche classique peut associer une requête à une adresse IP, à des cookies et à un historique d'activité. SearXNG modifie le trajet : le navigateur contacte votre instance, qui interroge plusieurs moteurs de recherche externes et regroupe leurs réponses sur une seule page.

Les sources externes voient l'adresse du serveur SearXNG, et non les cookies de l'utilisateur. Le service lui-même ne crée pas de profil publicitaire. Il ne garantit toutefois pas un anonymat total : le propriétaire d'une instance publique peut techniquement conserver des journaux, et après l'ouverture d'un lien, le site de destination interagit de nouveau avec le navigateur.

Nous allons découvrir les possibilités de SearXNG et installer notre propre instance sur un VPS avec HTTPS et protection par mot de passe.

Qu'est-ce que SearXNG et comment fonctionne-t-il ?

SearXNG est un métamoteur de recherche gratuit et open source. Il ne possède pas son propre index de sites : le service récupère les résultats de moteurs de recherche configurés et de sources spécialisées, les harmonise et les affiche dans une interface unique.

Navigateur → votre SearXNG → moteurs de recherche
                              ↓
                    résultats regroupés

À chaque requête, SearXNG :

  1. détermine la catégorie de recherche : Web, images, actualités, vidéos ou autre ;
  2. interroge les sources sélectionnées au nom du serveur ;
  3. ne leur transmet pas les cookies de l'utilisateur et utilise un profil de navigateur aléatoire pour les requêtes sortantes ;
  4. regroupe les réponses sur une seule page de résultats.

La vitesse dépend des systèmes externes : ils peuvent répondre lentement, afficher un CAPTCHA ou bloquer l'adresse IP. SearXNG est une couche intermédiaire contrôlable, et non un index autonome.

Pourquoi SearXNG est plus intéressant qu'un seul moteur de recherche

Plusieurs sources dans une même page de résultats

Vous pouvez combiner des moteurs de recherche généralistes avec des sources spécialisées : encyclopédies, cartes, publications scientifiques, dépôts de code, actualités ou catalogues d'images. Cette approche est utile lorsqu'une page de résultats classique est saturée de pages optimisées pour le référencement ou trouve difficilement des contenus de niche.

Au moment de la rédaction de cet article, la documentation recensait 272 intégrations, dont 83 activées par défaut. Cela ne signifie pas qu'elles sont toutes aussi stables.

La sélection dépend de la configuration. Quelques sources stables fonctionnent généralement plus vite que l'activation simultanée de toutes les sources disponibles.

Commandes rapides

Des raccourcis permettent de sélectionner temporairement un moteur, une catégorie ou une langue :

!wp docker compose       — rechercher dans Wikipédia
!images aurore boréale   — rechercher des images
:fr !wp serveur proxy    — rechercher en français dans Wikipédia

La commande !! redirige directement l'utilisateur vers un moteur de recherche externe. Dans ce mode, la protection de SearXNG ne s'applique plus.

Recherche pour le navigateur et vos propres outils

SearXNG prend en charge OpenSearch et peut donc être défini comme moteur de recherche par défaut du navigateur. Une API HTTP renvoyant des réponses en JSON, CSV ou RSS est également disponible si l'administrateur a autorisé les formats nécessaires.

Une seule instance peut servir de backend de recherche pour un tableau de bord interne, un bot, un script de recherche ou un assistant d'IA local. Il vaut mieux n'exposer l'API qu'après avoir configuré l'authentification et les limites de requêtes.

Quel niveau de confidentialité offre SearXNG ?

Ce qu'il faitCe qu'il ne fait pas
Ne transmet pas les cookies du navigateur aux moteurs de recherche externesNe garantit pas un anonymat total
Masque l'adresse IP de l'utilisateur derrière celle du serveurNe protège plus l'utilisateur après l'ouverture du site trouvé
Supprime les publicités tierces et certains paramètres de suiviNe garantit pas que le propriétaire d'un serveur tiers ne conserve aucun journal
Peut faire transiter les images par un proxyNe remplace ni un VPN, ni Tor, ni les protections du navigateur

Une instance publique est pratique pour découvrir le service, mais il faut faire confiance à son administrateur, et une adresse IP partagée subit plus souvent des restrictions.

Votre propre serveur vous donne le contrôle des journaux, des sources et des accès, mais il ne rend pas le navigateur anonyme.

Instance publique, serveur domestique ou VPS

OptionAvantagesLimites
Instance publiqueAucune installation nécessaireConfiance envers le propriétaire, surcharge, CAPTCHA
Serveur domestiqueContrôle total sans louer de VPSL'appareil doit fonctionner en permanence ; l'accès extérieur est plus complexe à configurer
Votre propre VPSFonctionnement 24 h/24, domaine, HTTPS, accès depuis plusieurs appareilsIl faut mettre à jour les conteneurs et surveiller la sécurité

Une instance SearXNG personnelle est utile à une famille, une équipe, un développeur ou des outils d'IA locaux. Pour une recherche occasionnelle, une instance publique est plus simple.

Quel VPS faut-il pour SearXNG ?

La charge dépend du nombre d'utilisateurs, des sources et des requêtes simultanées. Configurations de départ pratiques :

ScénarioCPURAMStockage
Un utilisateur1 vCPU1 Go10 Go
Famille ou petite équipe2 vCPU2 Go20 Go
API et services supplémentaires2–4 vCPUà partir de 4 Goà partir de 30 Go

Un grand disque n'est pas nécessaire. La qualité du réseau, une adresse IP stable et une réserve de RAM sont plus importantes.

Un VPS Linux de tropic.host convient à ce scénario : vous pouvez commencer avec une petite configuration, puis augmenter les ressources à mesure que vous ajoutez des utilisateurs ou un accès API. Lors du choix de l'offre, il est plus utile d'investir dans la RAM et la qualité du réseau que de payer davantage pour une grande capacité de stockage.

Installer SearXNG sur un VPS avec Docker Compose

Cet exemple utilise Ubuntu 24.04 LTS, search.example.com, Valkey et Caddy. Faites pointer l'enregistrement DNS A vers le serveur et ouvrez les ports 80 et 443.

1. Installer Docker et créer un répertoire

sudo apt update
sudo apt install -y docker.io docker-compose-v2 openssl
sudo systemctl enable --now docker

sudo mkdir -p /opt/searxng/searxng
cd /opt/searxng

Créez un fichier .env contenant le domaine et un secret aléatoire :

printf 'SEARXNG_HOSTNAME=search.example.com\nSEARXNG_SECRET=%s\n' \
  "$(openssl rand -hex 32)" | sudo tee .env >/dev/null
sudo chmod 600 .env

2. Créer docker-compose.yml

name: searxng

services:
  searxng:
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    environment:
      SEARXNG_BASE_URL: https://${SEARXNG_HOSTNAME}/
      SEARXNG_SECRET: ${SEARXNG_SECRET}
      SEARXNG_VALKEY_URL: valkey://valkey:6379/0
    volumes:
      - ./searxng:/etc/searxng:rw
      - searxng-cache:/var/cache/searxng
    depends_on: [valkey]

  valkey:
    image: docker.io/valkey/valkey:9-alpine
    restart: unless-stopped
    command: valkey-server --save 30 1 --loglevel warning
    volumes:
      - valkey-data:/data

  caddy:
    image: docker.io/caddy:2-alpine
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    environment:
      SEARXNG_HOSTNAME: ${SEARXNG_HOSTNAME}
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data
      - caddy-config:/config
    depends_on: [searxng]

volumes:
  searxng-cache:
  valkey-data:
  caddy-data:
  caddy-config:

3. Configurer SearXNG

Créez searxng/settings.yml :

use_default_settings: true

general:
  instance_name: "Private Search"

search:
  safe_search: 1
  autocomplete: ""
  formats: [html]

server:
  limiter: true
  image_proxy: true

valkey:
  url: valkey://valkey:6379/0

Créez searxng/limiter.toml :

[botdetection]
trusted_proxies = [
  "127.0.0.0/8",
  "::1",
  "172.16.0.0/12",
]

Le limiter réduit le risque que des bots surchargent l'instance et que les moteurs de recherche externes limitent plus rapidement son adresse IP.

4. Ajouter un mot de passe et HTTPS

Générez le hash d'un mot de passe robuste :

sudo docker run --rm caddy:2-alpine \
  caddy hash-password --plaintext 'REMPLACEZ_LE_MOT_DE_PASSE'

Insérez le hash obtenu dans le fichier Caddyfile :

{$SEARXNG_HOSTNAME} {
    basic_auth {
        searchuser INSEREZ_LE_HASH
    }

    reverse_proxy searxng:8080 {
        header_up X-Real-IP {remote_host}
    }
}

Caddy stocke le hash, et non le mot de passe en clair. Au lieu d'utiliser Basic Auth, vous pouvez également limiter le service à l'intérieur d'un VPN.

5. Démarrer les conteneurs

sudo docker compose config
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

Ouvrez https://search.example.com. Caddy obtiendra automatiquement un certificat TLS, puis le navigateur demandera l'identifiant searchuser et le mot de passe. Les journaux de SearXNG sont disponibles avec la commande suivante :

sudo docker compose logs -f searxng

Que configurer après le démarrage ?

Conservez uniquement les sources utiles, choisissez la langue et le réglage SafeSearch, puis ajoutez SearXNG au navigateur avec OpenSearch. Pour effectuer une mise à jour, il suffit d'exécuter :

sudo docker compose pull
sudo docker compose up -d

Sauvegardez .env, Caddyfile et le répertoire searxng. N'activez l'API JSON qu'en cas de besoin et ne la laissez pas accessible sans mot de passe ni limitation de fréquence des requêtes.

Erreurs fréquentes

ErreurConséquenceSolution
Ouvrir l'instance à tout le mondeLes bots génèrent de la charge et l'adresse IP subit plus souvent des restrictionsUtiliser un mot de passe, un VPN ou une authentification unique
Activer trop de sourcesRésultats lents et délais d'attente dépassésConserver quelques moteurs stables
Considérer SearXNG comme un index autonomeUne partie des résultats disparaît en cas de panne des systèmes externesTenir compte de la dépendance aux sources
Attendre un anonymat totalLe site trouvé peut toujours suivre le navigateurUtiliser les protections du navigateur, un VPN ou Tor
Lancer le service sans HTTPSLes requêtes et le mot de passe sont transmis de manière non sécuriséeUtiliser un reverse proxy avec TLS

Conclusion

SearXNG regroupe différentes sources dans une seule interface, réduit la personnalisation et fournit une recherche commune au navigateur, aux scripts ou à une IA locale. Une instance publique suffit pour le découvrir. Pour une utilisation régulière, mieux vaut disposer de son propre serveur avec HTTPS, authentification, limiter et un petit ensemble de sources stables.

Vous pouvez commencer avec 1 Go de RAM. Augmentez les ressources lorsque le nombre d'utilisateurs progresse, lorsque vous activez l'API ou lorsque vous exécutez des conteneurs supplémentaires.

FAQ

SearXNG est-il totalement anonyme ?

Non. Il masque certaines données aux moteurs de recherche externes, mais l'administrateur de l'instance peut conserver des journaux. Après l'ouverture d'un site, les propres mécanismes de suivi de celui-ci s'appliquent.

SearXNG est-il meilleur que Google ?

Il répond à un autre besoin. Google est généralement plus rapide et personnalise davantage les résultats. SearXNG offre plus de contrôle, permet de combiner les sources et dépend moins du profil de l'utilisateur.

Peut-on utiliser SearXNG sans VPS ?

Oui. Vous pouvez utiliser une instance publique, un ordinateur domestique, un NAS ou un mini-serveur. Un VPS est nécessaire pour obtenir un accès permanent depuis n'importe quel réseau.

Quelle quantité de RAM faut-il ?

Pour un utilisateur, commencer avec 1 Go est raisonnable. Pour une famille, une équipe, une API ou des conteneurs supplémentaires, il vaut mieux prévoir 2 à 4 Go.

Peut-on connecter SearXNG à un navigateur ou à une IA ?

Oui. Un navigateur peut utiliser OpenSearch, tandis que les programmes peuvent utiliser l'API HTTP. L'accès à l'API doit être protégé par une authentification et un limiter.