Perplexica self-hosted : alternative Perplexity open-source — déploiement 2026
Chaque requête envoyée à Perplexity Pro quitte votre réseau, traverse des datacenters américains et coûte entre 20 et 40 USD par mois pour une équipe de taille modeste. Pour un cabinet juridique sénégalais qui recherche de la jurisprudence OHADA, pour un bureau d’études ivoirien qui exploite des rapports techniques internes, ou pour un centre de formation malien qui interroge ses propres ressources pédagogiques, ce modèle pose deux problèmes concrets : la confidentialité des requêtes et le coût en devises étrangères. Perplexica résout les deux d’un coup.
Perplexica est un moteur de recherche IA entièrement open-source, développé par ItzCrazyKns et disponible sur github.com/ItzCrazyKns/Perplexica. Son architecture reproduit l’expérience de Perplexity (réponse synthétisée avec citations numérotées) mais repose sur deux composants que vous contrôlez intégralement : SearXNG pour agréger les résultats web depuis des dizaines de moteurs simultanément, et un LLM local via Ollama (ou une API externe comme Mistral AI) pour synthétiser les réponses. Aucune requête, aucune réponse, aucun document interne n’est transmis à un tiers.
Ce tutoriel vous guide pas à pas depuis un serveur vierge jusqu’à un moteur de recherche IA opérationnel, intégrable dans un intranet d’entreprise. Comptez environ 30 minutes si Docker est déjà installé. À la fin de ce guide, vous disposerez d’une interface web complète avec modes de recherche spécialisés (Academic, YouTube, Reddit pour la veille professionnelle), d’un backend LLM local Mistral 7B, et de la base pour y brancher vos propres sources documentaires via RAG.
Prérequis
Avant de démarrer, vérifiez que votre environnement répond aux conditions minimales. Perplexica est léger côté serveur web mais le modèle LLM local exige de la RAM. Voici ce dont vous avez besoin :
- OS : Ubuntu 22.04 LTS ou Debian 12 (les commandes de ce guide ciblent ces distributions ; adaptez pour CentOS/Rocky)
- Docker Engine 24+ et Docker Compose v2 installés (
docker compose versiondoit retournerv2.x) - RAM : 8 Go minimum pour Mistral 7B en mode quantifié (Q4) ; 16 Go recommandés pour un usage fluide
- Stockage : 6 Go libres pour l’image Mistral 7B Q4 téléchargée par Ollama
- Réseau sortant : SearXNG a besoin d’accéder à Google, Bing, DuckDuckGo, etc. Un proxy est supporté si votre intranet est filtré
- Niveau : intermédiaire (à l’aise avec le terminal Linux et Docker)
- Temps estimé : 30 minutes hors téléchargement du modèle LLM (variable selon bande passante)
Si vous préférez ne pas faire tourner de LLM local, Perplexica supporte également les APIs externes : OpenAI, Mistral AI (API cloud), Anthropic, Groq. Dans ce cas, RAM 4 Go suffisent et vous n’installez pas Ollama — vous renseignerez simplement votre clé API dans le fichier de configuration. Le reste du tutoriel est identique.
Étape 1 — Architecture de la pile
Avant d’écrire la moindre commande, il est essentiel de comprendre comment les trois composants s’articulent. Cela vous permettra de diagnostiquer les problèmes réseau, de dimensionner correctement votre serveur, et d’étendre la pile plus tard (par exemple en ajoutant un vector store pour le RAG documentaire).
La pile Perplexica se décompose en trois services distincts qui communiquent entre eux via le réseau Docker interne :
- Perplexica (frontend + backend) : l’application principale, accessible sur le port 3000. Elle reçoit la requête de l’utilisateur, l’envoie à SearXNG pour récupérer des résultats web bruts, puis transmet ces résultats au LLM pour synthèse avec citations. Le code source est en Node.js/TypeScript avec une interface Next.js.
- SearXNG : le métamoteur de recherche open-source. Il agrège simultanément les résultats de Google, Bing, DuckDuckGo, Brave Search, Wikipedia et des dizaines d’autres sources selon la configuration. Il s’exécute sur le port 4000 dans notre configuration et n’est pas exposé directement à l’extérieur — Perplexica le consomme en interne.
- Ollama : le runtime LLM local. Il télécharge et sert des modèles open-source (ici Mistral 7B) via une API REST compatible OpenAI sur le port 11434. Perplexica l’interroge pour générer la réponse synthétisée. Si vous utilisez une API externe, ce service est remplacé par un simple appel HTTPS sortant.
Sur le plan réseau Docker, les trois services partagent un réseau bridge interne nommé perplexica-network. Seul le port 3000 de Perplexica est publié vers l’hôte (et éventuellement vers votre intranet). SearXNG et Ollama restent inaccessibles depuis l’extérieur — c’est une bonne pratique de sécurité que nous maintiendrons tout au long de ce guide.
Étape 2 — Déployer SearXNG
SearXNG nécessite une configuration minimale avant de démarrer : il faut notamment lui indiquer d’accepter les requêtes en format JSON (format attendu par Perplexica) et de désactiver l’interface web publique si vous ne souhaitez pas l’exposer directement. Commencez par créer le répertoire de configuration.
# Créer la structure de répertoires pour le projet
mkdir -p ~/perplexica/searxng
cd ~/perplexica
# Télécharger le fichier de configuration SearXNG de référence
curl -o searxng/settings.yml \
https://raw.githubusercontent.com/searxng/searxng/master/searx/settings.yml
Ce fichier settings.yml contient la configuration complète de SearXNG. Vous devez y apporter deux modifications critiques pour que Perplexica fonctionne correctement. Ouvrez le fichier avec votre éditeur préféré (nano searxng/settings.yml) et localisez la section search. Assurez-vous que le format JSON est activé dans les formats autorisés.
# Dans searxng/settings.yml — section search
search:
safe_search: 0
autocomplete: ""
default_lang: "fr-FR"
formats:
- html
- json # ← Cette ligne est indispensable pour Perplexica
Sans la ligne - json, SearXNG retournera des erreurs 400 à chaque requête de Perplexica car le backend attend une réponse JSON et non HTML. C’est l’erreur numéro un rencontrée lors d’une première installation. Une fois la configuration en place, SearXNG est prêt à être orchestré via Docker Compose dans l’étape suivante.
Étape 3 — Déployer Perplexica via Docker Compose
Le dépôt officiel Perplexica fournit un fichier docker-compose.yaml complet qui orchestre tous les services. Plutôt que de le réécrire de zéro, nous allons cloner le repo et y apporter les ajustements nécessaires pour notre environnement. Cette approche vous permet aussi de recevoir les mises à jour futures via un simple git pull.
# Cloner le dépôt officiel
git clone https://github.com/ItzCrazyKns/Perplexica.git ~/perplexica/app
cd ~/perplexica/app
# Copier le fichier de configuration exemple
cp sample.config.toml config.toml
Le fichier config.toml est le cœur de la configuration Perplexica. Ouvrez-le et renseignez les paramètres essentiels. À ce stade, indiquez simplement l’URL de SearXNG — nous configurerons Ollama à l’étape suivante.
# config.toml — paramètres essentiels
[GENERAL]
PORT = 3000
SIMILARITY_MEASURE = "cosine" # ou "dot" selon vos préférences
[API_KEYS]
OPENAI = "" # Laisser vide si vous utilisez Ollama
GROQ = "" # Laisser vide si vous utilisez Ollama
[API_ENDPOINTS]
SEARXNG = "http://searxng:4000" # Nom de service Docker interne
OLLAMA = "http://ollama:11434" # Nom de service Docker interne
Maintenant, examinez le fichier docker-compose.yaml fourni par le repo. Il définit déjà les services perplexica-backend, perplexica-frontend, et searxng. Vous devez y ajouter le service Ollama et monter votre configuration SearXNG personnalisée.
# Extrait docker-compose.yaml — ajouts nécessaires
services:
searxng:
image: searxng/searxng:latest
ports:
- "127.0.0.1:4000:8080" # Exposé uniquement en local
volumes:
- ~/perplexica/searxng:/etc/searxng:rw
networks:
- perplexica-network
restart: unless-stopped
ollama:
image: ollama/ollama:latest
ports:
- "127.0.0.1:11434:11434" # Exposé uniquement en local
volumes:
- ollama-data:/root/.ollama # Persistance des modèles
networks:
- perplexica-network
restart: unless-stopped
volumes:
ollama-data:
networks:
perplexica-network:
driver: bridge
Notez que les ports de SearXNG et Ollama sont liés à 127.0.0.1 uniquement — ils ne sont pas accessibles depuis le réseau extérieur. Seul Perplexica sur le port 3000 sera exposé à votre intranet. Lancez maintenant la pile complète.
# Démarrer tous les services en arrière-plan
docker compose up -d
# Vérifier que les 4 conteneurs sont actifs
docker compose ps
La commande docker compose ps doit afficher quatre lignes avec le statut running ou healthy. Si un service affiche exited, consultez ses logs avec docker compose logs pour identifier la cause. Les erreurs les plus fréquentes à ce stade sont liées aux permissions du répertoire SearXNG ou à un port déjà occupé.
Étape 4 — Configurer Ollama backend avec Mistral 7B
Ollama est désormais en cours d’exécution dans son conteneur, mais aucun modèle n’y est encore chargé. L’interface Perplexica affichera une erreur si vous tentez une recherche avant d’avoir téléchargé au moins un modèle. Mistral 7B en version quantifiée Q4 est le choix optimal pour la plupart des serveurs west-africains : il offre un excellent équilibre entre qualité des réponses et consommation mémoire (environ 4,5 Go de RAM), et ses performances en synthèse et en compréhension du français sont remarquables pour sa taille.
# Télécharger Mistral 7B Q4 dans le conteneur Ollama
# Attention : ~4 Go à télécharger — prévoir selon votre bande passante
docker exec -it perplexica-app-ollama-1 ollama pull mistral
# Vérifier que le modèle est bien chargé
docker exec perplexica-app-ollama-1 ollama list
La commande ollama list doit retourner une ligne avec mistral:latest, sa taille (~4,1 Go) et la date de téléchargement. Le téléchargement peut prendre entre 5 et 45 minutes selon votre connexion — il n’est effectué qu’une seule fois grâce au volume Docker ollama-data qui persiste les modèles entre les redémarrages.
Une fois le modèle disponible, retournez dans config.toml et vérifiez que la section [CHAT_MODEL] pointe bien vers Ollama et Mistral. Perplexica détecte automatiquement les modèles disponibles dans Ollama au démarrage — un redémarrage du service Perplexica peut être nécessaire si vous avez téléchargé le modèle après le premier lancement.
# Redémarrer uniquement Perplexica (sans toucher SearXNG ni Ollama)
docker compose restart perplexica-backend perplexica-frontend
Après le redémarrage, ouvrez l’interface Perplexica sur http://. Dans le menu de configuration (icône engrenage), le modèle mistral:latest doit apparaître dans la liste déroulante des modèles Ollama disponibles. Sélectionnez-le et sauvegardez.
Étape 5 — Premier search avec citations
Votre moteur de recherche IA est opérationnel. Il est temps de valider le bon fonctionnement de bout en bout avec une requête réelle. Commencez par une recherche simple à portée professionnelle pour vérifier que le pipeline complet fonctionne : SearXNG récupère des résultats, Perplexica les transmet au LLM, et le LLM synthétise une réponse citée.
Ouvrez http:// dans votre navigateur. Dans le champ de recherche, saisissez par exemple : « Quelles sont les obligations comptables d’une SARL selon le droit OHADA ? ». Puis cliquez sur le bouton de recherche ou appuyez sur Entrée.
Perplexica doit afficher une réponse structurée en quelques secondes (10 à 30 secondes pour Mistral 7B sur CPU, 2 à 5 secondes sur GPU). La réponse comporte des numéros de citations entre crochets comme [1], [2], etc., chacun lié à une source web récupérée par SearXNG. En bas de la réponse, la liste des sources est affichée avec leur URL.
Si la réponse s’affiche correctement avec des citations, votre pile Perplexica est entièrement fonctionnelle. Si vous voyez une erreur du type « No results found », vérifiez que SearXNG peut accéder à Internet depuis le conteneur avec docker exec perplexica-app-searxng-1 curl -s https://duckduckgo.com | head -5. Si cette commande retourne du HTML, SearXNG est bien connecté.
Étape 6 — Modes de recherche spécialisés
Perplexica propose plusieurs modes de recherche qui orientent SearXNG vers des sources spécifiques. Ces modes sont particulièrement utiles dans un contexte professionnel pour cibler la nature des informations recherchées, qu’il s’agisse de littérature académique, de documentation technique ou de retours d’expérience communautaires sur des projets open-source.
Les modes disponibles sont accessibles via le sélecteur en haut à gauche de l’interface :
- Web (défaut) : recherche générale tous moteurs confondus. Idéal pour les questions factuelles, l’actualité technique, les documentations.
- Academic : oriente SearXNG vers Google Scholar, Semantic Scholar, arXiv. Parfait pour les chercheurs, les étudiants en master, les professionnels cherchant des études de cas rigoureuses. Résultats biaisés vers les publications scientifiques et les thèses.
- YouTube : interroge YouTube via SearXNG. Dans un cadre professionnel, ce mode est utile pour trouver des conférences techniques (PyCon, KubeCon, DockerCon), des démonstrations d’outils open-source, ou des tutoriels en langue française pour la formation interne.
- Reddit : interroge les subreddits techniques via SearXNG. Utile pour la veille sur les retours d’expérience communautaires (r/selfhosted, r/sysadmin, r/devops), les comparaisons d’outils, les solutions à des problèmes rares.
- Writing : mode sans accès web, le LLM répond depuis sa connaissance interne. Utile pour la rédaction, la reformulation, la génération de contenu structuré.
Dans le contexte ouest-africain, le mode Academic est particulièrement précieux pour accéder à la littérature sur le droit OHADA, les études de marché sur l’économie numérique africaine, ou la recherche agronomique — des domaines souvent absents des premiers résultats web généraux. Notez que les résultats dépendent des sources indexées par SearXNG : vous pouvez ajouter des moteurs supplémentaires dans searxng/settings.yml section engines selon vos besoins spécifiques.
Étape 7 — Intégrer dans votre intranet
Perplexica tourne sur le port 3000, mais pour une intégration propre dans un intranet d’entreprise, vous allez vouloir le placer derrière un reverse proxy Nginx ou Caddy avec un sous-domaine dédié (par exemple search.votre-entreprise.local) et une authentification HTTP basique pour restreindre l’accès aux employés. Voici la configuration Nginx minimale.
# /etc/nginx/sites-available/perplexica
server {
listen 80;
server_name search.votre-entreprise.local;
# Authentification basique (optionnelle mais recommandée)
auth_basic "Accès réservé — Entreprise";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Nécessaire pour le streaming de réponses
proxy_buffering off;
proxy_read_timeout 120s;
}
}
Le paramètre proxy_buffering off est indispensable. Perplexica streame sa réponse token par token (comme ChatGPT), et sans ce paramètre, Nginx bufferiserait toute la réponse avant de l’envoyer au client — l’interface s’afficherait alors d’un bloc au lieu de s’afficher progressivement. Le proxy_read_timeout 120s évite que Nginx coupe la connexion sur les requêtes longues (modèle LLM lent sur CPU).
Pour créer un fichier de mots de passe, utilisez htpasswd : sudo htpasswd -c /etc/nginx/.htpasswd prenom.nom. Activez le site avec sudo ln -s /etc/nginx/sites-available/perplexica /etc/nginx/sites-enabled/ puis rechargez Nginx. Votre moteur de recherche IA est maintenant disponible sur le réseau interne de l’entreprise.
Erreurs fréquentes
La majorité des problèmes rencontrés lors de l’installation de Perplexica proviennent de la communication inter-services ou de la configuration JSON de SearXNG. Voici un tableau de diagnostic rapide.
| Erreur observée | Cause probable | Solution |
|---|---|---|
SEARXNG_URL connection refused |
SearXNG n’a pas démarré ou URL incorrecte dans config.toml | Vérifier docker compose ps, contrôler que l’URL utilise le nom de service Docker (http://searxng:4000) et non localhost |
400 Bad Request sur SearXNG |
Format JSON non activé dans settings.yml | Ajouter - json dans la section formats de searxng/settings.yml, puis docker compose restart searxng |
model not found Ollama |
Modèle pas encore téléchargé ou nom incorrect | Exécuter docker exec et vérifier le nom exact avec ollama list |
| Réponse vide, pas de citations | SearXNG ne renvoie aucun résultat (IP bloquée, DNS) | Tester la connectivité depuis le conteneur SearXNG : docker exec |
| Interface figée, pas de streaming | proxy_buffering on sur Nginx |
Ajouter proxy_buffering off; dans le bloc location / du vhost Nginx |
| Lenteur extrême (>60s par réponse) | Modèle LLM trop grand pour le CPU disponible | Utiliser mistral:7b-instruct-q4_0 (version la plus légère) ou basculer sur l’API Mistral cloud pour les machines avec peu de RAM |
CORS error dans le navigateur |
Perplexica accédé directement sans reverse proxy ou mauvaise config | Toujours accéder via Nginx/Caddy, ne pas contourner le reverse proxy |
Adaptation au contexte ouest-africain
Perplexica prend une dimension stratégique particulière pour les organisations ouest-africaines. L’économie principale est immédiate : Perplexity Pro coûte 20 USD/mois par utilisateur, soit 12 000 à 13 000 FCFA mensuels par poste. Pour une PME de 5 personnes utilisant quotidiennement un moteur de recherche IA, c’est 60 à 100 USD mensuels qui partent en abonnements SaaS américains. Perplexica s’exécute sur un VPS à 8-15 USD/mois chez des hébergeurs comme Hostinger, Hetzner ou OVHcloud — partagé entre toute l’équipe sans limite d’utilisateurs.
La souveraineté des données est le second enjeu. Dans les secteurs sensibles — droit, finance, administration, recherche universitaire — les requêtes envoyées à Perplexity Pro traversent des datacenters soumis au droit américain (Cloud Act). Avec Perplexica self-hosted, la requête « Quel est le régime fiscal des importations de matériels informatiques au Sénégal selon le Code des Douanes ? » ne quitte jamais votre réseau. C’est un argument décisif pour les cabinets d’avocats, les greffes des tribunaux de commerce, ou les directions des systèmes d’information des ministères qui commencent à explorer l’IA.
L’intégration de sources locales via RAG est la prochaine étape naturelle. Perplexica supporte le mode RAG où vous pouvez indexer vos propres documents dans un vector store local (compatible avec les tutoriels de ce cluster sur Qdrant et pgvector). Un juriste sénégalais pourra interroger simultanément le web ET sa bibliothèque d’Actes Uniformes OHADA, de jurisprudences CCJA, ou de textes de loi UEMOA — le tout sans envoyer un seul document à un service cloud. Pour les centres de formation, cela signifie un moteur de recherche intelligent sur l’ensemble du catalogue de cours, des supports pédagogiques et des projets étudiants archivés.
Sur les contraintes locales : si votre bande passante est limitée (ADSL ou 4G partagée), le téléchargement initial du modèle Mistral 7B (~4 Go) est l’opération la plus lourde — planifiez-la la nuit. Une fois en production, les requêtes Perplexica sont légères en bande passante (quelques Ko par requête). Pour les coupures d’électricité fréquentes, le flag restart: unless-stopped dans le Docker Compose assure le redémarrage automatique de tous les services après une coupure de courant et un redémarrage du serveur.
Tutoriels frères dans le cluster
- pgvector : recherche vectorielle native dans PostgreSQL — ajoutez une couche RAG à Perplexica en stockant vos embeddings directement dans votre base PostgreSQL existante
- Ollama avancé : multi-GPU, API REST, gestion des modèles — optimisez le backend LLM de Perplexica pour un usage intensif en équipe
- Open WebUI : interface ChatGPT self-hosted pour Ollama — complémentaire à Perplexica pour les usages de chat sans recherche web
Pour aller plus loin
- Dépôt officiel Perplexica : github.com/ItzCrazyKns/Perplexica — issues, changelog, roadmap, configurations avancées (multi-modèles, embeddings locaux)
- Retour au pilier du cluster : Vector DB self-hosted 2026 : Qdrant, Weaviate, Chroma, Milvus — pour comprendre comment brancher un vector store à Perplexica
- SearXNG documentation : docs.searxng.org — configuration des moteurs, proxies, filtres de contenu
- Ollama model library : ollama.com/library — liste complète des modèles disponibles (Llama 3, Gemma 2, Qwen2, Phi-3, etc.)
FAQ
Perplexica est-il vraiment comparable à Perplexity Pro en qualité de réponse ?
La qualité dépend du modèle LLM utilisé. Avec Mistral 7B local, les réponses sont bonnes pour les questions factuelles et la synthèse de documents, mais légèrement en dessous de Perplexity Pro qui utilise des modèles plus grands (GPT-4, Claude Sonnet). Si vous connectez Perplexica à l’API Mistral Large ou GPT-4o, la qualité devient comparable. L’avantage de Perplexica n’est pas la performance brute mais la confidentialité, la personnalisation et l’économie de coût.
Peut-on utiliser Perplexica sans serveur dédié, sur un PC de bureau ?
Oui, Perplexica fonctionne parfaitement en local sur un PC sous Windows (via Docker Desktop), macOS ou Linux. Sur Windows, activez WSL2 et Docker Desktop avant de suivre ce guide. La RAM minimum reste 8 Go pour Mistral 7B. Cette configuration est idéale pour un usage individuel ou pour tester avant un déploiement serveur. Notez que le service ne sera accessible que depuis votre machine — pas depuis le réseau de l’entreprise.
Comment indexer des documents internes (PDF, Word) pour les interroger avec Perplexica ?
Perplexica intègre nativement un mode « Upload file » qui permet d’attacher un document à une requête pour que le LLM l’analyse directement. Pour une indexation persistante de larges corpus documentaires, la meilleure approche est de combiner Perplexica avec un vector store local (pgvector ou Qdrant) : vous indexez vos documents en embeddings, et Perplexica interroge ce vector store en plus du web. La configuration se fait dans config.toml section [EMBEDDINGS]. Consultez le tutoriel pgvector de ce cluster pour les détails d’implémentation.
Quels modèles LLM sont compatibles avec Perplexica en dehors de Mistral ?
Perplexica supporte tous les modèles disponibles via Ollama (Llama 3.1, Gemma 2, Qwen2.5, Phi-3, DeepSeek-R1, etc.) ainsi que les APIs externes OpenAI, Anthropic, Mistral AI, Groq et LM Studio. Vous pouvez changer de modèle à la volée depuis l’interface sans redémarrer les services. Pour un usage en français, Mistral 7B et Llama 3.1 8B donnent les meilleurs résultats parmi les modèles locaux.
Comment mettre à jour Perplexica vers une nouvelle version ?
Puisque vous avez cloné le dépôt Git, la mise à jour se fait en trois commandes : cd ~/perplexica/app && git pull && docker compose pull && docker compose up -d --build. L’option --build reconstruit les images locales si des changements de code le nécessitent. Vos données et configuration dans config.toml sont préservées. Consultez le changelog des releases avant chaque mise à jour pour détecter les changements cassants éventuels.
SearXNG peut-il être utilisé pour d’autres applications que Perplexica ?
Tout à fait. SearXNG est un projet open-source indépendant qui peut servir de moteur de recherche souverain pour toute votre organisation, accessible via un navigateur standard. Une fois déployé pour Perplexica, vous pouvez exposer son interface web sur un port dédié pour les utilisateurs qui veulent simplement faire des recherches agrégées sans synthèse LLM. C’est un outil de confidentialité en soi — il ne trace pas les requêtes et ne profile pas les utilisateurs, contrairement aux moteurs commerciaux.