Pourquoi self-héberger AnythingLLM sur un VPS
AnythingLLM est avant tout un moteur RAG complet : ingestion de documents, découpage, vectorisation, recherche sémantique et génération, le tout dans une interface multi-utilisateurs. Le cœur du sujet, c'est la donnée : rapports financiers, contrats, documentation produit, base de connaissances support. Sur un VPS, l'embarqueur de documents, la base vectorielle (LanceDB intégré par défaut) et les conversations restent dans vos volumes. Vous contrôlez qui accède à quel espace de travail, vous choisissez le LLM (API cloud ou modèle local), et vous évitez les quotas d'ingestion des offres SaaS. Pour une agence qui gère plusieurs clients, chaque workspace devient un silo étanche sur une infrastructure que vous maîtrisez.
Les bénéfices concrets d'un AnythingLLM auto-hébergé
- Documents confidentiels indexés localement, jamais envoyés à un service d'ingestion tiers.
- Espaces de travail cloisonnés par client ou par équipe, avec gestion des rôles.
- Base vectorielle au choix : LanceDB embarqué, ou Chroma/Qdrant externe sur le même VPS.
- Connexion à n'importe quel fournisseur LLM, y compris un Ollama local pour le zéro-cloud.
- Aucune limite sur le nombre de documents ou de pages ingérées.
- Sauvegarde simple : tout l'état tient dans un seul volume
storageà archiver.
Prérequis matériels et logiciels
Le conteneur AnythingLLM est raisonnable, mais l'embedding de gros corpus consomme CPU et RAM. Visez 2 vCPU / 2 Go de RAM pour démarrer, et 4 vCPU / 8 Go si vous indexez des milliers de documents ou utilisez un modèle d'embedding local. Prévoyez 15 à 20 Go de disque, car les vecteurs et le cache de documents grossissent vite. Docker et Docker Compose sont requis, ainsi qu'un sous-domaine (ex. chat.votre-domaine.ma) et le port 443 ouvert. Si vous restez sur des API cloud pour l'inférence, gardez vos clés sous la main ; pour le 100 % local, prévoyez de la RAM supplémentaire pour le modèle.
Déployer AnythingLLM avec Docker et HTTPS
Initialiser l'environnement
En SSH, créez mkdir -p /opt/anythingllm/storage && cd /opt/anythingllm. Ajustez les permissions du dossier storage qui hébergera la base vectorielle et les documents : chmod -R 777 storage (le conteneur tourne avec un UID dédié).
Écrire le docker-compose et le .env
Utilisez l'image mintplexlabs/anythingllm, mappez le port interne 3001, montez ./storage:/app/server/storage, et pointez la variable STORAGE_DIR. Dans un fichier .env, définissez JWT_SECRET et le provider LLM choisi (LLM_PROVIDER, clés associées).
Démarrer et créer le compte admin
Lancez docker compose up -d. Au premier accès local sur le port 3001, AnythingLLM vous guide pour créer le compte administrateur et configurer le modèle d'embedding et le LLM.
Mettre en place le reverse proxy
Avec Nginx Proxy Manager ou Caddy, routez chat.votre-domaine.ma vers localhost:3001 et activez Let's Encrypt. Pensez à augmenter client_max_body_size côté proxy pour autoriser l'upload de gros documents.
Créer un premier espace de travail
Dans l'interface, créez un workspace, glissez quelques PDF, lancez l'embedding puis testez une question. Vérifiez que les réponses citent bien les sources extraites de vos fichiers.
Activer le mode multi-utilisateurs
Dans les paramètres, passez en mode multi-user, invitez vos collaborateurs et attribuez les rôles. Restreignez chaque utilisateur aux seuls workspaces qui le concernent.
Pour des corpus volumineux, ne restez pas sur LanceDB embarqué : déployez Qdrant dans un conteneur voisin et pointez AnythingLLM dessus via le réseau Docker interne. Qdrant gère mieux les millions de vecteurs, offre du filtrage par métadonnées et reste interrogeable indépendamment, ce qui facilite le debug de vos recherches sémantiques.