Maintenance

Une fois le VPS préparé, nous pouvons installer Docker. Il constituera la base technique de notre environnement IA: chaque service sera isolé dans son propre conteneur et pourra être installé, configuré, remplacé ou mis à jour indépendamment des autres.

L’objectif de cette étape n’est pas encore d’installer l’IA. Nous préparons simplement l’environnement Docker qui accueillera ensuite Traefik, Ollama, Qdrant, AnythingLLM et n8n.

1. Docker déjà installé ou pas?

Avant toute installation, vérifions si Docker est déjà présent sur le système.

Cette commande permet de vérifier rapidement si Docker est disponible et quelle version est installée.

docker --version

Si la commande retourne une version de Docker, l’installation existe déjà. Dans le cas contraire, nous pouvons poursuivre.

2. Installer Docker

Debian fournit des paquets Docker dans ses dépôts, mais pour notre environnement nous allons utiliser le dépôt officiel de Docker. Cela permet de disposer d’une version récente et de suivre directement les versions publiées par le projet.

Installer les prérequis

Ces paquets permettent notamment à APT d'utiliser des dépôts HTTPS et de gérer les clés nécessaires.

sudo apt update
sudo apt install -y ca-certificates curl

Ajouter la clé du dépôt Docker

Nous créons d’abord le répertoire destiné aux clés APT, puis nous récupérons la clé officielle du dépôt Docker.

sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL https://download.docker.com/linux/debian/gpg 
-o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

Ajouter le dépôt Docker

Le dépôt est ajouté à la configuration d’APT. Debian pourra alors récupérer les paquets Docker depuis la source officielle.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Nous rechargeons ensuite l’index des paquets.

APT connaît maintenant le dépôt Docker et peut rechercher les versions disponibles.

sudo apt update

Installer Docker Engine et Compose

Nous installons Docker Engine ainsi que les composants nécessaires à l’utilisation de Docker Compose.

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3. Vérifier l’installation

Docker doit maintenant être disponible sur le VPS. Vérification de la version du moteur Docker et de Docker Compose.

docker --version
docker compose version

Le service Docker doit également être actif. Cette commande permet de vérifier l’état du service géré par systemd.Si le service est actif, nous pouvons effectuer un premier test.

sudo systemctl status docker

4. Tester Docker

Docker fournit une image de test qui permet de vérifier que le moteur fonctionne correctement.

Le conteneur est téléchargé si nécessaire, exécuté puis affiche un message de confirmation.

sudo docker run hello-world

Ce test est volontairement simple. Il permet toutefois de vérifier plusieurs éléments essentiels : le moteur Docker fonctionne, les images peuvent être récupérées et un conteneur peut être créé puis exécuté.

5. Utiliser Docker sans sudo

Par défaut, l’accès au socket Docker nécessite des privilèges élevés. Pour éviter de devoir utiliser sudo à chaque commande, nous pouvons ajouter notre utilisateur au groupe docker.

Nous ajoutons l’utilisateur actuellement connecté au groupe Docker.

sudo usermod -aG docker $USER

La modification du groupe ne s’applique pas immédiatement à la session SSH actuelle. Il faut donc se déconnecter puis se reconnecter. Après reconnexion, vérifions que Docker fonctionne sans sudo.

La commande doit maintenant fonctionner directement avec l’utilisateur courant.

docker run hello-world

Une conséquence importante doit être comprise : appartenir au groupe docker donne des privilèges très importants sur la machine. Ce choix est donc pratique, mais il doit être fait en connaissance de cause.

6. Préparer l’arborescence du LABO

Docker est installé. Nous allons maintenant préparer une organisation claire pour les différents services qui composeront notre environnement. Nous utiliserons /opt/labo comme répertoire principal du projet.

Création du répertoire principal et des premiers sous-répertoires destinés aux différents services.

sudo mkdir -p /opt/labo
sudo mkdir -p /opt/labo/traefik
sudo mkdir -p /opt/labo/ollama
sudo mkdir -p /opt/labo/qdrant
sudo mkdir -p /opt/labo/anythingllm
sudo mkdir -p /opt/labo/n8n

Nous pouvons ensuite vérifier l’arborescence créée. Cette vérification permet de confirmer que les répertoires sont bien présents avant de poursuivre.

sudo ls -la /opt/labo

7. Préparer les réseaux Docker

Les différents services du LABO devront communiquer entre eux, mais tous ne devront pas être directement accessibles depuis Internet. Nous allons donc utiliser des réseaux Docker distincts pour séparer les rôles.

Le réseau proxy sera utilisé par les services qui doivent communiquer avec Traefik.

docker network create proxy

Le réseau backend servira aux communications internes entre les services.

docker network create backend

Vérifions les réseaux disponibles. Docker doit maintenant afficher les deux réseaux que nous venons de créer.

docker network ls

8. Vérification finale

Avant de passer à Traefik, effectuons une dernière vérification de l’environnement.

Nous vérifions simultanément Docker, Compose, les réseaux et l’arborescence du LABO.

docker --version
docker compose version
docker network ls
sudo ls -la /opt/labo

Résultat

À ce stade, le VPS dispose de la base nécessaire pour construire notre environnement IA :

  • Docker Engine est installé.
  • Docker Compose est disponible.
  • Le moteur Docker a été testé.
  • L’utilisateur peut utiliser Docker sans sudo.
  • L’arborescence /opt/labo est en place.
  • Les réseaux Docker proxy et backend sont créés.

À retenir

Docker ne constitue pas encore notre environnement IA. Il fournit la couche d’exécution qui permettra de construire cet environnement service par service, de manière isolée et reproductible.

Prochaine étape

Le prochain composant sera Traefik. Il constituera la porte d’entrée HTTP/HTTPS du LABO et permettra notamment de gérer les domaines, le routage vers les différents services et les certificats TLS.

Table des matières

Les autres publications de cette section

0:00
0:00
Défiler vers le haut