Post

CWWK- MinIO S3 Stockage

CWWK- MinIO S3 Stockage

minio est une solution de stockage d’objets open source, compatible avec Amazon S3, qui permet de stocker des données non structurées telles que des photos, des vidéos, des fichiers de sauvegarde et bien plus encore. minio est conçu pour être simple à utiliser et à déployer, tout en offrant des performances élevées et une grande fiabilité. Voici comment vous pouvez installer minio sur un système Linux.

MinIO

http://mindev.org/minio-mc.html

En mode su

1
2
3
4
5
6
7
8
9
10
11
12
# Téléchargeement dernière version directement depuis la source officielle
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio 
chmod +x /usr/local/bin/minio 
#Créer un utilisateur et un groupe pour Minio
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
# clé usb3 2To montée en fstab
mkdir -p /mnt/usbnvme/miniodata 
chown -R minio-user:minio-user /mnt/usbnvme/miniodata
# Créer un fichier de configuration pour Minio
mkdir -p /etc/default/minio
chown minio-user:minio-user /etc/default/minio

La configuration

1
nano /etc/default/minio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Définir le volume utilisé par MinIO au démarrage
#
# Ce qui suit spécifie le chemin du lecteur ou du dossier
MINIO_VOLUMES="/mnt/usbnvme/miniodata"

# Définir toutes les options de ligne de commande du serveur MinIO
#
# Ce qui suit définit explicitement l'adresse d'écoute de MinIO Console à
# port 9001 sur toutes les interfaces réseau.
# Le comportement par défaut est la sélection dynamique du port.
# MINIO_OPTS="--console-address :9001 --certs-dir /opt/minio/certs"
MINIO_OPTS="--console-address :9001"

# Définir le nom d'utilisateur racine.
# Cet utilisateur a des permissions illimitées pour exécuter S3 et
# opérations d'API administratives sur n'importe quelle ressource dans le déploiement.
#
# Reportez-vous aux exigences de votre organisation pour le nom d'utilisateur superadmin.
MINIO_ROOT_USER=minio-user

# Définir le mot de passe racine
#
# Utilisez une chaîne longue, aléatoire, unique qui rencontre vos organisations
# exigences relatives aux mots de passe.
MINIO_ROOT_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxx

Pour que MinIO fonctionne de manière fiable, le configurer comme un service système

1
sudo nano /etc/systemd/system/minio.service

Contenu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[Unit]
Description=MinIO Object Storage
After=network.target 

[Service]
User=minio-user
Group=minio-user

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always

# Spécifie le nombre maximal de descripteur de fichier
# qui peut être ouvert par ce processus
LimitNOFILE=65536

# Spécifie le nombre maximum de threads 
# que ce processus peut créer
TasksMax=infinity

# Désactiver la logique de délai
# attendre que le processus soit arrêté
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

Après avoir enregistré (CTRL+X, Y, ENTER), activé et démarré le service:

1
2
sudo systemctl daemon-reload 
sudo systemctl enable --now minio

Status systemctl status minio

1
2
3
4
5
6
7
8
9
oct. 23 21:03:15 cwwk systemd[1]: Starting minio.service - MinIO Object Storage...
oct. 23 21:03:15 cwwk systemd[1]: Started minio.service - MinIO Object Storage.
oct. 23 21:03:16 cwwk minio[2694391]: MinIO Object Storage Server
oct. 23 21:03:16 cwwk minio[2694391]: Copyright: 2015-2025 MinIO, Inc.
oct. 23 21:03:16 cwwk minio[2694391]: License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
oct. 23 21:03:16 cwwk minio[2694391]: Version: RELEASE.2025-09-07T16-13-09Z (go1.24.6 linux/amd64)
oct. 23 21:03:16 cwwk minio[2694391]: API: http://192.168.0.205:9000  http://192.168.10.100:9000  http://10.19.55.4:9000  http://192.168.100.1:9000  http://127.0.0.1:9000
oct. 23 21:03:16 cwwk minio[2694391]: WebUI: http://192.168.0.205:9001 http://192.168.10.100:9001 http://10.19.55.4:9001 http://192.168.100.1:9001 http://127.0.0.1:9001
oct. 23 21:03:16 cwwk minio[2694391]: Docs: https://docs.min.io

Configurer le pare-feu et le réseau

Pour que MinIO soit accessible, des ports doivent être ouverts:

1
2
sudo ufw allow 9000/tcp 
sudo ufw allow 9001/tcp

Accès minio web
Pour accéder à Minio, ouvrez votre navigateur et accédez à l’adresse http://<votre_ip>:9000 Utilisez les identifiants configurés (MINIO_ROOT_USER et MINIO_ROOT_PASSWORD) pour vous connecter.

Accès à l’interface Web MinIO via un navigateur: http://192.168.0.205:9001

Première opération, créer un bucket nommé borg

Pour une utilisation en production, il est recommandé de sécuriser l’accès à Minio avec HTTPS.

Pas de site web tous les accés se font en ligne de commande avec le client MinIO mc

PC1 - MiniO client

Installation du client en ligne de commande qui peut servir en local pour administrer le s3,

on va installer le client Minio Admin Client:

En mode si

1
2
curl https://dl.min.io/client/mc/release/linux-amd64/mc   --create-dirs   -o /usr/local/bin/mc
chmod +x /usr/local/bin/mc

Version: mc --version

1
2
3
4
mc version RELEASE.2025-08-13T08-35-41Z (commit-id=7394ce0dd2a80935aded936b09fa12cbb3cb8096)
Runtime: go1.24.6 linux/amd64
Copyright (c) 2015-2025 MinIO, Inc.
License GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>

On crée un alias pour les commandes minio :

1
2
# Sur le port API
mc alias set myminio https//192.168.0.205:9000 minio-user mot_de_passe

Création d’un bucket

1
mc mb myminio/borg/pc1

Lister les buckets :

1
2
3
4
[yann@pc ~]$ mc ls myminio
[2025-10-24 18:44:33 CEST]     0B borg/
[yann@pc ~]$ mc ls myminio/borg
[2025-10-24 20:55:00 CEST]     0B pc1/

Utilisez la commande mc admin info pour tester la connexion à le déploiement MiniO nouvellement ajouté:

1
mc admin info myminio

La commande renvoie des informations sur le service S3 en cas de succès.

Si infructueux, vérifier chacun des éléments suivants:

  • La machine hôte a une connectivité à l’URL du service S3 (c.-à-d. en utilisant pingou traceroute).
  • Les spécifiés ACCESSKEY et SECRETKEY correspondent à un utilisateur sur le Service S3. L’utilisateur doit avoir la permission d’effectuer des actions sur le service.

CWWK - MinIO client

On crée un alias pour les commandes minio :

1
mc alias set myminio http://192.168.0.205:9000 minio-user Mot_De_Passe

Les outils de migration de données pour vous aider à accéder à MinIO

La majorité des cas d’utilisation de migration de données vers MinIO commencent par un système de fichiers monté ou un volume NFS. Dans cette configuration simple, vous pouvez utiliser mc Mirror pour synchroniser les données de la source vers la destination. Considérez mc mirror comme un couteau suisse pour la synchronisation des données. Cela soulage l’utilisateur du fardeau de déterminer la meilleure façon d’interagir avec la source à partir de laquelle vous récupérez les objets. Il prend en charge un certain nombre de sources et, en fonction de la source à partir de laquelle vous extrayez, les bonnes fonctions sont utilisées pour les activer.

Par exemple, commençons par un simple système de fichiers monté à partir d’un disque dur physique, d’un disque virtuel ou même de quelque chose comme un montage GlusterFS.

Vos objets se trouvent dans /mnt/FreeUSB2To/sauvegardes/borgbackup , vous exécuterez alors la commande suivante pour mettre en miroir les objets (si le bucket mydata n’existe pas déjà, vous devrez d’abord le créer) :
Création d’un bucket borgbackup

1
mc mb myminio/borg/pc1

mettre en miroir les objets

1
mc mirror /mnt/ssd/pc1 myminio/borg/pc1

Cette commande garantira que les objets qui ne se trouvent plus à l’emplacement source sont supprimés de la destination ou lorsque de nouveaux objets sont ajoutés à la source, ils seront copiés vers la destination. Mais si vous souhaitez écraser les objets existants modifiés dans la source, passez l’indicateur --overwrite

MinIO Proxy Nginx

Client proxy nginx https://minio.rnmkcy.eu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
upstream http_minio-9000{
    server 127.0.0.1:9000;
}

server{
    listen 443 ssl;
    http2 on;
    server_name minio.rnmkcy.eu;

    access_log /var/log/nginx/s3_access.log;

    more_clear_headers Server;
    more_clear_headers X-Powered-By;

    include /etc/nginx/conf.d/security.conf.inc;

    location /{
        proxy_pass http://http_minio-9000;
        proxy_ssl_verify off;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;

        proxy_http_version 1.1;
        proxy_buffering off;
        client_max_body_size 0;
    }

}

server{
    listen 80;
    server_name minio.rnmkcy.eu;
    more_clear_headers Server;
    more_clear_headers X-Powered-By;
    if ($host = minio.rnmkcy.eu) {
        return 301 https://$host$request_uri;
    }
}

Annexe

Rappel des commandes MinIO <% highlight text%> --> Configuration de base Définir un alias vers un serveur MinIO : mc alias set myminio http://localhost:9000 Lister les buckets et les dossiers : mc ls myminio mc ls myminio/bucket/folder --> Opérations de fichiers Copier des fichiers vers/depuis MinIO : mc cp source-path myminio/bucket/destination-path mc cp myminio/bucket/source-path destination-path Miroir synchronisation) de dossiers : mc mirror source-dir myminio/bucket mc mirror myminio/bucket destination-dir Supprimer des objets ou des buckets : mc rm myminio/bucket/object mc rb myminio/bucket Déplacer des objets : mc mv myminio/bucket/source-object myminio/bucket/destination-object --> Gestion des buckets et objets Créer un nouveau bucket : mc mb myminio/new-bucket Afficher les informations sur un objet : mc stat myminio/bucket/object Définir la politique d’un bucket : mc policy set myminio/bucket Obtenir la politique d’un bucket ou d’un objet : mc policy get myminio/bucket mc policy get myminio/bucket/folder --> Gestion des utilisateurs et des politiques (administrateur) Lister les politiques : mc admin policy list myminio Ajouter une politique : mc admin policy add myminio policy-name /path/to/policy.json Lister les utilisateurs : mc admin user list myminio Ajouter un utilisateur : mc admin user add myminio newuser newuser123 Attribuer une politique à un utilisateur : mc admin policy set myminio policy-name user=newuser Désactiver un utilisateur : mc admin user disable myminio newuser Supprimer un utilisateur : mc admin user remove myminio newuser --> Cycle de vie et versioning Définir le cycle de vie d’un bucket : mc ilm import myminio/bucket-name < ./path/to/lifecycle.json Lister les cycles de vie d’un bucket : mc ilm ls myminio/bucket-name --> Autres commandes utiles Résumé de l’utilisation du disque : mc du myminio/bucket Aperçu arborescent d’un bucket : mc tree myminio/bucket Surveillance des événements : mc watch myminio/bucket Générer une URL signée : mc share download myminio/bucket/object mc share upload myminio/bucket/object --> Options globales Utiliser --json pour obtenir une sortie au format JSON : mc --json ls myminio Utiliser --insecure pour ignorer la vérification du certificat TLS (non recommandé en production) : mc --insecure ls myminio --> Correspondance de motifs Utiliser * et ? comme caractères sauvetage pour correspondre à plusieurs objets ou préfixes. Par exemple : mc ls myminio/bucket/*.jpg mc rm myminio/bucket/file-?.txt <% endhighlight%>
Cet article est sous licence CC BY 4.0 par l'auteur.