Guide de déploiement

AnythingLLM 1.17 multi-utilisateurs sur VPS : guide complet

Déployer sur un VPS Cloud →

Tutoriel

AnythingLLM 1.17 multi-utilisateurs sur VPS : guide complet

Intelligence Artificielle10 min de lecture10 étapes

AnythingLLM supporte le mode multi-utilisateurs depuis plusieurs versions, et la v1.17.0 (1er octobre 2026) pousse encore plus loin avec un rôle Manager dédié, la diarisation de réunions avec Nemotron 3 et Parakeet Redux, en complément du support natif de Google Vertex AI introduit dans la v1.16.2 (22 septembre 2026). Pour une agence ou un développeur qui paie un abonnement ChatGPT Team ou Claude for Teams, cette combinaison reproduit exactement ce modèle en self-hosted : espaces de travail isolés par client, RAG sur vos propres documents, et zéro donnée transmise à un tiers. Ce guide couvre la configuration Docker Compose fonctionnelle, la création d'utilisateurs via l'interface Admin, et les erreurs réelles rencontrées au montage.

Sommaire· Ce que change la version v1.17.0 pour un usage agence1/8
  1. 01Ce que change la version v1.17.0 pour un usage agence
  2. 02Prérequis avant de démarrer
  3. 03Déployer AnythingLLM v1.17.0 avec Docker Compose
  4. 04Gérer les espaces de travail et les rôles en pratique
  5. 05Sauvegarder et restaurer l'instance
  6. 06Dépannage : erreurs réelles rencontrées au montage
  7. 07AnythingLLM vs alternatives RAG auto-hébergées
  8. 08Pour aller plus loin sur votre infrastructure IA

Ce que change la version v1.17.0 pour un usage agence

AnythingLLM supporte le mode multi-utilisateurs depuis plusieurs versions. La v1.17.0 (1er octobre 2026) affine ce système en ajoutant un troisième rôle — Manager — qui peut créer des espaces de travail, inviter des utilisateurs et gérer les documents sans pour autant accéder aux paramètres système comme les clés API ou la configuration LLM. Pour une agence, ce rôle permet de déléguer l'administration d'un client à un chef de projet sans exposer toute l'infrastructure. La diarisation de réunions s'appuie désormais sur Nemotron 3 pour la reconnaissance du locuteur et sur Parakeet Redux pour la transcription — deux modèles exécutables localement sur un VPS équipé d'un GPU, ou délégables à une API Nvidia. Google Vertex AI était déjà disponible depuis la v1.16.2 (22 septembre 2026) en tant que fournisseur LLM configurable directement depuis l'interface, sans patch manuel du fichier de configuration. Ces apports récents font de cette combinaison v1.16.2 + v1.17.0 la configuration la plus complète pour un usage multi-client structuré.

Prérequis avant de démarrer

  • VPS 4 Go RAM minimum — 2 vCPU / 4 Go pour les API cloud, 4 vCPU / 8 Go si vous embarquez un modèle d'embedding local ou Parakeet Redux
  • 20 Go de disque SSD — les vecteurs LanceDB et le cache de documents grossissent avec le corpus ; prévoir de la marge
  • Docker et Docker Compose v2 — vérifiez avec docker compose version (sans tiret) ; la v1 (tiret) ne supporte pas tous les healthchecks
  • Un sous-domaine dédié — par exemple chat.votre-domaine.com ; le port 3001 ne doit pas être exposé publiquement en direct
  • Un reverse proxy actif — Nginx ou Caddy pour le TLS Let's Encrypt et la limite d'upload de documents
  • Une clé API LLM — OpenAI, Anthropic, Vertex AI ou un Ollama local déjà en cours d'exécution sur le VPS
  • Le port 3001 libre — AnythingLLM l'utilise par défaut ; vérifiez avec ss -tlnp | grep 3001 avant de lancer

Déployer AnythingLLM v1.17.0 avec Docker Compose

  1. Créer l'arborescence et régler les permissions

    Connectez-vous en SSH et créez le dossier de travail avec mkdir -p /opt/anythingllm/storage. AnythingLLM tourne avec l'UID 1000 à l'intérieur du conteneur ; sans correction de permission, le volume refuse l'écriture au premier démarrage. Appliquez chown -R 1000:1000 /opt/anythingllm/storage. Si vous avez préféré chmod -R 777, ça fonctionne mais élargit inutilement l'accès : préférez le chown ciblé.

  2. Rédiger le fichier docker-compose.yml

    Créez /opt/anythingllm/docker-compose.yml avec le contenu suivant. Le service s'appelle anythingllm, image mintplexlabs/anythingllm:latest, restart: unless-stopped. Volumes : ./storage:/app/server/storage. Ports : 3001:3001 (à fermer au pare-feu, seul le reverse proxy y accède). Variables d'environnement dans la section env_file: .env. Réseau : créez un réseau proxy partagé avec votre reverse proxy pour éviter d'exposer le port 3001 sur l'interface publique.

  3. Rédiger le fichier .env

    Créez /opt/anythingllm/.env avec au minimum les trois variables suivantes. JWT_SECRET : une chaîne aléatoire d'au moins 32 caractères, générée par openssl rand -hex 32 — ne la changez jamais après le premier démarrage, tous les tokens de session sont invalidés. STORAGE_DIR : /app/server/storage (doit correspondre au chemin cible du volume). SERVER_PORT : 3001. Ajoutez ensuite les variables de votre fournisseur LLM, par exemple LLM_PROVIDER=openai et OPEN_AI_KEY=sk-... pour OpenAI, ou LLM_PROVIDER=gemini et GEMINI_API_KEY=... pour Vertex AI via l'adaptateur Gemini.

  4. Démarrer le conteneur et vérifier les logs

    Depuis /opt/anythingllm, lancez docker compose up -d. Attendez 30 secondes puis vérifiez que le service écoute avec docker compose logs --tail=50. Vous devez voir la ligne Server started on port 3001. Si le log affiche EACCES: permission denied, mkdir '/app/server/storage/...', le chown de l'étape 1 n'a pas été appliqué au bon chemin — recommencez l'étape 1 puis docker compose restart.

  5. Configurer le reverse proxy et obtenir le certificat TLS

    Avec Nginx, créez un vhost qui proxifie https://chat.votre-domaine.com vers http://127.0.0.1:3001. Ajoutez client_max_body_size 100m dans le bloc server pour autoriser l'upload de gros PDF. Demandez le certificat avec certbot --nginx -d chat.votre-domaine.com. Avec Caddy, la directive reverse_proxy localhost:3001 suffit, le TLS est automatique.

  6. Créer le compte administrateur lors du premier accès

    Ouvrez https://chat.votre-domaine.com dans un navigateur. L'interface vous propose de créer le premier compte administrateur — ce compte est le seul à pouvoir modifier les clés API, le fournisseur LLM et les paramètres système. Choisissez un mot de passe fort, AnythingLLM ne propose pas de réinitialisation par e-mail en self-hosted sans configuration SMTP supplémentaire.

  7. Activer le mode multi-utilisateurs et inviter un second utilisateur

    Dans l'interface Admin, allez dans Settings → Security → activez Multi-user mode. Un bouton Invite User apparaît dans le menu utilisateurs. Renseignez l'adresse e-mail, choisissez le rôle (Default ou Manager), et copiez le lien d'invitation généré. Le rôle Manager peut gérer les workspaces et les documents ; le rôle Default accède uniquement aux workspaces auxquels il est assigné.

  8. Créer un espace de travail isolé et l'assigner à un utilisateur

    Depuis le tableau de bord, cliquez sur New Workspace, nommez-le (par exemple Client Dupont). Glissez vos PDF dans le workspace, cliquez sur Save & Embed pour lancer la vectorisation. Une fois l'embedding terminé, allez dans les paramètres du workspace → Manage Users et ajoutez uniquement les utilisateurs autorisés. Les utilisateurs non assignés ne voient pas ce workspace.

  9. Configurer Google Vertex AI comme fournisseur LLM

    Dans Settings → LLM Provider, sélectionnez Google Gemini (qui utilise l'API Vertex AI sous le capot via l'adaptateur natif disponible depuis la v1.16.2). Renseignez votre clé API Google (GEMINI_API_KEY) et choisissez le modèle. Si vous préférez l'authentification par compte de service GCP, exportez GOOGLE_APPLICATION_CREDENTIALS vers le chemin du fichier JSON dans votre .env et redémarrez le conteneur avec docker compose restart.

  10. Mettre à jour sans perte de données

    Pour passer à une version supérieure, arrêtez le conteneur avec docker compose down, modifiez le tag de l'image dans docker-compose.yml (exemple : mintplexlabs/anythingllm:v1.17.0), puis exécutez docker compose pull && docker compose up -d. Vos données sont dans ./storage monté en volume : elles survivent à la mise à jour. Vérifiez les logs après redémarrage pour vous assurer qu'aucune migration de schéma n'a échoué.

Épinglez une version précise dans votre docker-compose.yml plutôt que d'utiliser le tag latest. La commande docker image ls mintplexlabs/anythingllm vous donne la version actuellement téléchargée. Ainsi, une mise à jour ne s'applique que quand vous le décidez, et vous pouvez revenir en arrière en changeant uniquement le tag puis en relançant docker compose up -d.

Gérer les espaces de travail et les rôles en pratique

Une fois le mode multi-utilisateurs activé, l'interface Admin expose trois vues distinctes : Users (liste des comptes, rôles, statut actif), Workspaces (liste globale avec le nombre de documents et de conversations) et Invites (liens d'invitation en attente). Pour une agence gérant dix clients, la bonne pratique est de créer un workspace par client, d'y rattacher un utilisateur Manager par client, et de laisser les collaborateurs en rôle Default avec accès limité aux seuls workspaces qui les concernent. Le rôle Manager ne peut pas voir les clés API ni changer le fournisseur LLM : ce cloisonnage évite qu'un client puisse observer la configuration d'un autre. Les conversations restent dans le workspace — elles ne migrent pas si vous déplacez un document entre workspaces. Pensez à nommer vos workspaces de façon explicite dès le départ : renommer un workspace ne modifie pas les chemins de stockage internes, mais peut semer la confusion dans les logs.

Sauvegarder et restaurer l'instance

Tout l'état d'AnythingLLM tient dans le volume ./storage : base vectorielle LanceDB, métadonnées des documents, configuration de l'instance et historique des conversations. Une sauvegarde consiste à archiver ce dossier pendant que le conteneur est arrêté, ou à utiliser rsync vers un stockage distant pendant que le conteneur tourne — LanceDB tolère les lectures concurrentes. Pour une sauvegarde programmatique, ajoutez un service cron dans votre compose qui exécute tar -czf /backup/anythingllm-$(date +%Y%m%d).tar.gz /opt/anythingllm/storage. La restauration suit le chemin inverse : copiez l'archive dans ./storage en respectant les permissions 1000:1000, puis docker compose up -d. Le .env contient le JWT_SECRET : sauvegardez-le séparément, chiffré, car sa perte invalide toutes les sessions actives et les tokens d'API éventuels.

Dépannage : erreurs réelles rencontrées au montage

Voici les cinq erreurs documentées les plus fréquentes lors du déploiement d'AnythingLLM v1.17.0, avec le message exact et la correction appliquée. Première erreur : EACCES: permission denied, mkdir '/app/server/storage/vector-cache' au démarrage. Cause : le dossier storage appartient à root mais le conteneur tourne avec l'UID 1000. Correction : chown -R 1000:1000 /opt/anythingllm/storage puis docker compose restart. Deuxième erreur : address already in use :::3001 dans les logs. Cause : un autre service occupe le port. Correction : ss -tlnp | grep 3001 pour identifier le processus conflictuel, puis le stopper ou changer SERVER_PORT dans .env. Troisième erreur : Invalid JWT secret — all sessions invalidated après un redémarrage. Cause : la variable JWT_SECRET a changé. Correction : restaurez la valeur initiale de JWT_SECRET ou demandez à tous les utilisateurs de se reconnecter. Quatrième erreur : uploads de PDF bloqués à 1 Mo malgré la configuration. Cause : client_max_body_size est défini dans le bloc http de Nginx mais pas dans le bloc server du vhost — le plus local l'emporte. Vérifiez avec nginx -T | grep client_max_body_size. Cinquième erreur : le workspace ne retourne aucune réponse sourcée après l'embedding. Cause : le modèle d'embedding sélectionné à l'ingestion diffère du modèle actif. Les vecteurs sont incompatibles. Correction : supprimez les documents, changez le modèle d'embedding dans les paramètres du workspace, puis réingérez.

AnythingLLM vs alternatives RAG auto-hébergées

Faites défiler le tableau

CritèreAnythingLLM v1.17.0Open WebUILibreChatPrivateGPT
RAG documentaire intégréOui — PDF, Word, URL, Notion, GitHubImport basique sans pipeline RAGVia plugin RAG (config manuelle)Oui — optimisé documents confidentiels
Mode multi-utilisateursAdmin / Manager / Default — supporté nativement, rôle Manager affiné en v1.17.0Gestion basique des utilisateursOui avec rôles par conversationNon — mono-utilisateur par défaut
Espaces de travail isolés par clientOui — cloisonnement natif par workspaceNon — conversations partagéesLimité — par conversation uniquementNon
Fournisseurs LLM supportés20+ (Ollama, OpenAI, Vertex AI, Anthropic…)Ollama + compatibles OpenAIOpenAI, Azure, Anthropic, Ollama…Ollama et compatibles OpenAI
Diarisation de réunionsOui — Nemotron 3 + Parakeet Redux (v1.17.0)NonNonNon
RAM minimale (API cloud)~512 Mo~256 Mo~384 Mo~512 Mo
Interface no-code agents IAOuiNonNonNon
LicenceMITMITMITApache 2.0

Pour aller plus loin sur votre infrastructure IA

AnythingLLM v1.17.0 couvre le cas d'usage RAG multi-client sur un seul VPS. Si votre corpus dépasse plusieurs millions de vecteurs, envisagez de déporter la base vectorielle vers Qdrant dans un conteneur voisin — AnythingLLM le supporte nativement depuis les paramètres de l'instance. Pour les équipes qui veulent comparer les interfaces avant de se décider, l'article sur Open WebUI, LibreChat et Dify détaille les critères de choix selon le profil d'usage. Si vos documents sont soumis à des exigences de confidentialité strictes (RGPD, données médicales, contrats sensibles), l'article sur PrivateGPT explique comment travailler en mode entièrement local sans aucun appel réseau sortant. Ces trois ressources sont complémentaires et couvrent la majorité des architectures IA self-hosted rencontrées en production sur un VPS.

Votre environnement AnythingLLM prêt en quelques minutes

Le template VPS AnythingLLM du catalogue ServOrbit pré-configure l'environnement Docker, les volumes et les permissions au démarrage — vous arrivez directement à l'étape de création du compte administrateur.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet