Kennisbank › Objectopslag › MinIO : stockage d’objets avec une API compatible S3
objectopslag starter 31 August 2026

MinIO : stockage d’objets avec une API compatible S3

MinIO : stockage d’objets avec une API compatible S3

MinIO fonctionne comme un processus serveur qui propose l'API S3. Tout client qui peut parler S3 — la CLI AWS, `mc`, ou un SDK en Python, Go ou Java — peut parler à MinIO. C'est tout l'intérêt : vous ne créez pas de dépendance à un fournisseur, car l'API est standardisée.

Le prix que vous payez, c'est la gestion. AWS S3 gère la redondance, la surveillance et la rotation des identifiants pour vous. Avec MinIO, vous en êtes responsable vous-même. L'auto-hébergement semble magnifique, jusqu'à ce que quelque chose tombe en panne le dimanche soir à vingt-trois heures trente. Là, vous n'êtes pas un client qui attend au service d'assistance. Vous êtes le service d'assistance.

Installer et démarrer le serveur

1. Télécharger le serveur MinIO

Récupérez le binaire sur le site officiel. L'URL de téléchargement contient le numéro de version, donc vérifiez lors d'une nouvelle version s'il en existe une plus récente.

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/

Le binaire est autonome — pas de dépendances, pas de paquets. Cela le rend simple à installer, mais vous devez vous-même prévoir un gestionnaire de services qui maintienne le processus en marche.

2. Définir les identifiants root

MinIO a besoin d'un utilisateur root. Définissez-le comme variables d'environnement, pas dans un fichier de configuration. Le serveur les lit au démarrage.

export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=un-mot-de-passe-long-et-aleatoire

Choisissez un mot de passe d'au moins 8 caractères. En production, prenez quelque chose de 32 caractères issu d'un gestionnaire de mots de passe. C'est la clé de toutes vos données.

3. Démarrer le serveur

minio server /data --address ":9000" --console-address ":9001"

Le répertoire `/data` est l'endroit où MinIO stocke les objets. Assurez-vous qu'il se trouve sur un disque avec suffisamment d'espace. Les options `--address` et `--console-address` déterminent où l'API et la console web écoutent.

Si vous exécutez cette commande dans un terminal, le serveur s'arrête dès que vous fermez le terminal. Pour un vrai déploiement, utilisez systemd ou une plateforme de conteneurs. MinIO dispose d'une unité systemd officielle dans le dépôt.

4. Créer un bucket

Un bucket est le conteneur de plus haut niveau dans le stockage d'objets — comparable à une partition de disque. Sans bucket, vous ne pouvez rien stocker.

mc alias set local http://localhost:9000 minioadmin 'un-mot-de-passe-long-et-aleatoire'
mc mb local/testbucket

La première commande enregistre votre serveur MinIO comme `local` dans le client. La deuxième crée un bucket. Vous pouvez aussi le faire via la console web à l'adresse `http://localhost:9001`.

Utiliser le client

Le client MinIO (`mc`) est un outil en ligne de commande qui fonctionne avec tout serveur compatible S3. Vous pouvez non seulement gérer MinIO avec, mais aussi AWS S3, Google Cloud Storage et d'autres implémentations S3.

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

Avec `mc ls local`, vous voyez les buckets. Avec `mc cp fichier.txt local/testbucket/`, vous téléversez un fichier. Avec `mc ls --recursive local/testbucket`, vous voyez tout ce qui se trouve dans le bucket, y compris les objets dans des pseudo-dossiers.

L'avantage de `mc` par rapport à la CLI AWS est que vous pouvez avoir plusieurs serveurs dans une seule configuration. Vous passez avec `mc ls` entre votre MinIO local et AWS S3 sans devoir redéfinir les identifiants à chaque fois. Cela en fait aussi un outil pratique pour migrer des données entre fournisseurs.

Regroupement en cluster

Un seul serveur n'est pas de la production. MinIO prend en charge le mode distribué, où plusieurs nœuds forment ensemble un seul système de stockage. Les données sont alors répliquées sur les nœuds, afin que vous puissiez perdre des nœuds sans perte de données.

minio server http://node1.local/data http://node2.local/data \
  http://node3.local/data http://node4.local/data

Cela démarre un cluster de quatre nœuds. MinIO utilise l'effacement de code : il divise les objets en fragments et les répartit sur les nœuds. Avec quatre nœuds, vous pouvez en perdre deux et tout reste lisible. Le calcul est simple : avec plus de nœuds, vous pouvez supporter plus de pertes, mais chaque nœud coûte de la maintenance et de l'électricité.

Mettre en place un cluster n'est pas quelque chose que l'on fait en un après-midi. Vous avez besoin de matériel identique, d'un bon réseau et d'une surveillance. Pour une première prise en main, un seul serveur suffit.

Cache Docker Buildx

Une application pratique : MinIO peut servir de backend de cache pour Docker Buildx. Stocker le cache de build sur un stockage compatible S3 signifie que votre pipeline CI/CD peut réutiliser le cache, même si le runner lui-même n'est pas persistant.

docker buildx create --driver docker-container \
  --config buildkitd.toml

Dans `buildkitd.toml`, vous référencez votre serveur MinIO comme endpoint S3. Docker prend cela en charge depuis Buildx 0.8. Cela fonctionne, mais vous devez configurer le cache avec les bonnes identifiants et le bon chemin de bucket. La documentation de Buildx est claire à ce sujet.

Problèmes fréquents

Le serveur démarre mais la console web est inaccessible. Vérifiez si vous avez défini `--console-address`. Sans ce drapeau, MinIO choisit un port aléatoire et le journalise dans la sortie. Si vous avez un pare-feu, ouvrez à la fois 9000 et 9001.

`mc` renvoie une erreur d'accès refusé. Vos identifiants sont incorrects, ou vous ne les avez pas correctement exportés. Vérifiez que `MINIO_ROOT_USER` et `MINIO_ROOT_PASSWORD` sont correctement définis dans le shell où le serveur tourne. Le serveur ne les lit qu'au démarrage.

Le disque est plein mais MinIO continue d'écrire. MinIO ne s'arrête pas automatiquement d'écrire. Vous devez configurer vous-même une surveillance de l'utilisation du disque. Un disque plein entraîne des objets corrompus. C'est l'une des choses qu'un service géré résout pour vous.

Vérification

Téléversez un fichier de test et récupérez-le :

echo "test" > test.txt
mc cp test.txt local/testbucket/
mc cat local/testbucket/test.txt

Si vous revoyez `test`, toute la chaîne fonctionne : serveur, client, bucket et stockage. Pour un environnement de production, testez également le redémarrage du serveur et vérifiez que les données sont toujours là après un redémarrage.

MinIO est une bonne alternative à AWS S3 si vous souhaitez conserver vos données localement ou éviter les coûts de sortie (egress). Ce n'est pas un remplacement pour un système de sauvegarde — vous en restez toujours redevable.

← Retour à la base de connaissances
← Terug naar kennisbank