MinIO est une solution de stockage compatible S3 que l’on peut auto-héberger. Dans le cadre de mon alternance, nous en avions besoin pour fournir un service de stockage S3 à NetBox, et potentiellement à d’autres outils susceptibles d’utiliser ce type de stockage pour par exemple héberger les fichiers tfstate de Terraform. C’est une alternative open source aux services S3 proposés par AWS.
Pré-requis
Nous partons sur une base Debian 12 pour l’installation.
Installation des utilitaires nécessaires
sudo apt update && sudo apt install -y wget curl
Création et configuration de l’utilisateur dédié
sudo useradd -m minio -s /sbin/nologin
Création du dossier de données et gestion des droits
sudo mkdir -p /mnt/data/minio
sudo chown -R minio:minio /mnt/data/minio
Installation et configuration de MinIO
Installation
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
Configuration de l’environnement
Créer le fichier /etc/default/minio sur chaque VM avec le contenu suivant :
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin123
MINIO_VOLUMES="http://192.168.100.10/mnt/data/minio http://192.168.100.11/mnt/data/minio http://192.168.100.12/mnt/data/minio"
MINIO_OPTS="--console-address :9001"
Configuration du service systemd
Créer le fichier /etc/systemd/system/minio.service :
[Unit]
Description=MinIO Object Storage
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
[Service]
User=minio
Group=minio
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server ${MINIO_VOLUMES} ${MINIO_OPTS}
Restart=always
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
Puis on recharge systemd et on demarre MinIO :
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now minio
Vérification du bon fonctionnement
Pour verifier le bon fonctionnement on va utiliser l’utilitaire mc qui permet d’acceder a MinIO par la CLI.
Installation de mc (MinIO Client)
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
Ajout du cluster MinIO
mc alias set moncluster http://192.168.100.10:9000 minioadmin minioadmin123
Vérifier l’état du cluster
mc admin info moncluster
Créer un bucket de test
mc mb moncluster/test-bucket
Uploader un fichier
echo "Hello MinIO" > hello.txt
mc cp hello.txt moncluster/test-bucket/
Lister les objets du bucket
mc ls moncluster/test-bucket/