Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Docker (Linux distant)

Ces instructions sont conçues pour quelqu'un qui part de zéro pour une installation Docker sur un serveur Ubuntu distant

Pour utiliser ce guide, vous avez besoin d'un ordinateur distant ou d'une VM déployée. Bien que vous puissiez utiliser ce guide avec une installation locale, gardez à l'esprit qu'il a été rédigé à l'origine pour un déploiement dans le cloud.

⚠️ Ce guide a été conçu à l'origine pour Digital Ocean, vous devrez donc peut-être modifier les instructions pour d'autres plateformes, mais le principe général reste inchangé.

Partie I : Installation de Docker et autres dépendances :

Il existe de nombreuses façons d'installer Docker sur les systèmes Linux. Je vais vous guider à travers la meilleure méthode recommandée basée sur ce guide.

Notez que la « meilleure » façon d'installer Docker sur Ubuntu ne signifie pas la « plus rapide » ou la « plus facile ». Cela signifie la meilleure façon de l'installer pour un bénéfice à long terme (c'est-à-dire des mises à jour plus rapides, des correctifs de sécurité, etc.).

1. Mettre à jour et installer les dépendances Docker

Tout d'abord, mettons à jour notre liste de paquets et installons les dépendances Docker requises.

sudo apt update

Ensuite, utilisez la commande suivante pour installer les dépendances ou les paquets prérequis.

sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

Notes d'installation

  • Saisissez « Y » pour toutes les invites de terminal [Y/n] (oui/non) tout au long de ce guide.
  • Après la première invite [Y/n], vous obtiendrez le premier d'une série d'écrans violets demandant de redémarrer les services.
    • Chaque fois que cela se produit, vous pouvez appuyer en toute sécurité sur ENTRÉE pour accepter les options par défaut déjà sélectionnées :

image

  • Si à tout moment votre console de droplet se déconnecte, effectuez les étapes suivantes, puis reprenez là où vous vous étiez arrêté :
    • Accédez à nouveau à la console comme indiqué ci-dessus
    • Passez à l'utilisateur que vous avez créé avec su - <yourusername>

2. Ajouter le dépôt Docker aux sources APT

Bien qu'il soit plus facile d'installer Docker Engine à partir des dépôts Ubuntu, l'ajout du dépôt officiel Docker vous permet de bénéficier de mises à jour plus rapides. C'est pourquoi il s'agit de la méthode recommandée.

Tout d'abord, récupérons la clé GPG nécessaire pour se connecter au dépôt Docker. Pour ce faire, utilisez la commande suivante.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Ensuite, ajoutez le dépôt à la liste des sources. Bien que vous puissiez également l'ajouter manuellement, la commande ci-dessous le fera automatiquement pour vous.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

La commande ci-dessus remplira automatiquement votre nom de code de version (jammy pour 22.04, focal pour 20.04 et bionic pour 18.04).

Enfin, actualisez à nouveau vos paquets.

sudo apt update

Si vous oubliez d'ajouter la clé GPG, l'étape ci-dessus échouera avec un message d'erreur. Sinon, passons à l'installation de Docker sur Ubuntu.

3. Installer Docker

Quelle est la différence entre docker.io et docker-ce ?

docker.io est le paquet docker proposé par certaines distributions Linux populaires (par ex. Ubuntu/Debian). docker-ce, en revanche, est le paquet docker provenant du dépôt officiel Docker. Généralement, docker-ce est plus à jour et préférable.

Nous allons maintenant installer docker-ce (et non le paquet docker.io)

sudo apt install docker-ce

L'écran violet signifie appuyer sur ENTRÉE. :)

Recommandé : vous devriez vous assurer que l'utilisateur créé est ajouté au groupe docker pour une utilisation fluide des commandes :

sudo usermod -aG docker $USER

Maintenant, redémarrons le système pour nous assurer que tout fonctionne correctement.

sudo reboot

Après le redémarrage, si vous utilisez la console du droplet dans le navigateur, vous pouvez cliquer sur recharger et attendre de revenir dans la console.

image

Rappel : Chaque fois que vous redémarrez avec sudo reboot, vous devez repasser à l'utilisateur que vous avez configuré précédemment avec su - <yourusername>.

4. Vérifiez que Docker est en cours d'exécution sur Ubuntu

Il existe de nombreuses façons de vérifier si Docker est en cours d'exécution sur Ubuntu. L'une d'elles consiste à utiliser la commande suivante :

sudo systemctl status docker

Vous devriez voir une sortie indiquant active (running) pour le statut.

image

Quittez ce journal en appuyant sur CTRL (ou CMD) + C.

5. Installer Docker Compose

Puisque nous avons déjà ajouté le dépôt officiel de Docker à l'étape 2, l'installation de Docker Compose est simple en utilisant le plugin officiel Compose :

sudo apt install docker-compose-plugin

Vérifiez l'installation :

docker compose version

Remarque : Docker Compose v2 utilise la commande docker compose (sans trait d'union) au lieu de l'ancienne commande docker-compose. Toutes les commandes de ce guide utilisent la syntaxe moderne.

6. Dans le cadre de ce guide, je vous recommande d'avoir git et npm installés :

Bien que cela ne soit pas techniquement requis, disposer de git et npm rendra l'installation/la mise à jour très simple :

sudo apt install git nodejs npm

Lancez les lignes de la matrice.

Vous pouvez confirmer que ces paquets ont été installés avec succès avec la commande suivante :

git --version
node -v
npm -v

image

Remarque : cela peut installer d'anciennes versions de Node.js et npm. Si vous exécutez LibreChat directement sur l'hôte, utilisez Node.js v24.16.0 avec npm v11.16.0. Pour ce guide basé sur Docker, la version de Node.js de l'hôte n'a pas d'importance car LibreChat s'exécute à l'intérieur de conteneurs.

Ok, maintenant que vous avez configuré le Droplet, vous allez maintenant configurer l'application elle-même


Partie II : Configuration de LibreChat

1. Cloner le dépôt

Depuis la ligne de commande du droplet (en tant qu'utilisateur, pas en tant que root) :

# clone down the repository
git clone https://github.com/danny-avila/LibreChat.git
 
# enter the project directory
cd LibreChat/

2. Créer les fichiers de configuration et d'environnement LibreChat

Fichier de configuration (librechat.yaml)

Ensuite, nous créons le fichier de configuration LibreChat, aussi appelé librechat.yaml, permettant la personnalisation des paramètres de l'application ainsi que des endpoints personnalisés.

Que vous souhaitiez personnaliser davantage l'application ou non, c'est une étape requise pour le fichier deploy-compose.yml que nous utilisons, nous pouvons donc en créer un avec la valeur minimale nécessaire pour démarrer :

nano librechat.yaml

Vous accéderez à l'écran de l'éditeur, et vous pourrez coller ce qui suit :

# For more information, see the Configuration Guide:
# https://www.librechat.ai/docs/configuration/librechat_yaml
 
# Configuration version (required)
version: 1.3.5
# This setting caches the config file for faster loading across app lifecycle
cache: true

Quittez l'éditeur avec CTRL + X, puis Y pour enregistrer, et ENTER pour confirmer.

Validation de la configuration

LibreChat se terminera avec une erreur (code de sortie 1) si votre fichier librechat.yaml contient des erreurs de validation. Ce comportement « fail-fast » garantit que les problèmes de configuration sont détectés rapidement lors du déploiement.

Avant le déploiement, validez votre configuration à l'aide du YAML Validator. Si votre pipeline CI/CD démarre le serveur, il échouera rapidement en cas de configuration invalide, empêchant ainsi les déploiements avec des paramètres mal configurés.

Fichier d'environnement (.env)

Les valeurs par défaut sont suffisantes pour vous permettre de démarrer et d'exécuter l'application, vous permettant de fournir vos identifiants depuis l'application web.

# Copies the example file as your global env file
cp .env.example .env

Cependant, il est fortement recommandé de modifier les valeurs « secret » par rapport à leurs valeurs par défaut pour une sécurité accrue. Les journaux de démarrage de l'API vous avertiront si vous ne le faites pas.

Pour plus de commodité, vous pouvez exécuter ceci pour générer vos propres valeurs :

https://www.librechat.ai/toolkit/creds_generator

nano .env
 
# FIND THESE VARIABLES AND REPLACE THEIR DEFAULT VALUES!
 
# Must be a 16-byte IV (32 characters in hex)
 
CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb
 
# Must be 32-byte keys (64 characters in hex)
 
CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

Si vous souhaitez fournir des identifiants pour que tous les utilisateurs de votre instance puissent les utiliser, vous devez les ajouter pendant que vous modifiez encore ce fichier :

OPENAI_API_KEY=sk-yourKey

Comme précédemment, quittez l'éditeur avec CTRL + X, puis Y pour enregistrer, et ENTER pour confirmer.

C'est tout !

Pour une configuration approfondie, cependant, vous devriez modifier votre fichier .env selon vos besoins, et assurez-vous de lire les commentaires dans le fichier ainsi que les ressources ci-dessous.

# if editing the .env file
nano .env

C'est une variable d'environnement à garder à l'esprit. Celle-ci désactive les inscriptions externes, au cas où vous souhaiteriez la définir après avoir créé votre compte.

ALLOW_REGISTRATION=false

Ressources :

3. Démarrer Docker

# should already be running, but just to be safe
sudo systemctl start docker
 
# confirm docker is running
docker info

Maintenant, nous pouvons démarrer le conteneur de l'application. Pour la première fois, nous utiliserons la commande complète et plus tard, nous pourrons utiliser une commande abrégée.

sudo docker compose -f ./deploy-compose.yml up -d

image

Vous pouvez fermer le terminal en toute sécurité si vous le souhaitez ; l'application Docker continuera de s'exécuter.

Remarque : ceci utilise un fichier compose spécial optimisé pour cet environnement déployé. Si vous souhaitez plus de configuration ici, vous devriez inspecter les fichiers deploy-compose.yml et Dockerfile.multi pour voir comment ils sont configurés. Nous ne construisons pas l'image dans cet environnement car il n'y a pas assez de RAM pour le faire correctement. Au lieu de cela, nous extrayons la dernière image dev-api de LibreChat, qui est automatiquement construite après chaque push vers main.

Si vous configurez un domaine pour être utilisé avec LibreChat, ce fichier compose utilise le fichier nginx situé dans client/nginx.conf. Vous trouverez des instructions à ce sujet ci-dessous dans la partie V.

4. Une fois l'application lancée, vous pouvez y accéder à l'adresse http://yourserverip

Retournez sur la page du droplet pour obtenir l'adresse IP de votre serveur, copiez-la et collez-la dans votre navigateur !

image

Inscrivez-vous, connectez-vous et profitez de votre propre instance LibreChat privée et distante :)

image

image

Partie III : Mise à jour de LibreChat

J'ai rendu cette étape assez simple, à condition que tout ce qui précède ait été installé avec succès et que vous n'ayez pas modifié l'historique git.

Remarque : Si vous travaillez sur une branche modifiée, avec vos propres commits, par exemple, avec des modifications apportées à client/nginx.conf, vous devriez inspecter config/deployed-update.js pour exécuter certaines commandes manuellement selon vos besoins. Voir la partie V pour en savoir plus à ce sujet.

Exécutez la commande suivante pour une mise à jour automatisée

npm run update:deployed

Arrêt du conteneur Docker

npm run stop:deployed

Ceci exécute simplement docker compose -f ./deploy-compose.yml down

Démarrage du conteneur Docker

npm run start:deployed

Ceci exécute simplement docker compose -f ./deploy-compose.yml up -d

Vérifier les conteneurs Docker actifs

docker ps

Vous pouvez effectuer une mise à jour manuellement sans les scripts si vous rencontrez des problèmes.

docker compose -f ./deploy-compose.yml down
# Linux/Mac
docker images -a | grep "librechat" | awk '{print $3}' | xargs docker rmi
 
# Windows (PowerShell)
docker images -a --filter "reference=registry.librechat.ai/danny-avila/librechat*" --format "{{.ID}}" | ForEach-Object { docker rmi $_ }
docker images -a --filter "reference=ghcr.io/danny-avila/librechat*" --format "{{.ID}}" | ForEach-Object { docker rmi $_ }
git pull
docker compose -f ./deploy-compose.yml pull
docker compose -f ./deploy-compose.yml up

Partie IV : Modification du fichier NGINX (pour les domaines personnalisés et les configurations avancées)

Si vous souhaitez modifier le fichier NGINX pour une raison quelconque, par exemple pour pointer votre serveur vers un domaine personnalisé, utilisez ce qui suit :

npm run stop:deployed
nano client/nginx.conf

Je ne vous guiderai pas dans la configuration d'un domaine personnalisé ou dans toute autre modification de NGINX ; vous pouvez consulter le guide Cloudflare, le guide Traefik ou le guide NGINX pour vous aider à démarrer avec les domaines personnalisés.

Cependant, je vais vous montrer ce qu'il faut modifier du côté de LibreChat pour un domaine personnalisé avec cette configuration.

Puisque NGINX est utilisé comme proxy pass par défaut, je modifie uniquement ce qui suit :

# before
server_name localhost;
 
# after
server_name custom.domain.com;

Remarque : cela fonctionne parce que le fichier deploy-compose.yml utilise NGINX par défaut, contrairement au fichier docker-compose.yml principal. Comme toujours, vous pouvez configurer les fichiers compose selon vos besoins.

Maintenant, validez ces changements sur une branche séparée :

# create a new branch
# example: git checkout -b edit
git checkout -b <branchname>
 
# stage all file changes
git add .

Pour valider des modifications sur une branche git, vous devrez vous identifier sur git. Ces valeurs peuvent être fictives, mais si vous souhaitez qu'elles soient synchronisées avec GitHub, au cas où vous pousseriez cette branche vers un dépôt forké de LibreChat, utilisez votre adresse e-mail GitHub.

# these values will work if you don't care what they are
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
 
# Now you can commit the change
git commit -m "edited nginx.conf"

La mise à jour sur une branche modifiée fonctionnera un peu différemment maintenant

npm run rebase:deployed

Vous devriez être prêt !

Avertissement Vous rencontrerez des conflits de fusion si vous modifiez de manière significative la branche, ce qui n'est pas recommandé à moins que vous ne sachiez ce que vous faites.

Notez que toute modification du code dans cet environnement ne sera pas reflétée car le fichier compose extrait les images Docker générées automatiquement par GitHub.

Partie V : Utiliser la dernière version stable au lieu de la branche principale (main)

Par défaut, cette configuration récupérera les dernières mises à jour de la branche principale de LibreChat. Si vous préférez utiliser la dernière version « stable », définie par les latest tags, vous devrez modifier deploy-compose.yml et valider vos changements exactement comme indiqué ci-dessus dans la Partie V. Sachez que vous ne bénéficierez pas des dernières fonctionnalités dès leur sortie si vous faites ce choix.

Modifions deploy-compose.yml :

nano deploy-compose.yml

Remplacez librechat-dev-api par librechat-api :

image: registry.librechat.ai/danny-avila/librechat-api:latest

Préparez (stage) et validez (commit) comme dans la Partie V, et vous êtes prêt !

Que pensez-vous de ce guide ?