Pourquoi self-héberger PrivateGPT sur un VPS
PrivateGPT est conçu autour du RAG (Retrieval-Augmented Generation) : il ingère vos documents, les découpe en fragments, calcule des embeddings stockés dans une base vectorielle (Qdrant par défaut), puis répond aux questions en s'appuyant uniquement sur ce corpus. Son argument central est la confidentialité : en mode local, le LLM et les embeddings tournent sur la machine, aucune requête ne sort. Sur un VPS dédié, vous obtenez un assistant documentaire d'entreprise sécurisé, isolé du poste de chacun, avec une base de connaissances centralisée que toute l'équipe interroge, sans jamais exposer des contrats, dossiers RH ou documents juridiques à un service cloud.
Bénéfices concrets de l'auto-hébergement
- Confidentialité totale : documents et embeddings ne quittent jamais le VPS
- Base vectorielle Qdrant centralisée, interrogeable par toute l'équipe au même endroit
- Aucun coût d'API si vous utilisez un LLM local via Ollama ou llama.cpp
- Ingestion de PDF, DOCX, e-mails et pages web dans un corpus unique et privé
- API compatible OpenAI pour brancher PrivateGPT dans vos outils internes
- Conformité facilitée pour les données sensibles (RGPD, secret professionnel)
Prérequis matériels et logiciels
PrivateGPT en mode entièrement local est plus gourmand que d'autres outils car il fait tourner à la fois le modèle d'embeddings et le LLM de génération. Comptez 8 Go de RAM minimum (16 Go recommandés) et 4 vCPU pour un modèle 7B quantifié, plus 20 Go de disque pour les modèles, la base Qdrant et les documents ingérés. Si vous déportez le LLM vers un Ollama sur le même VPS, dimensionnez la RAM en conséquence. Côté logiciel : Docker et Docker Compose, Python 3.11 si vous installez hors conteneur, et un domaine pointant vers le VPS pour exposer l'interface Gradio et l'API.
Déploiement de PrivateGPT en mode local
Préparer le VPS
Installez Docker et clonez le dépôt : git clone https://github.com/zylon-ai/private-gpt && cd private-gpt. Créez un volume persistant pour les données ingérées et la base Qdrant afin de survivre aux redéploiements.
Choisir le profil d'exécution
PrivateGPT fonctionne par profils. Pour un déploiement 100% local avec Ollama, démarrez Ollama puis tirez les modèles : ollama pull mistral pour la génération et ollama pull nomic-embed-text pour les embeddings.
Configurer settings et lancer
Activez le profil ollama dans settings.yaml puis démarrez avec PGPT_PROFILES=ollama make run ou via le compose fourni. Vérifiez dans les logs que la connexion à Ollama et à Qdrant est établie.
Ingérer vos documents
Déposez vos fichiers dans le dossier d'ingestion et lancez make ingest /chemin/vers/docs. PrivateGPT découpe, vectorise et indexe le corpus dans Qdrant. Suivez la progression dans les logs jusqu'à l'indexation complète.
Mettre en place le reverse proxy et le SSL
Exposez l'interface Gradio (port 8001) derrière Caddy ou Nginx avec un certificat Let's Encrypt automatique. Ajoutez une authentification HTTP basique, car l'UI n'en propose pas nativement.
Verrouiller l'accès
Fermez le port 8001 au pare-feu pour ne laisser que le reverse proxy joignable. Vos utilisateurs accèdent à https://docs.votredomaine.ma et interrogent le corpus en langage naturel.
Le profil par défaut télécharge des modèles lourds. Pour un VPS CPU, basculez le LLM et les embeddings vers Ollama (mistral + nomic-embed-text) plutôt que les bindings llama.cpp compilés en local : vous évitez les longues compilations, mutualisez la mémoire avec d'autres conteneurs et gagnez en stabilité lors des redémarrages.