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/laboest en place.- Les réseaux Docker
proxyetbackendsont 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.



