One place for hosting & domains

      stockage

      Comment configurer un serveur de stockage d’objets en utilisant Minio sur Ubuntu 18.04


      L’auteur a choisi le Open Internet/Free Speech Fund pour recevoir un don dans le cadre du programme Write for Donations.

      Introduction

      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.

      Conditions préalables

      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.

      Étape 1 — ; Installation et configuration du serveur Minio

      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 :

      Si vous n’avez pas mis à jour la base de données du package récemment, mettez-la à jour maintenant :

      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 :

      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 :

      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 :

      /etc/default/minio

      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.

      Étape 2 — Installation du script de démarrage systemd de Minio

      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 :

      Cela montrera ce qui suit :

      /etc/systemd/system/minio.service

      [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 :

      Output

      Created 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.

      Étape 3 — Démarrage du serveur Minio

      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 :

      Ensuite, activez le pare-feu :

      Vous aurez l’invite suivante :

      Output

      Command 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 :

      Output

      Firewall 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.

      Étape 4 — Sécurisation de l’accès à votre serveur Minio avec un certificat 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 :

      Ensuite, ouvrez le port 443 pour HTTPS :

      Une fois que vous avez ajouté ces règles, vérifiez le statut de votre pare-feu avec la commande suivante :

      Vous recevrez un résultat similaire à celui qui suit :

      Output

      Status: 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 :

      Output

      This 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 :

      Enfin, installez 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 :

      Output

      Saving 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.

      Étape 5 — Connexion sécurisée à l’interface web de Minio à l’aide du HTTPS

      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 :

      Écran de connexion 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.

      Interface principale de Minio

      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.

      Conclusion

      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.



      Source link