GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar y configurar un servidor de almacenamiento de objetos compatible con S3 usando Minio en Ubuntu 20.04

El almacenamiento de objetos es el almacenamiento y la recuperación de blobs de datos y metadatos no estructurados mediante una API HTTP. En lugar de almacenar archivos de manera convencional dividiéndolos en bloques para almacenarlos en el disco mediante un sistema de archivos, tratamos con objetos completos almacenados en la red. Estos objetos pueden ser una imagen, un video, registros, archivos HTML, copias de seguridad, imágenes de contenedores o cualquier blob de bytes independiente. No están estructurados porque no siguen ningún esquema o formato específico.

Minio es un popular servidor de almacenamiento de objetos de código abierto, autohospedado y compatible con Amazon S3. Minio está escrito en Go, viene con clientes independientes del sistema operativo y una interfaz de navegador. En este tutorial, instalará el servidor Minio en un servidor Ubuntu 20.04, lo protegerá con un certificado SSL de Let's Encrypt y accederá a él con un cliente de línea de comandos.

Requisitos

  • Un servidor Ubuntu 20.04 con un usuario no root con privilegios sudo.
  • Un nombre de dominio completamente registrado, minio.example.com .
  • Una máquina Ubuntu 20.04 para actuar como cliente.
  • El sistema está actualizado.

    $ sudo apt update
    
  • Pocos paquetes que tu sistema necesita.

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

    Es posible que algunos de estos paquetes ya estén instalados en su sistema.

Paso 1:instalar el servidor Minio

Minio, al estar escrito en Go, se envía como un archivo binario simple. Descarga el archivo binario del sitio web oficial de Minio.

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

Haz que el archivo sea ejecutable.

$ chmod +x minio

Mueve el binario a /usr/local/bin directorio.

$ sudo mv minio /usr/local/bin

Verifique la instalación.

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

Paso 2:preparar el disco de almacenamiento de objetos

Necesitamos preparar un dispositivo de bloque dedicado para almacenar objetos. La ruta de almacenamiento puede estar en su disco o en un segundo disco conectado a su servidor. Para nuestro tutorial, estamos usando un disco secundario.

$ 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

Instalar parted aplicación para crear y modificar particiones de disco.

$ sudo apt install parted

Ejecute los siguientes comandos para montar el disco secundario en /data directorio.

$ 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

Paso 3:Configurar Minio

El servidor Minio nunca debe ejecutarse como root para evitar daños. Por lo tanto, crearemos un usuario y un grupo llamado minio-user .

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

El -s flag establece el shell de la cuenta de usuario en /sbin/nologin , que no permite el inicio de sesión de usuario.

Cambie la propiedad del archivo binario de Minio.

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

Dar la propiedad de los /data directorio a minio-user .

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

El siguiente paso es crear un archivo de configuración para Minio. Cree un directorio para almacenar el archivo de configuración.

$ sudo mkdir /etc/minio

Dar propiedad del directorio al minio-user usuario.

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

Cree el archivo de entorno para almacenar la configuración predeterminada. Este archivo debe almacenarse en el /etc/default directorio.

$ sudo nano /etc/default/minio

Pegue el siguiente código con variables de entorno para definir 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"

Revisemos todas las variables y lo que hacen.

  • MINIO_ROOT_USER :establece la clave de acceso/usuario para acceder a la interfaz de usuario de Minio. Debe tener un mínimo de 3 caracteres de longitud.
  • MINIO_VOLUMENES :especifica el directorio de almacenamiento de los datos.
  • MINIO_OPTS :establece varias opciones para el servidor Minio. El -C flag especifica el directorio de configuración creado anteriormente. La --address flag especifica la dirección IP y el puerto al que enlazar. Si no especifica la dirección IP, Minio se vinculará a cada dirección IP en el servidor, incluido localhost o cualquier dirección IP relacionada con Docker. El puerto predeterminado es 9000. El --console-address flag establece el puerto 9001 para la consola web de Minio.
  • MINIO_ROOT_PASSWORD :establece la clave/contraseña privada para acceder a la interfaz de Minio. Debe tener un mínimo de 8 caracteres de longitud. Elija una clave secreta fuerte y complicada.

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Paso 4:instalar el servicio Minio

Descargue el archivo de servicio de Minio del repositorio oficial de Github.

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

Abra el archivo con el editor Nano.

$ nano minio.service

Encontrará el siguiente código.

[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})

Este servicio inicia Minio usando el minio-user usuario que creamos anteriormente. Utiliza /etc/default/minio como el archivo de entorno que configuramos en el paso 3. Una vez satisfecho, cierre el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Mueva el archivo de servicio a /etc/systemd/system directorio.

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

Vuelva a cargar el demonio de servicio.

$ sudo systemctl daemon-reload

Habilite el Servicio Minio.

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

Paso 5:iniciar el servidor Minio

Inicie el Servidor Minio.

$ sudo systemctl start minio

Verifique el estado.

$ 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

Permita los puertos 9000 y 9001 mediante el cortafuegos sin complicaciones (UFW).

$ sudo ufw allow 9000
$ sudo ufw allow 9001

Habilite el cortafuegos.

$ sudo ufw enable

Abra la URL http://your_server_ip:9001 en el navegador, y verá la siguiente pantalla.

Paso 6:Proteja Minio mediante SSL

Usaremos Let's Encrypt para asegurar Minio. Para obtener un certificado SSL gratuito, debemos descargar la herramienta Certbot. Usaremos el instalador del paquete Snapd para eso.

Instale el instalador de Snap.

$ sudo apt install snapd

Asegúrese de que su versión de Snapd esté actualizada.

$ sudo snap install core 
$ sudo snap refresh core

Instale Certbot.

$ sudo snap install --classic certbot

Use el siguiente comando para asegurarse de que el comando Certbot se ejecute creando un enlace simbólico al /usr/bin directorio.

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

Genere un certificado SSL.

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

El comando anterior descargará un certificado en /etc/letsencrypt/live/minio.example.com directorio en su servidor.

Copie los archivos privkey.pem y fullchain.pem en los certs directorio bajo la carpeta de configuración 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

Cambie la propiedad de los certificados copiados.

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

Permitir puertos HTTP y HTTPS a través del cortafuegos.

$ sudo ufw allow 80
$ sudo ufw allow 443

Abra el archivo de configuración de Minio.

$ sudo nano /etc/default/minio

Agregue la siguiente línea en la parte inferior.

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

Aunque se accede a la consola a través del puerto 9001, la URL del servidor SSL usa el puerto 9000 para acceder a la API de Minio.

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie el servidor Minio.

$ sudo systemctl restart minio

Puede acceder a la consola de Minio a través de la URL https://minio.example.com:9001 en su navegador.

Paso 7:conectarse a Minio y configurar depósitos

Inicie sesión en Minio Console con el usuario y la contraseña establecidos anteriormente para acceder al Minio Dashboard.

Haz clic en Crear depósito. botón para crear su primer depósito.

Dado que estamos instalando Minio en un solo servidor/disco, algunas de las funciones están deshabilitadas. Ingrese el nombre del depósito y haga clic en Crear depósito botón para proceder. Obtendrá la siguiente pantalla una vez que haya terminado.

Para cargar archivos, haga clic en Examinar y aparecerá la página siguiente.

Haga clic en Subir archivos y seleccione Subir archivos de nuevo para abrir el Explorador de archivos en su PC. Puede seleccionar varios archivos a la vez para cargar.

Haga clic en el botón de la papelera de reciclaje para borrar la cola de carga una vez que haya terminado.

Eso es todo por ahora. Has creado tu primer cubo y subido algunos archivos. A continuación, nos conectaremos al servidor usando un cliente, acceda a este depósito. y gestionarlo.

Paso 8:instalar Minio Client y acceder a los archivos

Instalaremos el cliente de línea de comandos de Minio en una máquina diferente basada en Ubuntu 20.04 para nuestro propósito. También puede descargar clientes de escritorio desde la página de descarga oficial de Minio.

Descarga el binario oficial de Minio.

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

Haz que el archivo binario sea ejecutable.

$ chmod +x mc

Mueve el binario a /usr/local/bin directorio.

$ sudo mv mc /usr/local/bin

Verifique la instalación.

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

Establezca un alias para su servidor Minio para que pueda acceder a él utilizando un nombre fácilmente identificable. Reemplazar minio y miniostorage con su nombre de usuario y contraseña elegidos para el servidor.

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

El cliente Minio almacena todas las configuraciones en el /home/user/.mc directorio.

Obtenga la información del servidor Minio. Usamos el admin subcomando para esto.

$ 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

Para enumerar todos los cubos en su servidor Minio, use el siguiente comando.

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

Para enumerar todos los objetos/archivos en un depósito determinado, use el siguiente comando.

$ 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

Puede crear un depósito nuevo con el siguiente comando.

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

Vamos a crear un nuevo archivo para copiarlo en este depósito.

$ touch test.txt

Para copiar un archivo en el depósito recién creado, use el siguiente comando.

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

Enumere el archivo recién copiado.

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

Puede verificar todos los comandos usando --help argumento.

$ 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

Conclusión

Esto concluye nuestro tutorial en el que instaló el servidor de almacenamiento de objetos Minio en un servidor basado en Ubuntu 20.04. Es accesible a través de una consola web protegida por un certificado SSL de Let's Encrypt. También instaló el cliente de línea de comandos Minio en otra máquina Ubuntu para administrar y acceder al servidor Minio.

Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Ubuntu
  1. Cómo instalar y configurar el servidor Algo VPN en Ubuntu 20.04

  2. Cómo instalar y configurar el servidor DHCP en Ubuntu 20.04

  3. Cómo instalar y configurar el servidor Redis en Ubuntu

  4. Cómo usar Ansible para instalar y configurar Redis 6 en Ubuntu 20.04

  5. Cómo instalar y configurar Squid Proxy en Ubuntu 20.04

Cómo instalar y configurar el servidor LAMP en Ubuntu

Cómo instalar almacenamiento de objetos compatible con minio S3 en Ubuntu 20.04

Cómo instalar y configurar el servidor OpenLDAP en Ubuntu 16.04

Cómo instalar y configurar el servidor VNC en Ubuntu 20.04

Cómo instalar el almacenamiento de objetos minio S3 en Ubuntu 21.04

Cómo instalar y configurar VNC en Ubuntu Server 20.04