Aller au contenu

Solutions · Chat sur documents

Un VPS pour AnythingLLM

AnythingLLM est un espace de chat privé sur vos propres documents : vous envoyez des fichiers, ils sont indexés dans une base vectorielle intégrée, et vous dialoguez avec eux via un modèle hébergé derrière une clé API ou un modèle local via Ollama. Sa documentation demande 2 GB de RAM, un CPU 2 cœurs avec AVX2 et 5 GB de disque, et qualifie AVX2 de seule exigence stricte. GL2-4 à $11.90 par mois est la machine la moins chère qui atteint ce minimum ; BD-8 à $12.90 est celle que nous achèterions, car l’embedder tourne sur le CPU de cette machine.

Ce qu’il lui faut

Logiciels issus de la documentation, tailles indiquées avec leur source

Les logiciels et la configuration de sécurité proviennent de la documentation du projet lui-même. Lorsque le projet ne publie aucun chiffre matériel, les tailles indiquent de qui elles viennent.

D’après docs.anythingllm.com et le guide Docker du projet

  • « RAM 2GB, 2-core CPU with AVX2, Storage 5GB » : le minimum de la documentation. Sur une machine cloud, le guide Docker indique au moins 2 GB de RAM et au minimum 10 GB de disque.
  • AVX2 est « la seule exigence stricte » : la base vectorielle par défaut est compilée pour les CPU de 2013 et après, et sans elle le serveur s’arrête au démarrage. Vérifiez à l’intérieur de la machine : lscpu | grep -o avx2. Si rien ne s’affiche, configurez VECTOR_DB vers une autre base vectorielle.
  • Installation : docker run -d -p 3001:3001 --cap-add SYS_ADMIN … mintplexlabs/anythingllm avec un répertoire de stockage monté sur /app/server/storage. L’application écoute sur le port 3001.
  • Le chat a besoin d’un modèle : une clé API pour un fournisseur hébergé, ou Ollama sur la même machine ou une autre. L’indexation s’exécute par défaut sur le CPU de cette machine. Le mode multi-utilisateur avec permissions est une fonctionnalité de la version Docker. Pas de GPU.

Tailles (le minimum du projet, puis les nôtres)

Dimensionnement par usage
Charge de travailvCPURAM
Documents, chats, un modèle hébergé (minimum officiel)Deux cœurs avec AVX2. 5 GB de disque, 10 GB sur une machine cloud ; les images seules occupent quelques gigaoctets.22 GB
Une vraie bibliothèque de documents, l’embedder CPU intégré, quelques utilisateursNotre avis. L’indexation s’exécute sur ce CPU ; un gros envoi sur deux cœurs prend longtemps.48 GB
Ollama à côté pour une pile entièrement localeNotre avis. C’est une question d’hébergement de modèle, pas d’AnythingLLM : dimensionnez-la sur la page Ollama.832 GB

Les offres adaptées

5 machines, prix en temps réel

La machine adaptée la moins chère d’abord. Prix du jour, par mois, issus du catalogue. Lancez la vérification AVX2 sur celle que vous achetez, dès la première minute.

  • GL2-4$11.90/mois

    2 vCPU · 4 GB · 40 GB de disque · Unmetered

    La moins chère qui atteint le minimum, non mesurée. 2 vCPU / 4 GB / 40 GB, deux fois la mémoire demandée par la documentation, et un trafic non mesuré pour les envois de fichiers. Lancez la vérification AVX2 avant toute chose.

  • BD-8$12.90/mois

    4 vCPU · 8 GB · 100 GB de disque · 32 TB

    Celle que nous achèterions : 4 cœurs pour l’embedder. 4 vCPU, 8 GB, 100 GB et 32 TB de transfert pour un dollar de plus. Indexer une bibliothèque sur quatre cœurs au lieu de deux, c’est la différence que vous ressentez.

  • BD-24$31.90/mois

    8 vCPU · 24 GB · 300 GB de disque · 32 TB

    8 vCPU / 24 GB pour de nombreux utilisateurs avec Ollama à côté. De la place pour un modèle 8B dans Ollama sur la même machine, lentement, et les documents d’une équipe.

  • C2-4-80$37.90/mois

    2 vCPU · 4 GB · 80 GB de disque · 3 TB

    Le profil du minimum, dans des dizaines de villes. 2 vCPU / 4 GB / 80 GB. À choisir pour la ville. Modèle hébergé, bibliothèque modeste.

  • C4-8-160$75.90/mois

    4 vCPU · 8 GB · 160 GB de disque · 3 TB

    4 vCPU / 8 GB / 160 GB, dans des dizaines de villes. La taille confortable, avec du disque pour une grande bibliothèque et ses vecteurs.

Il n’existe pas encore de préréglage de démarrage pour AnythingLLM : l’installation consiste en cinq étapes ci-dessous, que vous saisissez vous-même. L’étape 3 diffère de la commande du projet par un seul paramètre, qui lie le port à l’interface de bouclage, et elle le signale.

L’installation

Cinq étapes, d’après le guide Docker du projet

Vérifiez le CPU, installez Docker, lancez le conteneur en loopback, configurez-le via SSH, puis attribuez-lui un domaine.

  1. Vérifiez d’abord AVX2. lscpu | grep -o avx2 La commande doit afficher avx2. La documentation est claire : c’est la seule règle matérielle et elle ne peut pas être émulée ; une machine qui en est dépourvue doit avoir VECTOR_DB configuré vers une base vectorielle externe avant le premier démarrage.
  2. Docker. curl -fsSL https://get.docker.com | sh
  3. Lancez-le, en loopback. export STORAGE_LOCATION=/opt/anythingllm && mkdir -p $STORAGE_LOCATION && touch $STORAGE_LOCATION/.env docker run -d --name anythingllm --restart unless-stopped -p 127.0.0.1:3001:3001 --cap-add SYS_ADMIN --add-host=host.docker.internal:host-gateway -v $STORAGE_LOCATION:/app/server/storage -v $STORAGE_LOCATION/.env:/app/server/.env -e STORAGE_DIR="/app/server/storage" mintplexlabs/anythingllm C’est la commande du projet avec une seule modification : -p 127.0.0.1:3001:3001 au lieu de -p 3001:3001, afin que le chat ne soit pas exposé sur Internet avant que vous ayez défini un mot de passe. Le répertoire de stockage contient la base de données, les vecteurs et vos documents ; sauvegardez-le.
  4. Configurez-le via SSH. ssh -N -L 3001:127.0.0.1:3001 root@your-server puis http://127.0.0.1:3001. Choisissez le LLM : un fournisseur hébergé et sa clé API, ou Ollama à http://host.docker.internal:11434 s’il tourne sur cette machine. Activez le mode multi-utilisateur ou définissez le mot de passe de l’instance dans les paramètres avant que quiconque puisse y accéder.
  5. Attribuez-lui un domaine. Pointez un enregistrement A vers le serveur, installez Caddy, et un seul bloc Caddyfile reverse_proxy 127.0.0.1:3001 sous votre domaine obtient le certificat et place HTTPS devant le port 3001. Ouvrez 80 et 443 sur le pare-feu, rien d’autre.

En toute franchise

Ce que nous achèterions vraiment

Le minimum est de 2 cœurs et 2 GB, et la ligne la moins chère l’atteint. Nous dépenserions quand même le dollar de plus.

Pour une bibliothèque de documents que vous utiliserez vraiment

BD-8 · $12.90/mois

4 vCPU, 8 GB et 100 GB à $12.90, contre GL2-4 à $11.90 : un dollar de plus par mois vous apporte deux cœurs supplémentaires pour le modèle d’embedding qui tourne sur cette machine à chaque envoi de fichier, et 100 GB pour les documents et leurs vecteurs. Le modèle est ailleurs, derrière une clé API, donc pas de GPU ; si vous voulez Ollama à côté, lisez la page Ollama et dimensionnez pour le modèle, pas pour AnythingLLM. Sur chacune de ces tailles, lancez la vérification AVX2 avant d’envoyer le moindre fichier.

Questions

Les questions posées avant l’achat.

Quelle est la configuration requise pour AnythingLLM ?
Sa documentation indique un minimum de 2 GB de RAM, un CPU 2 cœurs avec AVX2 et 5 GB de stockage, et précise que cela suffit pour stocker quelques documents, discuter et utiliser ses fonctionnalités. Le guide Docker du projet ajoute que sur une machine cloud, il faut viser au moins 2 GB de RAM et 10 GB de disque, car le disque croît avec les documents, les vecteurs et les éventuels modèles locaux. La documentation indique aussi que l’application est une surcouche à des services externes : elle est légère quand le modèle et l’embedder sont ailleurs, et plus lourde quand ils tournent sur la même machine.
Qu’est-ce que l’exigence AVX2, et mon VPS la remplira-t-il ?
La base vectorielle par défaut, LanceDB, est compilée pour les CPU disposant du jeu d’instructions AVX2 (Intel Haswell, 2013, et plus récents). Sans lui, le processus serveur est tué dès le chargement de la base, et la documentation le qualifie de seule exigence matérielle stricte. Les machines virtuelles sont le piège : un hyperviseur peut présenter un modèle de CPU générique qui masque AVX2 même sur un hôte moderne, c’est pourquoi la documentation recommande de vérifier à l’intérieur de l’invité avec lscpu | grep -o avx2, et non sur l’hôte. Nous ne promettons pas un flag CPU que nous ne pouvons pas voir depuis le catalogue : lancez donc cette ligne dès la première minute. Si rien ne s’affiche, configurez VECTOR_DB vers l’une des autres bases vectorielles prises en charge, qui fonctionnent comme des services séparés.
A-t-il besoin d’un GPU ?
Non. AnythingLLM exécute lui-même l’application web, le traitement des documents et, par défaut, un embedder uniquement CPU. Les réponses du chat viennent du LLM que vous connectez : un fournisseur hébergé via une clé API, avec ce que la documentation qualifie de surcharge quasi nulle, ou un modèle local via Ollama. La documentation conseille elle-même d’héberger un modèle local sur une autre machine dotée d’un GPU si la machine AnythingLLM n’en a pas. Cela relève de la page Ollama et de la gamme GPU, pas de celle-ci.
Est-il exposé sur Internet après l’installation ?
La commande du projet publie le port 3001 sur toutes les interfaces, et une instance neuve n’a pas de mot de passe tant que vous n’en définissez pas un. L’installation de cette page lie plutôt le port 3001 à 127.0.0.1 : tant que vous n’ajoutez pas de domaine, le seul accès passe par un tunnel SSH. Ensuite, dans Settings, définissez le mot de passe de l’instance ou activez le mode multi-utilisateur, que le README présente comme une fonctionnalité de la version Docker, avant de placer HTTPS devant.
Où sont stockées mes données ?
Dans le répertoire de stockage que vous montez sur /app/server/storage : la base SQLite, les vecteurs LanceDB, les documents envoyés et les modèles téléchargés localement. Le guide Docker vous demande de le monter sur l’hôte précisément pour pouvoir récupérer une nouvelle image sans rien perdre. Sauvegardez ce répertoire et le fichier .env à côté ; ensemble, ils constituent toute l’instance.
Peut-il utiliser Ollama sur la même machine ?
Oui. Depuis le conteneur, l’hôte est http://host.docker.internal:11434, ce qui sous Linux exige --add-host=host.docker.internal:host-gateway dans la commande run ; l’étape ci-dessus l’inclut. Dimensionnez alors la machine pour le modèle : un modèle 8B demande 8 GB pour lui seul en plus d’AnythingLLM, et répond à quelques tokens par seconde sur CPU. La ligne 24 GB est la plus petite de cette page où cela reste confortable.