GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer et configurer un serveur de stockage d'objets compatible S3 à l'aide de Minio sur Ubuntu 20.04

Le stockage d'objets est le stockage et la récupération de blobs non structurés de données et de métadonnées à l'aide d'une API HTTP. Au lieu de stocker des fichiers de manière conventionnelle en les divisant en blocs pour les stocker sur disque à l'aide d'un système de fichiers, nous traitons des objets entiers stockés sur le réseau. Ces objets peuvent être une image, une vidéo, des journaux, des fichiers HTML, des sauvegardes, des images de conteneur ou tout blob d'octets autonome. Ils ne sont pas structurés car ils ne suivent aucun schéma ou format spécifique.

Minio est un serveur de stockage d'objets open source, auto-hébergé et compatible avec Amazon S3. Minio est écrit en Go, est livré avec des clients indépendants du système d'exploitation et une interface de navigateur. Dans ce didacticiel, vous allez installer le serveur Minio sur un serveur Ubuntu 20.04, le protéger à l'aide d'un certificat SSL de Let's Encrypt et y accéder à l'aide d'un client en ligne de commande.

Prérequis

  • Un serveur Ubuntu 20.04 avec un utilisateur non root avec des privilèges sudo.
  • Un nom de domaine entièrement enregistré, minio.example.com .
  • Une machine Ubuntu 20.04 pour agir en tant que client.
  • Le système est mis à jour.

    $ sudo apt update
    
  • Peu de packages dont votre système a besoin.

    $ sudo apt install wget curl nano ufw software-properties-common apt-transport-https ca-certificates -y
    

    Certains de ces packages sont peut-être déjà installés sur votre système.

Étape 1 - Installer le serveur Minio

Minio, écrit en Go, est livré sous la forme d'un simple fichier binaire. Téléchargez le fichier binaire sur le site officiel de Minio.

$ wget https://dl.min.io/server/minio/release/linux-amd64/minio

Rendre le fichier exécutable.

$ chmod +x minio

Déplacez le binaire vers /usr/local/bin répertoire.

$ sudo mv minio /usr/local/bin

Vérifiez l'installation.

$ minio --version
minio version RELEASE.2022-01-28T02-28-16Z

Étape 2 - Préparer le disque de stockage d'objets

Nous devons préparer un périphérique de bloc dédié pour stocker des objets. Le chemin de stockage peut être soit sur votre disque, soit sur un second disque connecté à votre serveur. Pour notre tutoriel, nous utilisons un disque secondaire.

$ lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda      8:0    0  50G  0 disk
??sda1   8:1    0  50G  0 part /
sdb      8:16   0  50G  0 disk

Installer parted application pour créer et modifier des partitions de disque.

$ sudo apt install parted

Exécutez les commandes suivantes pour monter le disque secondaire sur /data répertoire.

$ sudo parted -s -a optimal -- /dev/sdb mklabel gpt
$ sudo parted -s -a optimal -- /dev/sdb mkpart primary 0% 100%
$ sudo parted -s -- /dev/sdb align-check optimal 1
$ sudo mkfs.ext4 /dev/sdb1
$ echo "/dev/sdb1 /data ext4 defaults 0 0" | sudo tee -a /etc/fstab
$ sudo mkdir /data
$ sudo mount -a

Étape 3 - Configurer Minio

Le serveur Minio ne doit jamais être exécuté en tant que root pour éviter tout dommage. Par conséquent, nous allons créer un utilisateur et un groupe appelé minio-user .

$ sudo useradd -r minio-user -s /sbin/nologin

Le -s flag définit le shell du compte utilisateur sur /sbin/nologin , qui n'autorise pas la connexion de l'utilisateur.

Modifiez le propriétaire du fichier binaire Minio.

$ sudo chown minio-user:minio-user /usr/local/bin/minio

Donner la propriété des /data répertoire vers minio-user .

$ sudo chown minio-user:minio-user /data -R

L'étape suivante consiste à créer un fichier de configuration pour Minio. Créez un répertoire pour stocker le fichier de configuration.

$ sudo mkdir /etc/minio

Donnez la propriété du répertoire au minio-user utilisateur.

$ sudo chown minio-user:minio-user /etc/minio

Créez le fichier d'environnement pour stocker la configuration par défaut. Ce fichier est à stocker dans le répertoire /etc/default répertoire.

$ sudo nano /etc/default/minio

Collez le code suivant avec les variables d'environnement pour définir Minio.

MINIO_ROOT_USER="minio"
MINIO_VOLUMES="/data"
MINIO_OPTS="-C /etc/minio --address your_server_ip:9000 --console-address :9001"
MINIO_ROOT_PASSWORD="miniostorage"

Vérifions toutes les variables et ce qu'elles font.

  • MINIO_ROOT_USER :définit la clé d'accès/l'utilisateur pour accéder à l'interface utilisateur Minio. Il doit comporter au moins 3 caractères.
  • MINIO_VOLUMES :spécifie le répertoire de stockage des données.
  • MINIO_OPTS :définit diverses options pour le serveur Minio. Le -C flag spécifie le répertoire de configuration créé précédemment. Le --address flag spécifie l'adresse IP et le port auquel se lier. Si vous ne spécifiez pas l'adresse IP, Minio se liera à chaque adresse IP sur le serveur, y compris localhost ou toute adresse IP liée à Docker. Le port par défaut est 9000. Le --console-address flag définit le port 9001 pour la console Web de Minio.
  • MINIO_ROOT_PASSWORD :définit la clé privée/le mot de passe pour accéder à l'interface Minio. Il doit comporter au moins 8 caractères. Choisissez une clé secrète forte et compliquée.

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Étape 4 - Installer le service Minio

Téléchargez le fichier de service Minio depuis le référentiel officiel Github.

$ curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

Ouvrez le fichier avec l'éditeur Nano.

$ nano minio.service

Vous trouverez le code suivant.

[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
ProtectProc=invisible

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=1048576

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# 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 service démarre Minio en utilisant le minio-user utilisateur que nous avons créé précédemment. Il utilise /etc/default/minio comme fichier d'environnement que nous avons configuré à l'étape 3. Une fois satisfait, fermez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Déplacez le fichier de service vers /etc/systemd/system répertoire.

$ sudo mv minio.service /etc/systemd/system

Rechargez le démon de service.

$ sudo systemctl daemon-reload

Activez le service Minio.

$ sudo systemctl enable minio
Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.

Étape 5 - Démarrer le serveur Minio

Démarrez le serveur Minio.

$ sudo systemctl start minio

Vérifiez le statut.

$ sudo systemctl status minio
? minio.service - MinIO
     Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-02-01 13:30:44 UTC; 5s ago
       Docs: https://docs.min.io
    Process: 26068 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exi>
   Main PID: 26076 (minio)
      Tasks: 6
     Memory: 55.3M
     CGroup: /system.slice/minio.service
             ??26076 /usr/local/bin/minio server -C /etc/minio --address 209.208.26.129:9000 --console-address :9001 /data

Autoriser les ports 9000 et 9001 à l'aide du pare-feu non compliqué (UFW).

$ sudo ufw allow 9000
$ sudo ufw allow 9001

Activez le pare-feu.

$ sudo ufw enable

Ouvrez l'URL http://your_server_ip:9001 dans le navigateur, et vous verrez l'écran suivant.

Étape 6 - Sécuriser Minio à l'aide de SSL

Nous utiliserons Let's Encrypt pour sécuriser Minio. Pour obtenir un certificat SSL gratuit, nous devons télécharger l'outil Certbot. Nous utiliserons le programme d'installation du package Snapd pour cela.

Installez le programme d'installation de Snap.

$ sudo apt install snapd

Assurez-vous que votre version de Snapd est à jour.

$ sudo snap install core 
$ sudo snap refresh core

Installez Certbot.

$ sudo snap install --classic certbot

Utilisez la commande suivante pour vous assurer que la commande Certbot s'exécute en créant un lien symbolique vers /usr/bin répertoire.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Générez un certificat SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d minio.example.com

La commande ci-dessus téléchargera un certificat dans /etc/letsencrypt/live/minio.example.com répertoire sur votre serveur.

Copiez les fichiers privkey.pem et fullchain.pem dans les certs répertoire sous le dossier de configuration de Minio.

$ sudo cp /etc/letsencrypt/live/minio.example.com/privkey.pem /etc/minio/certs/private.key
$ sudo cp /etc/letsencrypt/live/minio.example.com/fullchain.pem /etc/minio/certs/public.crt

Modifiez le propriétaire des certificats copiés.

$ sudo chown minio-user:minio-user /etc/minio/certs/private.key
$ sudo chown minio-user:minio-user /etc/minio/certs/public.crt

Autoriser les ports HTTP et HTTPS via le pare-feu.

$ sudo ufw allow 80
$ sudo ufw allow 443

Ouvrez le fichier de configuration Minio.

$ sudo nano /etc/default/minio

Ajoutez la ligne suivante en bas.

MINIO_SERVER_URL="https://minio.example.com:9000"

Même si la console est accessible via le port 9001, l'URL du serveur SSL utilise le port 9000 pour accéder à l'API Minio.

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez le serveur Minio.

$ sudo systemctl restart minio

Vous pouvez accéder à la console Minio via l'URL https://minio.example.com:9001 dans votre navigateur.

Étape 7 - Se connecter à Minio et configurer les buckets

Connectez-vous à la console Minio en utilisant l'utilisateur et le mot de passe définis précédemment pour accéder au tableau de bord Minio.

Cliquez sur Créer un compartiment bouton pour créer votre premier compartiment.

Étant donné que nous installons Minio sur un seul serveur/disque, certaines fonctionnalités sont désactivées. Saisissez le nom du compartiment et cliquez sur Créer un compartiment bouton pour continuer. Vous obtiendrez l'écran suivant une fois terminé.

Pour télécharger des fichiers, cliquez sur Parcourir bouton, et la page suivante apparaîtra.

Cliquez sur Télécharger des fichiers et sélectionnez Télécharger des fichiers à nouveau pour ouvrir le navigateur de fichiers sur votre PC. Vous pouvez sélectionner plusieurs fichiers à la fois à télécharger.

Cliquez sur le bouton de la corbeille pour vider la file d'attente de téléchargement une fois terminé.

C'est tout pour le moment. Vous avez créé votre premier compartiment et téléchargé des fichiers. Ensuite, nous allons nous connecter au serveur à l'aide d'un client, accéder à ce compartiment. et gérez-le.

Étape 8 - Installer le client Minio et accéder aux fichiers

Nous allons installer le client de ligne de commande de Minio sur une autre machine basée sur Ubuntu 20.04 pour notre objectif. Vous pouvez également télécharger les clients de bureau à partir de la page de téléchargement officielle de Minio.

Téléchargez le binaire Minio officiel.

$ wget https://dl.min.io/client/mc/release/linux-amd64/mc

Rendre le fichier binaire exécutable.

$ chmod +x mc

Déplacez le binaire vers /usr/local/bin répertoire.

$ sudo mv mc /usr/local/bin

Vérifiez l'installation.

$ mc --version
mc version RELEASE.2022-02-02T02-03-24Z

Définissez un alias pour votre serveur Minio afin de pouvoir y accéder en utilisant un nom facilement identifiable. Remplacer minio et miniostorage avec le nom d'utilisateur et le mot de passe que vous avez choisis pour le serveur.

$ mc alias set howtoforge https://minio.example.com:9000 minio miniostorage
mc: Configuration written to `/home/<user>/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/home/<user>/.mc/share`.
mc: Initialized share uploads `/home/<user>/.mc/share/uploads.json` file.
mc: Initialized share downloads `/home/<user>/.mc/share/downloads.json` file.
Added `howtoforge` successfully.

Le client Minio stocke toutes les configurations dans le /home/user/.mc répertoire.

Obtenez les informations du serveur Minio. Nous utilisons l'admin sous-commande pour cela.

$ mc admin info howtoforge
?  minio.example.com:9000
   Uptime: 2 minutes
   Version: 2022-01-28T02:28:16Z
   Network: 1/1 OK

9.6 MiB Used, 1 Bucket, 5 Objects

Pour lister tous les compartiments sous votre serveur Minio, utilisez la commande suivante.

$ mc ls howtoforge
[2022-02-01 16:59:46 UTC]     0B howtoforge/

Pour répertorier tous les objets/fichiers d'un compartiment donné, utilisez la commande suivante.

$ mc ls howtoforge/howtoforge
[2022-02-02 05:32:28 UTC] 2.9MiB STANDARD IMG_20160717_184947_HDR.jpg
[2022-02-02 05:32:00 UTC] 2.2MiB STANDARD IMG_20160903_220639_HDR.jpg
[2022-02-02 05:28:25 UTC] 2.4MiB STANDARD IMG_20161006_213936_HDR.jpg
[2022-02-02 05:28:07 UTC] 2.2MiB STANDARD IMG_20161015_194409_HDR.jpg
[2022-02-02 03:33:28 UTC]  25KiB STANDARD quarantine.jpg

Vous pouvez créer un nouveau compartiment à l'aide de la commande suivante.

$ mc mb howtoforge/bucket2
Bucket created successfully `howtoforge/bucket2`.

Créons un nouveau fichier à copier dans ce compartiment.

$ touch test.txt

Pour copier un fichier dans le compartiment nouvellement créé, utilisez la commande suivante.

$ mc cp test.txt howtoforge/bucket2
/home/nspeaks/test.txt:    0 B / ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????

Lister le fichier nouvellement copié.

$ mc ls howtoforge/bucket2
[2022-02-02 07:06:44 UTC]     0B STANDARD test.txt

Vous pouvez vérifier toutes les commandes en utilisant le --help arguments.

$ mc --help
NAME:
  mc - MinIO Client for cloud storage and filesystems.

USAGE:
  mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]

COMMANDS:
  alias      set, remove and list aliases in configuration file
  ls         list buckets and objects
  mb         make a bucket
  rb         remove a bucket
  cp         copy objects
  mirror     synchronize object(s) to a remote site
  cat        display object contents
  head       display first 'n' lines of an object
  pipe       stream STDIN to an object
  share      generate URL for temporary access to an object
  find       search for objects
  sql        run sql queries on objects
  stat       show object metadata
  mv         move objects
  tree       list buckets and objects in a tree format
  du         summarize disk usage recursively
  retention  set retention for object(s)
  legalhold  manage legal hold for object(s)
  diff       list differences in object name, size, and date between two buckets
  rm         remove object(s)
  version    manage bucket versioning
  ilm        manage bucket lifecycle
  encrypt    manage bucket encryption config
  event      manage object notifications
  watch      listen for object notification events
  undo       undo PUT/DELETE operations
  anonymous  manage anonymous access to buckets and objects
  tag        manage tags for bucket and object(s)
  replicate  configure server side bucket replication
  admin      manage MinIO servers
  update     update mc to latest release
  support    Support related commands

GLOBAL FLAGS:
  --autocompletion              install auto-completion for your shell
  --config-dir value, -C value  path to configuration folder (default: "/home/<user>/.mc")
  --quiet, -q                   disable progress bar display
  --no-color                    disable color theme
  --json                        enable JSON lines formatted output
  --debug                       enable debug output
  --insecure                    disable SSL certificate verification
  --help, -h                    show help
  --version, -v                 print the version

TIP:
  Use 'mc --autocompletion' to enable shell autocompletion

VERSION:
  RELEASE.2022-02-02T02-03-24Z

Conclusion

Ceci conclut notre tutoriel où vous avez installé le serveur de stockage d'objets Minio sur un serveur basé sur Ubuntu 20.04. Il est accessible via une console web protégée par un certificat SSL Let's Encrypt. Vous avez également installé le client de ligne de commande Minio sur une autre machine Ubuntu pour gérer et accéder au serveur Minio.

Si vous avez des questions, postez-les dans les commentaires ci-dessous.


Ubuntu
  1. Comment installer et configurer Algo VPN Server sur Ubuntu 20.04

  2. Comment installer et configurer le serveur DHCP sur Ubuntu 20.04

  3. Comment installer et configurer le serveur Redis dans Ubuntu

  4. Comment utiliser Ansible pour installer et configurer Redis 6 sur Ubuntu 20.04

  5. Comment installer et configurer Squid Proxy sur Ubuntu 20.04

Comment installer et configurer le serveur LAMP sur Ubuntu

Comment installer le stockage d'objets compatible minio S3 sur Ubuntu 20.04

Comment installer et configurer le serveur OpenLDAP sur Ubuntu 16.04

Comment installer et configurer le serveur VNC sur Ubuntu 20.04

Comment installer le stockage d'objets minio S3 sur Ubuntu 21.04

Comment installer et configurer VNC sur Ubuntu Server 20.04