Pourquoi self-héberger Khoj sur un VPS
Khoj se distingue par sa capacité à se synchroniser avec vos sources (fichiers Markdown, PDF, notes Obsidian, Notion, GitHub) et à offrir une recherche sémantique plus des réponses conversationnelles. Il propose aussi des agents et une recherche web. Sur un poste, l'index reste local à la machine ; sur un VPS, le serveur Khoj devient un point d'accès central synchronisable depuis plusieurs appareils et plugins (Obsidian, Emacs, navigateur). Vous gardez le contrôle de l'index vectoriel, vous choisissez entre un LLM local via Ollama ou une API, et vos notes personnelles ou professionnelles ne sont jamais confiées au cloud public de l'éditeur.
Bénéfices concrets de l'auto-hébergement
- Index sémantique centralisé, synchronisable depuis plusieurs postes et appareils
- Intégrations natives Obsidian, Emacs et extension navigateur pointant vers votre serveur
- Choix du backend LLM : Ollama local pour le privé, ou API externe si besoin
- Synchronisation de notes Markdown, PDF, org-mode et dépôts sans les exposer au cloud
- Recherche sémantique et chat conversationnel sur votre propre corpus personnel
- Accès distant sécurisé à votre base de connaissances depuis n'importe où
Prérequis matériels et logiciels
Khoj repose sur un backend Django, une base PostgreSQL avec pgvector et un modèle d'embeddings pour l'indexation. En s'appuyant sur une API externe pour le chat, 2 vCPU et 4 Go de RAM suffisent largement, avec 10 à 15 Go de disque selon la taille de votre corpus indexé. Si vous ajoutez un LLM local via Ollama sur le même VPS, montez à 8 Go de RAM minimum. Côté logiciel : Docker et Docker Compose, un domaine pointant vers le VPS, et optionnellement une clé API LLM si vous ne voulez pas de modèle local. Le modèle d'embeddings se télécharge au premier démarrage.
Déploiement de Khoj avec Docker Compose
Récupérer le compose officiel
Sur le VPS, téléchargez le docker-compose.yml fourni par Khoj. Il déclare les services server, database (Postgres + pgvector) et le volume de configuration. Créez un dossier /opt/khoj pour héberger l'ensemble.
Configurer les variables d'environnement
Renseignez KHOJ_DJANGO_SECRET_KEY, les identifiants Postgres et, si vous utilisez une API, la clé du fournisseur. Définissez KHOJ_ADMIN_EMAIL et KHOJ_ADMIN_PASSWORD pour créer le compte administrateur au démarrage.
Démarrer les services
Lancez docker compose up -d. Au premier démarrage, Khoj télécharge le modèle d'embeddings, ce qui peut prendre quelques minutes. Suivez docker compose logs -f server jusqu'à voir le serveur écouter sur le port 42110.
Indexer vos sources
Connectez-vous à l'interface admin, configurez les chemins de contenu ou installez le plugin Obsidian/navigateur en pointant son URL serveur vers votre VPS. Déclenchez une première synchronisation et vérifiez que l'index se peuple.
Reverse proxy et SSL
Placez Caddy devant le port 42110 : khoj.votredomaine.ma { reverse_proxy localhost:42110 }. Le certificat Let's Encrypt est généré automatiquement et tout le trafic passe en HTTPS.
Sécuriser et connecter les clients
Fermez le port 42110 au pare-feu, puis configurez les extensions Obsidian, Emacs et navigateur avec l'URL https://khoj.votredomaine.ma et un jeton d'API généré dans les paramètres pour un accès authentifié.
Khoj sait basculer entre plusieurs fournisseurs de chat depuis son interface admin. Configurez un Ollama local comme backend par défaut pour la confidentialité, et déclarez une API externe en secours uniquement pour les requêtes complexes : vous obtenez le meilleur des deux mondes, confidentialité au quotidien et qualité ponctuelle, sans payer pour chaque interaction.