L’auteur a choisi le Open Internet/Free Speech Fund pour recevoir un don dans le cadre du programme Write for Donations.
Des solutions de sauvegarde basées sur le cloud aux réseaux de diffusion de contenu (RDC) à haute disponibilité, la capacité de stocker des blocs de données non structurées et de les rendre accessibles par le biais d’API HTTP, connues sous le nom de stockage d’objets, fait désormais partie intégrante du paysage technologique moderne.
Minio est un serveur de stockage d’objets open-source populaire compatible avec le service de stockage cloud Amazon S3. Les applications qui ont été configurées pour parler à Amazon S3 peuvent également être configurées pour parler à Minio, ce qui permet à Minio d’être une alternative viable à S3 si vous voulez plus de contrôle sur votre serveur de stockage d’objets. Le service stocke des données non structurées telles que des photos, des vidéos, des fichiers journaux, des sauvegardes et des images de conteneurs/VM, et peut même fournir un seul serveur de stockage d’objets qui regroupe plusieurs lecteurs répartis sur plusieurs serveurs.
Minio est écrit en Go, est fourni avec un client en ligne de commande et une interface de navigateur, et prend en charge un service de mise en file d’attente simple pour les cibles AMQP (Advanced Message Queuing Protocol), Elasticsearch, Redis, NATS et PostgreSQL. Pour toutes ces raisons, apprendre à mettre en place un serveur de stockage d’objets Minio peut ajouter une vaste palette de flexibilité et d’utilité à votre projet.
Dans ce tutoriel, vous allez :
Installer le serveur Minio sur votre serveur Ubuntu 18.04 et le configurer comme un service systemd
.
Configurer un certificat SSL/TLS à l’aide de Let’s Encrypt pour sécuriser la communication entre le serveur et le client.
Accéder à l’interface du navigateur Minio via HTTPS pour utiliser et administrer le serveur.
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
Un serveur Ubuntu 18.04 configuré en suivant notre guide de configuration initiale de serveur Ubuntu 18.04, comprenant un utilisateur non root avec privilèges sudo et un pare-feu.
Un nom de domaine entièrement enregistré. Vous pouvez en acheter un sur Namecheap ou en obtenir un gratuitement sur Freenom. Dans ce tutoriel, votre domaine sera représenté sous la forme your_domain
.
Les enregistrements DNS suivants ont été configurés pour votre serveur Minio. Vous pouvez suivre notre documentation sur les enregistrements DNS pour obtenir des détails sur la façon de les ajouter à une droplet DigitalOcean.
Un enregistrement A avec le nom de votre serveur (par exemple minio-server.your_domain
) pointant vers l’adresse IPv4 de votre serveur objet.
(Facultatif) Si vous voulez que votre serveur soit accessible via IPv6, vous aurez besoin d’un enregistrement AAAA avec le nom de votre serveur pointant vers l’adresse IPv6 de votre serveur objet.
Vous pouvez installer le serveur Minio en compilant le code source ou via un fichier binaire. Pour l’installer à partir de la source, vous devez disposer au minimum de Go 1.12 sur votre système.
Dans cette étape, vous installerez le serveur par le biais du binaire précompilé, puis vous configurerez le serveur Minio par la suite.
Tout d’abord, connectez-vous à votre serveur, en remplaçant sammy
par votre nom d’utilisateur et your_server_ip
par l’adresse IP de votre serveur Ubuntu 18.04 :
- ssh sammy@your_server_ip
Si vous n’avez pas mis à jour la base de données du package récemment, mettez-la à jour maintenant :
- sudo apt update
Ensuite, téléchargez le fichier binaire du serveur Minio sur le site web officiel :
- wget https://dl.min.io/server/minio/release/linux-amd64/minio
Vous recevrez un résultat similaire à celui qui suit :
Output--2019-08-27 15:08:49-- https://dl.min.io/server/minio/release/linux-amd64/minio
Resolving dl.min.io (dl.min.io)... 178.128.69.202
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 44511616 (42M) [application/octet-stream]
Saving to: ‘minio’
minio 100%[===================>] 42.45M 21.9MB/s in 1.9s
2019-08-27 15:08:51 (21.9 MB/s) - ‘minio’ saved [44511616/44511616]
Une fois le téléchargement terminé, un fichier nommé minio
se trouvera dans votre répertoire de travail. Utilisez la commande suivante pour le rendre exécutable :
- sudo chmod +x minio
Maintenant, déplacez le fichier dans le répertoire /usr/local/bin
où le script de démarrage systemd
de Minio s’attend à le trouver :
- sudo mv minio /usr/local/bin
Cela nous permettra d’écrire un fichier d’unité de service plus tard dans ce tutoriel pour lancer automatiquement Minio au démarrage.
Pour des raisons de sécurité, il est préférable d’éviter de faire fonctionner le serveur Minio en tant que root. Cela limitera les dommages qui peuvent être causés à votre système s’il est compromis. Comme le script systemd
que vous utiliserez à l’Étape 2 recherche un compte utilisateur et un groupe appelé minio-user
, créez un nouvel utilisateur avec ce nom :
- sudo useradd -r minio-user -s /sbin/nologin
Dans cette commande, vous avez utilisé l’indicateur -s
pour définir /sbin/nologin
comme shell pour minio-user
. Il s’agit d’un shell qui ne permet pas la connexion de l’utilisateur, qui n’est pas nécessaire pour minio-user
.
Ensuite, changez la propriété du fichier binaire Minio en minio-user
:
- sudo chown minio-user:minio-user /usr/local/bin/minio
Ensuite, vous allez créer un répertoire dans lequel Minio va stocker les fichiers. Ce sera l’emplacement de stockage des buckets (compartiments) que vous utiliserez plus tard pour organiser les objets que vous allez stocker sur votre serveur Minio. Ce tutoriel appelera le répertoire minio
:
- sudo mkdir /usr/local/share/minio
Donnez la propriété de ce répertoire à minio-user
:
- sudo chown minio-user:minio-user /usr/local/share/minio
La plupart des fichiers de configuration du serveur sont stockés dans le répertoire /etc
, donc créez votre fichier de configuration Minio dans ce répertoire :
- sudo mkdir /etc/minio
Donnez la propriété de ce répertoire à minio-user
, également :
- sudo chown minio-user:minio-user /etc/minio
Utilisez Nano ou votre éditeur de texte préféré pour créer le fichier d’environnement nécessaire pour modifier la configuration par défaut :
- sudo nano /etc/default/minio
Une fois le fichier ouvert, ajoutez les lignes suivantes pour définir certaines variables d’environnement importantes dans votre fichier d’environnement :
MINIO_ACCESS_KEY="minio"
MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="-C /etc/minio --address your_server_ip:9000"
MINIO_SECRET_KEY="miniostorage"
Examinons ces variables et les valeurs que vous définissez :
MINIO_ACCESS_KEY
: :définit la clé d’accès que vous utiliserez pour accéder à l’interface utilisateur du navigateur Minio.MINIO_SECRET_KEY
: définit la clé privée que vous utiliserez pour entrer vos identifiants de connexion dans l’interface Minio. Ce tutoriel a défini la valeur sur miniostorage
, mais nous conseillons de choisir un mot de passe différent, plus compliqué, pour sécuriser votre serveur.MINIO_VOLUMES
: identifie le répertoire de stockage que vous avez créé pour vos buckets.MINIO_OPTS
: change où et comment le serveur sert les données. L’indicateur -C
pointe Minio vers le répertoire de configuration qu’il doit utiliser, tandis que l’indicateur --address
indique à Minio l’adresse IP et le port auxquels il doit se lier. Si l’adresse IP n’est pas spécifiée, Minio se liera à chaque adresse configurée sur le serveur, y compris à localhost
et à toute adresse IP liée au Docker ; il est donc recommandé de spécifier directement l’adresse IP ici. Le port par défaut 9000
peut être changé si vous le souhaitez.Enfin, enregistrez et fermez le fichier d’environnement lorsque vous avez terminé les modifications.
Vous avez maintenant installé Minio et défini certaines variables d’environnement importantes. Ensuite, vous allez configurer le serveur pour qu’il s’exécute comme un service système.
Dans cette étape, vous allez configurer le serveur Minio pour qu’il soit géré comme un service systemd
.
Tout d’abord, téléchargez le fichier officiel du descripteur de service Minio en utilisant la commande suivante :
- curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
Vous recevrez un résultat similaire à celui qui suit :
Output
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 835 100 835 0 0 6139 0 --:--:-- --:--:-- --:--:-- 6139
Une fois le téléchargement terminé, un fichier nommé minio.service
se trouvera dans votre répertoire de travail.
Pour vérifier le contenu de minio.service
avant de l’appliquer, ouvrez-le dans un éditeur de texte pour visualiser son contenu :
- nano minio.service
Cela montrera ce qui suit :
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local/
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
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
# Built for ${project.name}-${project.version} (${project.name})
Ce fichier d’unité de service démarre le serveur Minio en utilisant l’utilisateur minio-user
que vous avez créé précédemment. Il implémente également les variables d’environnement que vous avez définies à la dernière étape, et fait fonctionner le serveur automatiquement au démarrage. Pour plus d’informations sur les fichiers unitaires systemd
, consultez notre guide Comprendre les unités systemd et les fichiers unitaires.
Une fois que vous avez examiné le contenu du script, fermez votre éditeur de texte.
Systemd requiert que les fichiers unitaires soient stockés dans le répertoire de configuration systemd
; par conséquent, déplacez minio.service
à cet emplacement :
- sudo mv minio.service /etc/systemd/system
Ensuite, exécutez la commande suivante pour recharger toutes les unités systemd :
- sudo systemctl daemon-reload
Enfin, permettez le lancement de Minio au démarrage :
- sudo systemctl enable minio
Cela donnera le résultat suivant :
OutputCreated symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.
Maintenant que le script systemd est installé et configuré, il est temps de démarrer le serveur.
Dans cette étape, vous allez démarrer le serveur et modifier le pare-feu pour autoriser l’accès par l’interface du navigateur.
Tout d’abord, démarrez le serveur Minio :
- sudo systemctl start minio
Ensuite, vérifiez le statut de Minio, l’adresse IP à laquelle il est lié, son utilisation de la mémoire, et plus encore en exécutant cette commande :
- sudo systemctl status minio
Vous aurez le résultat suivant :
Output● minio.service - MinIO
Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-12-09 21:54:02 UTC; 46s ago
Docs: https://docs.min.io
Process: 3405 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCES
Main PID: 3407 (minio)
Tasks: 7 (limit: 1152)
CGroup: /system.slice/minio.service
└─3407 /usr/local/bin/minio server -C /etc/minio --address your_server_IP:9000 /usr/local/share/minio/
Dec 09 21:54:02 cart-Minion-Object-1804-1 systemd[1]: Started MinIO.
Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Endpoint: http://your_server_IP:9000
Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Browser Access:
Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: http://your_server_IP:9000
...
Ensuite, autorisez l’accès par le pare-feu au serveur Minio sur le port configuré. Dans ce tutoriel, c’est le port 9000
.
D’abord, ajoutez la règle :
- sudo ufw allow 9000
Ensuite, activez le pare-feu :
- sudo ufw enable
Vous aurez l’invite suivante :
OutputCommand may disrupt existing ssh connections. Proceed with operation (y|n)?
Appuyez sur y
et ENTER
pour le confirmer. Vous aurez alors le résultat suivant :
OutputFirewall is active and enabled on system startup
Minio est maintenant prêt à accepter le trafic, mais avant de vous connecter au serveur, vous allez sécuriser la communication en installant un certificat SSL/TLS.
Dans cette étape, vous allez sécuriser l’accès à votre serveur Minio en utilisant une clé privée et un certificat public qui a été obtenu à partir d’une autorité de certification (AC) (dans ce cas, Let’s Encrypt). Pour obtenir un certificat SSL gratuit, vous utiliserez Certbot.
Tout d’abord, autorisez l’accès HTTP et HTTPS à travers votre pare-feu. Pour ce faire, ouvrez le port 80
, qui est le port pour HTTP :
- sudo ufw allow 80
Ensuite, ouvrez le port 443
pour HTTPS :
- sudo ufw allow 443
Une fois que vous avez ajouté ces règles, vérifiez le statut de votre pare-feu avec la commande suivante :
- sudo ufw status verbose
Vous recevrez un résultat similaire à celui qui suit :
OutputStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
9000 ALLOW IN Anywhere
443 ALLOW IN Anywhere
80 ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
9000 (v6) ALLOW IN Anywhere (v6)
443 (v6) ALLOW IN Anywhere (v6)
80 (v6) ALLOW IN Anywhere (v6)
Cela confirme que les ports 80
et 443
sont ouverts, assurant que votre serveur accepte les requêtes depuis Internet.
Ensuite, vous allez installer Certbot. Comme Certbot conserve un référentiel PPA séparé, vous devrez d’abord l’ajouter à votre liste de référentiels avant d’installer Certbot comme indiqué :
Pour préparer l’ajout du référentiel PPA, installez d’abord le référentiel software-properties-common
, un package permettant de gérer les PPA :
- sudo apt install software-properties-common
Ce package fournit quelques scripts utiles pour ajouter et supprimer les PPA au lieu de le faire manuellement.
Maintenant, ajoutez le référentiel Universe :
- sudo add-apt-repository universe
Ce référentiel contient des logiciels libres et open source entretenus par la communauté Ubuntu, mais n’est pas officiellement entretenu par Canonical, les développeurs d’Ubuntu C’est là que nous trouverons le référentiel pour Certbot.
Ensuite, ajoutez le référentiel Certbot :
- sudo add-apt-repository ppa:certbot/certbot
Vous recevrez le résultat suivant :
OutputThis is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu(s).
More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot
Press [ENTER] to continue or ctrl-c to cancel adding it
Appuyez sur ENTER
pour accepter.
Mettez ensuite à jour la liste de packages :
- sudo apt update
Enfin, installez certbot
:
- sudo apt install certbot
Ensuite, vous utiliserez certbot
pour générer un nouveau certificat SSL.
Comme Ubuntu 18.04 ne prend pas encore en charge l’installation automatique, vous utiliserez la commande certonly
et --standalone
pour obtenir le certificat :
- sudo certbot certonly --standalone -d minio-server.your_domain
--standalone
signifie que ce certificat est pour un serveur web autonome intégré. Pour plus d’informations à ce sujet, consultez notre tutoriel Comment utiliser le mode autonome de Certbot pour récupérer des certificats SSL cryptés sur Ubuntu 18.04.
Vous recevrez le résultat suivant :
OutputSaving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):
Ajoutez votre email et appuyez sur ENTER
.
Certbot vous demandera de vous enregistrer avec Let’s Encrypt :
Output- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel:
Tapez A
et appuyez sur ENTER
pour accepter.
Ensuite, il vous sera demandé si vous êtes prêt à partager votre e-mail avec Electronic Frontier Foundation :
Output- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o:
Une fois que vous avez répondu Y
ou N
, vos clés publiques et privées seront générées et enregistrées dans le répertoire /etc/letsencrypt/live/minio-server.your_domain_name
Ensuite, copiez ces deux fichiers (privkey.pem
et fullchain.pem
) dans le répertoire certs
sous le dossier de configuration du serveur Minio, qui est /etc/minio
pour ce tutoriel. Utilisez ce qui suit pour copier privkey.pem
et renommer le fichier private.key
: :
- sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/privkey.pem /etc/minio/certs/private.key
Ensuite, faites de même pour fullchain.pem
, nommant le résultat public.crt
:
- sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/fullchain.pem /etc/minio/certs/public.crt
Maintenant, changez la propriété des fichiers vers minio-user
. D’abord, faites-le pour private.key
:
- sudo chown minio-user:minio-user /etc/minio/certs/private.key
Ensuite, pour public.crt
:
- sudo chown minio-user:minio-user /etc/minio/certs/public.crt
Redémarrez le serveur Minio, afin qu’il prenne connaissance du certificat et commence à utiliser le HTTPS :
- sudo systemctl restart minio
Les certificats Let’s Encrypt ne sont valables que quatre-vingt-dix jours. Cette mesure vise à encourager les utilisateurs à automatiser le processus de renouvellement de leur certificat. Le package Certbot que vous avez installé ajoute automatiquement un script de renouvellement à /etc/cron.d
. Ce script est exécuté deux fois par jour et renouvellera automatiquement tout certificat qui se trouve dans une période de trente jours avant son expiration.
Grâce à cela, la connexion de Minio est désormais sécurisée et le certificat SSL/TLS se renouvellera automatiquement pour vous. Dans la prochaine étape, vous allez vous connecter à Minio via le navigateur pour utiliser le serveur.
Au cours de cette étape, vous allez vous connecter de manière sécurisée à l’interface web de Minio via HTTPS, puis vous allez créer des buckets et y télécharger des objets.
Accédez à l’interface web en pointant votre navigateur vers https://minio-server.your_domain:9000
.
Vous verrez l’écran de connexion du serveur Minio :
Maintenant, connectez-vous à l’interface principale en entrant vos identifiants. Pour Access Key, entrez le MINIO_ACCESS_KEY
que vous avez défini dans le fichier d’environnement /etc/default/minio
à l’Étape 1. Pour Secret Key, tapez la MINIO_SECRET_KEY
que vous avez définie dans le même fichier. Une fois que vous avez saisi les identifiants, cliquez sur le bouton rond avec la flèche directement sous les champs d’entrée.
L’interface utilisateur de Minio vous sera alors présentée. Pour créer un nouveau bucket dans lequel vous pourrez stocker des objets, cliquez sur le bouton rouge clair + en bas à droite de l’interface principale pour faire apparaître deux boutons jaunes supplémentaires.
Cliquez sur le bouton jaune au milieu et entrez un nom pour votre nouveau bucket dans l’invite, appuyez sur la touche ENTER
pour enregistrer votre réponse. Votre nouveau bucket est maintenant prêt à être utilisé pour le stockage.
Remarque : lorsque vous donnez un nom à votre bucket Minio, assurez-vous que votre nom ne contient que des lettres minuscules, des chiffres ou des traits d’union. Minio limite les conventions de dénomination des buckets, conformément aux normes AWS S3.
Lorsque vous souhaitez ajouter des objets dans votre bucket, cliquez sur le même bouton rouge clair que précédemment, puis sur le bouton jaune du haut pour ouvrir une invite de téléchargement de fichier.
À ce stade, vous avez exploré toute l’interface web de base pour créer des buckets et télécharger des objets.
Vous disposez maintenant de votre propre serveur de stockage d’objets Minio auquel vous pouvez vous connecter en toute sécurité depuis l’interface web à l’aide d’un certificat SSL/TLS Let’s Encrypt. Vous pouvez également consulter les clients Minio desktop pour FreeBSD, Linux, Mac et Windows comme alternative pour utiliser et administrer votre serveur de stockage d’objets.
De plus, si vous souhaitez augmenter la capacité de stockage de votre installation Minio au-delà de la taille du disque de votre serveur, vous pouvez utiliser le service de stockage en bloc de DigitalOcean pour attacher un volume à votre serveur, augmentant ainsi la capacité de stockage jusqu’à 80 To.
De plus amples informations sur Minio sont disponibles sur le site web de documentation du projet. Si vous souhaitez en savoir plus sur le stockage d’objets, consultez nos tutoriels Stockage d’objets.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!