Pourquoi self-héberger Quivr sur un VPS
Quivr organise vos connaissances en briques de savoir (les brains) et utilise un pipeline RAG moderne s'appuyant sur Supabase (PostgreSQL + pgvector) pour le stockage vectoriel, un backend Python (FastAPI) et un frontend Next.js. La version cloud impose ses quotas et stocke vos données chez l'éditeur ; en l'hébergeant sur un VPS, vous gardez la maîtrise de la base Supabase, des fichiers uploadés et des clés LLM. C'est particulièrement pertinent pour une agence qui veut un knowledge base IA partagé entre consultants, avec authentification, sans confier des documents clients à un service tiers et sans plafond d'usage artificiel.
Bénéfices concrets de l'auto-hébergement
- Stockage de toutes vos connaissances dans votre propre instance Supabase
- Organisation en plusieurs brains thématiques avec gestion fine des accès
- Ingestion variée : PDF, DOCX, audio transcrit, pages web, fichiers texte
- API REST exploitable pour intégrer Quivr dans vos applications maison
- Choix libre du LLM (OpenAI, Anthropic, Ollama local) sans facturation imposée
- Aucun quota de questions ni de stockage dicté par un fournisseur SaaS
Prérequis matériels et logiciels
Quivr est une stack multi-services (frontend, backend, worker, Supabase complet, Redis). C'est l'outil le plus gourmand de cette série côté composants. Prévoyez 4 vCPU et 8 Go de RAM au minimum, 16 Go étant confortable si vous y ajoutez un LLM local, plus 20 à 30 Go de disque pour la base Postgres, les embeddings et les fichiers. Côté logiciel : Docker et Docker Compose impérativement (la stack en dépend), un domaine avec sous-domaines pour le frontend et l'API, et au moins une clé API LLM ainsi qu'une clé d'embeddings. Une bonne bande passante facilite l'ingestion de gros fichiers.
Déploiement de Quivr avec Docker Compose
Cloner et configurer l'environnement
Sur le VPS, exécutez git clone https://github.com/QuivrHQ/quivr && cd quivr. Copiez les fichiers d'exemple : cp .env.example .env et renseignez les clés (OPENAI_API_KEY, clés Supabase, JWT_SECRET_KEY).
Initialiser Supabase
Quivr embarque sa propre stack Supabase. Lancez la migration de base de données fournie pour créer les tables, les extensions pgvector et les politiques RLS nécessaires au stockage des brains et des embeddings.
Démarrer la stack complète
Lancez tous les services avec docker compose pull && docker compose up -d. La stack inclut le backend FastAPI, le worker d'ingestion, Redis et le frontend Next.js. Vérifiez l'état avec docker compose ps.
Vérifier le worker d'ingestion
Le traitement des fichiers passe par un worker asynchrone. Surveillez ses logs (docker compose logs -f worker) lors d'un premier upload pour confirmer que le découpage et la vectorisation aboutissent sans erreur.
Configurer le reverse proxy et le SSL
Mappez app.votredomaine.ma vers le frontend et api.votredomaine.ma vers le backend via Caddy ou Nginx, chacun avec son certificat Let's Encrypt. Assurez-vous que le frontend pointe bien vers l'URL publique de l'API dans son .env.
Créer le premier compte et tester
Ouvrez le frontend, créez un compte via l'authentification Supabase, créez un brain, uploadez un document et posez une question pour valider la chaîne RAG de bout en bout.
Surveillez la mémoire du worker d'ingestion : les gros PDF et les fichiers audio à transcrire peuvent saturer la RAM et faire tuer le conteneur par l'OOM killer. Limitez la taille des uploads côté reverse proxy (client_max_body_size sous Nginx) et, si vous ingérez beaucoup, déportez les embeddings vers un service dédié plutôt que de tout traiter sur le worker par défaut.