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/