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 :
- détermine la catégorie de recherche : Web, images, actualités, vidéos ou autre ;
- interroge les sources sélectionnées au nom du serveur ;
- ne leur transmet pas les cookies de l'utilisateur et utilise un profil de navigateur aléatoire pour les requêtes sortantes ;
- 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édiaLa 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 fait | Ce qu'il ne fait pas |
|---|---|
| Ne transmet pas les cookies du navigateur aux moteurs de recherche externes | Ne garantit pas un anonymat total |
| Masque l'adresse IP de l'utilisateur derrière celle du serveur | Ne protège plus l'utilisateur après l'ouverture du site trouvé |
| Supprime les publicités tierces et certains paramètres de suivi | Ne garantit pas que le propriétaire d'un serveur tiers ne conserve aucun journal |
| Peut faire transiter les images par un proxy | Ne 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
| Option | Avantages | Limites |
|---|---|---|
| Instance publique | Aucune installation nécessaire | Confiance envers le propriétaire, surcharge, CAPTCHA |
| Serveur domestique | Contrôle total sans louer de VPS | L'appareil doit fonctionner en permanence ; l'accès extérieur est plus complexe à configurer |
| Votre propre VPS | Fonctionnement 24 h/24, domaine, HTTPS, accès depuis plusieurs appareils | Il 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énario | CPU | RAM | Stockage |
|---|---|---|---|
| Un utilisateur | 1 vCPU | 1 Go | 10 Go |
| Famille ou petite équipe | 2 vCPU | 2 Go | 20 Go |
| API et services supplémentaires | 2–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/searxngCré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 .env2. 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/0Cré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 psOuvrez 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 searxngQue 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 -dSauvegardez .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
| Erreur | Conséquence | Solution |
|---|---|---|
| Ouvrir l'instance à tout le monde | Les bots génèrent de la charge et l'adresse IP subit plus souvent des restrictions | Utiliser un mot de passe, un VPN ou une authentification unique |
| Activer trop de sources | Résultats lents et délais d'attente dépassés | Conserver quelques moteurs stables |
| Considérer SearXNG comme un index autonome | Une partie des résultats disparaît en cas de panne des systèmes externes | Tenir compte de la dépendance aux sources |
| Attendre un anonymat total | Le site trouvé peut toujours suivre le navigateur | Utiliser les protections du navigateur, un VPN ou Tor |
| Lancer le service sans HTTPS | Les requêtes et le mot de passe sont transmis de manière non sécurisée | Utiliser 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.
