Pourquoi héberger LibreChat plutôt que d'utiliser ChatGPT Plus
ChatGPT Plus coûte 20 $/mois par personne, ne permet pas de partager une clé API, envoie chaque message aux serveurs d'OpenAI, et vous enferme dans une interface unique. LibreChat self-hosted inverse ce rapport : vous payez les tokens que vous consommez auprès des fournisseurs que vous choisissez, vos conversations restent dans votre MongoDB, et vous pouvez servir dix ou cent collaborateurs depuis un seul VPS à moins de 15 $/mois. Les clés API sont centralisées côté serveur — vos utilisateurs ne les voient jamais. Vous choisissez quels modèles apparaissent dans l'interface, vous pouvez désactiver certains endpoints pour certains rôles, et vous conservez un log complet des échanges pour audit ou conformité. Pour les organisations soucieuses de la confidentialité des données — cabinets juridiques, équipes RH, startups en mode stealth —, c'est la seule solution qui donne une garantie réelle sur le chemin que prennent les données.
ChatGPT Plus vs LibreChat self-hosted
Faites défiler le tableau
| Critère | ChatGPT Plus | LibreChat self-hosted |
|---|---|---|
| Prix par utilisateur | 20 $/mois | Partagé — coût VPS divisé par N |
| Modèles disponibles | GPT-4o, o1 (OpenAI uniquement) | OpenAI, Anthropic, Google, Ollama, Groq… |
| Données des conversations | Stockées chez OpenAI | Stockées dans votre MongoDB |
| Clés API | Gérées par OpenAI | Les vôtres, jamais exposées aux utilisateurs |
| Historique des conversations | Chez OpenAI, exportable | Dans votre base, sauvegardable librement |
| RAG sur vos fichiers | Limité (My Files) | Configurable avec votre propre vectorstore |
| Personnalisation de l'interface | Nulle | Complète (presets, modèles visibles, rôles) |
| Conformité / audit | Dépend des conditions OpenAI | Sous votre contrôle total |
Prérequis serveur
LibreChat repose sur plusieurs services simultanés : l'application principale (Node.js), MongoDB pour les conversations et utilisateurs, Meilisearch pour la recherche dans l'historique, et optionnellement l'API RAG pour interroger des documents. Pour une équipe de 5 à 20 personnes utilisant des API cloud (OpenAI, Anthropic), un VPS 2 vCPU 4 Go RAM suffit — soit environ 10 à 15 $/mois chez ServOrbit. Si vous activez Ollama sur le même serveur pour des modèles locaux, montez à 4 vCPU 8 Go RAM minimum, davantage si vous ciblez des modèles de 13B de paramètres ou plus. Prévoyez 20 Go de disque pour MongoDB, les index Meilisearch et les images Docker. Côté logiciel : Docker Engine 24+ et Docker Compose v2, Git, un sous-domaine pointant vers votre VPS (ex. chat.votre-domaine.com) et le port 443 ouvert dans votre pare-feu.
Installer LibreChat avec Docker Compose
Cloner le dépôt officiel
Connectez-vous en SSH à votre VPS et clonez le dépôt :
git clone https://github.com/danny-avila/LibreChat && cd LibreChat. Le dépôt contient déjà undocker-compose.ymlcomplet qui orchestre l'app, MongoDB et Meilisearch. Copiez le fichier d'environnement exemple :cp .env.example .env.Configurer le fichier .env
Ouvrez
.envet renseignez les variables essentielles. Générez d'abord deux secrets aléatoires :openssl rand -hex 32deux fois pourJWT_SECRETetCREDS_KEY. Ajoutez vos clés API :OPENAI_API_KEY=sk-...et/ouANTHROPIC_API_KEY=sk-ant-.... Pour fermer l'inscription publique et ne créer les comptes que manuellement, posezALLOW_REGISTRATION=false. Pour restreindre à des domaines email spécifiques, ajoutezALLOWED_DOMAINS=votre-entreprise.com. Définissez égalementDOMAIN=https://chat.votre-domaine.com.Lancer la stack
Démarrez tous les services en mode détaché :
docker compose up -d. Au premier lancement, Docker télécharge les images (~1-2 Go) puis démarre les conteneurs. Vérifiez que tout est sain :docker compose ps— tous les services doivent afficherrunning (healthy). L'application écoute surlocalhost:3080. Les logs en temps réel sont accessibles viadocker compose logs -f app.Créer le premier compte administrateur
Ouvrez
http://localhost:3080dans un navigateur ou via un tunnel SSH. Cliquez sur « Create an account » et inscrivez-vous avec votre adresse email professionnelle. SiALLOW_REGISTRATION=falseest posé, ce premier compte devra être créé en activant temporairement l'inscription (ALLOW_REGISTRATION=true), puis re-verrouiller après. Une fois connecté, rendez-vous dans le panneau d'administration pour promouvoir votre compte en admin.Vérifier la connectivité aux LLM
Dans l'interface, sélectionnez le modèle
gpt-4o(ouclaude-3-5-sonnet) et envoyez un message test. Si la réponse arrive correctement, votre clé API est bien reconnue. En cas d'erreur 401, vérifiez la valeur dans.envpuis relancez :docker compose restart app.
Configurer plusieurs fournisseurs LLM dans librechat.yaml
Le fichier librechat.yaml est le cœur de la configuration multi-fournisseurs. Il permet d'activer ou désactiver des endpoints, de nommer les modèles affichés aux utilisateurs, de définir des paramètres par défaut (température, max tokens) et de contrôler l'accès par rôle. À la racine du projet, copiez le modèle : cp librechat.example.yaml librechat.yaml. Les fournisseurs officiellement supportés (OpenAI, Anthropic, Google, Azure OpenAI) ont une section dédiée sous endpoints. Pour les fournisseurs tiers ou Ollama, utilisez la section custom.
Ajouter OpenAI, Anthropic et un endpoint custom dans librechat.yaml
Activer l'endpoint OpenAI
Sous la clé
endpoints.openAI, posezenabled: trueet listez les modèles à exposer :models: { default: [gpt-4o, gpt-4o-mini, o1-mini], fetch: false }. Le champfetch: falseévite un appel API au démarrage pour récupérer la liste dynamique — préférable si vous voulez contrôler exactement ce que voient vos utilisateurs.Activer l'endpoint Anthropic
Sous
endpoints.anthropic, posezenabled: trueet listez :models: { default: [claude-3-5-sonnet-20241022, claude-3-haiku-20240307] }. La variableANTHROPIC_API_KEYdéfinie dans.envest automatiquement utilisée. Vous pouvez aussi définirtitleConvo: truepour que LibreChat génère automatiquement un titre de conversation via Claude.Ajouter Google Gemini
Sous
endpoints.google, posezenabled: trueet renseignezGOOGLE_KEYdans.envavec votre clé d'API Google AI Studio. Listez les modèles :gemini-1.5-pro, gemini-1.5-flash. Gemini supporte aussi les appels avec vision (images en entrée).Déclarer Groq comme endpoint custom
Les fournisseurs compatibles OpenAI (Groq, Together AI, Perplexity…) se déclarent sous
endpoints.custom. Exemple pour Groq :name: Groq,apiKey: ${GROQ_API_KEY},baseURL: https://api.groq.com/openai/v1,models: { default: [llama-3.1-70b-versatile, mixtral-8x7b-32768] }. AjoutezGROQ_API_KEY=gsk_...dans.env, puis redémarrez l'app.Appliquer la configuration
Après chaque modification de
librechat.yaml, redémarrez uniquement le service app :docker compose restart app. Vérifiez dans l'interface que les nouveaux endpoints apparaissent dans le sélecteur de modèle. En cas d'erreur de parsing YAML,docker compose logs appl'indiquera au démarrage.
Ajouter Ollama pour les modèles locaux (sans coût API)
Ollama permet de faire tourner des modèles open source (Llama 3, Mistral, Gemma, Phi-3…) directement sur votre VPS, sans clé API et sans que les données quittent le serveur. C'est la solution idéale pour les conversations sensibles ou pour réduire les coûts sur les requêtes à faible valeur. Sur un VPS 4 vCPU 8 Go RAM, les modèles de 3B à 7B de paramètres répondent en quelques secondes ; les modèles 13B sont utilisables mais plus lents. Pour de la production, un VPS avec GPU (ou un dédié Hetzner AX41) change radicalement la donne.
Déployer Ollama en service Docker et le connecter à LibreChat
Ajouter le service Ollama au docker-compose.yml
Ouvrez votre
docker-compose.override.yml(créez-le s'il n'existe pas) et ajoutez :services: ollama: image: ollama/ollama:latest, volumes: [ollama:/root/.ollama], ports: ["11434:11434"]. Redémarrez la stack :docker compose up -d ollama. Ollama expose une API REST compatible avec l'API OpenAI sur le port 11434.Télécharger un modèle
Une fois le conteneur Ollama lancé, téléchargez un modèle :
docker compose exec ollama ollama pull llama3.2:3bpour Llama 3.2 3B (léger, ~2 Go), ouollama pull mistral:7bpour Mistral 7B (~4 Go). Listez les modèles disponibles :docker compose exec ollama ollama list.Configurer l'endpoint Ollama dans librechat.yaml
Dans
librechat.yaml, sousendpoints.custom, ajoutez :name: Ollama,apiKey: ollama,baseURL: http://ollama:11434/v1(le nom de service Docker),models: { default: [llama3.2:3b, mistral:7b] },titleConvo: true,titleModel: llama3.2:3b. Le nom de serviceollamaest résolu automatiquement par le réseau Docker interne.Tester la réponse locale
Dans l'interface LibreChat, sélectionnez l'endpoint « Ollama » et le modèle
llama3.2:3b. Envoyez un message. La réponse est générée entièrement sur votre VPS, sans aucun appel réseau externe. Notez que la vitesse dépend du CPU disponible : sur un VPS 4 vCPU, comptez 5 à 15 secondes pour les premières réponses.
Authentification et gestion des utilisateurs
LibreChat propose plusieurs niveaux d'authentification, de l'inscription locale simple jusqu'à l'intégration OAuth2 avec votre fournisseur d'identité. Pour une équipe, la combinaison idéale est souvent : inscription fermée (ALLOW_REGISTRATION=false), comptes créés par l'admin, et optionnellement un SSO via GitHub, Google ou un provider OIDC maison (Authentik, Keycloak).
Options d'authentification disponibles
- Locale (email / mot de passe) : par défaut, fonctionne sans configuration supplémentaire.
- OAuth2 GitHub :
GITHUB_CLIENT_ID+GITHUB_CLIENT_SECRETdans.env, puis activer sousendpoints.social.githubdanslibrechat.yaml. - OAuth2 Google :
GOOGLE_CLIENT_ID+GOOGLE_CLIENT_SECRET, même principe. - OIDC générique : compatible Authentik, Keycloak, Auth0 — définir
OPENID_CLIENT_ID,OPENID_CLIENT_SECRET,OPENID_ISSUERetOPENID_SCOPEdans.env. - Restriction par domaine email :
ALLOWED_DOMAINS=votre-entreprise.comdans.env— seules les adresses de ce domaine peuvent s'inscrire. - Désactivation de l'inscription publique :
ALLOW_REGISTRATION=false— seul l'admin peut créer des comptes via le panneau d'administration. - Rôles : chaque compte est
userouadmin; les admins accèdent au panneau de gestion des utilisateurs et peuvent modifier les endpoints disponibles par utilisateur.
RAG avec les fichiers : interroger vos documents PDF
LibreChat intègre un service RAG (Retrieval-Augmented Generation) optionnel qui permet aux utilisateurs d'uploader des PDFs, des fichiers texte ou des pages web, et d'interroger leur contenu dans les conversations. Pour l'activer, ajoutez dans .env : RAG_API_URL=http://rag_api:8000. Le service rag_api est déjà présent dans le docker-compose.override.yml officiel : lancez-le avec docker compose --profile rag up -d. LibreChat se connecte au vectorstore (ChromaDB par défaut) pour indexer les documents uploadés. Un VPS 4 Go RAM suffit pour des collections modestes (< 500 documents) ; montez à 8 Go pour de gros corpus. Note : le service RAG est CPU-intensif lors de l'indexation mais léger à l'inférence.
Configurer nginx comme reverse proxy avec HTTPS
Créer le vhost nginx
Sur le serveur, créez
/etc/nginx/sites-available/librechatavec le contenu suivant :server { listen 80; server_name chat.votre-domaine.com; location / { proxy_pass http://localhost:3080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_read_timeout 300s; } }. Leproxy_read_timeout 300sest essentiel pour ne pas couper les réponses LLM longues en streaming. Activez le site :ln -s /etc/nginx/sites-available/librechat /etc/nginx/sites-enabled/ && nginx -t && systemctl reload nginx.Obtenir un certificat Let's Encrypt avec Certbot
Installez Certbot si nécessaire (
apt install certbot python3-certbot-nginx), puis obtenez le certificat :certbot --nginx -d chat.votre-domaine.com. Certbot modifie automatiquement le vhost pour rediriger HTTP → HTTPS et configure le renouvellement automatique. Vérifiez le renouvellement :certbot renew --dry-run.Vérifier WebSocket et streaming
Ouvrez
https://chat.votre-domaine.com, connectez-vous et envoyez un message. Vérifiez dans les DevTools (onglet Network) que la connexion passe bien par WebSocket (101 Switching Protocols). Si les réponses s'affichent d'un coup au lieu de streamer, c'est souvent un proxy intermédiaire (Cloudflare) qui tamponne : activez « Disable buffering » dans votre configuration Cloudflare ou augmentez leproxy_buffering offdans nginx.Activer les mises à jour automatiques (optionnel)
Pour maintenir LibreChat à jour sans intervention manuelle, créez un cron hebdomadaire :
docker compose pull && docker compose up -d --remove-orphans. Notez que les mises à jour majeures peuvent modifier le schéma MongoDB — lisez toujours le CHANGELOG avant de mettre à jour en production.
Maîtriser les coûts LLM avec LibreChat
LibreChat ne facture pas les tokens à votre place — vous payez directement les fournisseurs API avec vos propres clés. Mais self-héberger sans surveiller les coûts peut mener à des surprises. Quelques bonnes pratiques : définissez des limites de tokens par requête (maxContextTokens dans librechat.yaml) pour les modèles coûteux comme GPT-4o ou Claude 3.5 Sonnet ; proposez gpt-4o-mini ou claude-3-haiku comme modèles par défaut pour les utilisateurs moins exigeants ; activez Ollama pour les requêtes à faible enjeu (brouillons, résumés, reformulations) — coût réel : 0 €. Surveillez vos quotas directement dans les dashboards OpenAI et Anthropic, et posez des budget alerts. Pour une équipe de 10 personnes, un budget mixte (GPT-4o pour les cas sérieux + Ollama llama3.2 pour le quotidien) coûte généralement entre 20 et 80 $/mois en tokens, à comparer aux 200 $/mois de 10 abonnements ChatGPT Plus.
LibreChat ou AnythingLLM : lequel choisir ?
Faites défiler le tableau
| Critère | LibreChat | AnythingLLM |
|---|---|---|
| Vocation principale | Interface de chat multi-fournisseurs | Moteur RAG sur documents |
| Multi-modèles dans une UI | Excellent (OpenAI, Anthropic, Google, local) | Bon, mais centré sur un provider par workspace |
| RAG sur documents | Module additionnel configurable | Cœur du produit, prêt à l'emploi |
| Gestion multi-utilisateurs | Comptes et rôles natifs | Mode multi-user et espaces cloisonnés |
| Architecture de déploiement | Stack multi-conteneurs (Mongo, Meili, RAG) | Conteneur unique + base vectorielle |
| Stockage des données | MongoDB auto-hébergé | Volume storage + LanceDB/Qdrant |
| Cas d'usage idéal | Assistant conversationnel d'équipe | Base de connaissances interrogeable |
| Empreinte ressources | Plus lourde (plusieurs services) | Plus légère au démarrage |
Déploiement zéro-cloud : 100 % local
Pour un déploiement entièrement hors-cloud, combinez LibreChat avec Ollama sur le même VPS et désactivez tous les endpoints cloud dans librechat.yaml. Aucune donnée ne quittera jamais le serveur. Ajoutez ALLOW_REGISTRATION=false et un SSO OIDC interne (Authentik) pour boucler le périmètre de sécurité. Cette architecture est particulièrement adaptée aux cabinets d'avocats, aux équipes médicales ou à tout contexte soumis au RGPD où les données ne peuvent pas transiter par des tiers américains. Le coût total se réduit alors au seul VPS — entre 10 et 25 $/mois selon la puissance choisie chez ServOrbit.