Cómo instalar un servidor de almacenamiento de objetos Minio en Debian 10

1 mar 2021 11 min di lettura
Cómo instalar un servidor de almacenamiento de objetos Minio en Debian 10
Indice dei contenuti

Introducción

Minio es un popular servidor de almacenamiento de objetos de código abierto compatible con el servicio de almacenamiento en la nube de Amazon S3. Las aplicaciones que se han configurado para comunicarse con Amazon S3 también se pueden configurar para comunicarse con Minio, lo que permite que Minio sea una alternativa viable a S3 si desea tener más control sobre el servidor de almacenamiento de objetos. El servicio almacena datos no estructurados, como fotos, videos, archivos de registro, copias de seguridad e imágenes de contenedores /máquinas virtuales, e incluso puede proporcionar un servidor de almacenamiento de objetos único que agrupa varias unidades distribuidas en muchos servidores.

Minio está escrito en Go, viene con un cliente de línea de comandos más una interfaz de navegador y es compatible con un servicio de cola simple para servicios como el Protocolo de cola de mensajes avanzado (AMQP), Elasticsearch, Redis, NATS y PostgreSQL. Por todas estas razones, aprender a configurar un servidor de almacenamiento de objetos Minio puede agregar una gran cantidad de flexibilidad y utilidad a su proyecto.

En este tutorial, deberá:

  • Instale el servidor Minio en su servidor Debian 10.
  • Configure un certificado SSL /TLS usando Let's Encrypt para proteger las comunicaciones entre el servidor y el cliente.
  • Acceda a la interfaz del navegador Minio a través de HTTPS para usar y administrar el servidor.

Prerrequisitos

Para completar este tutorial, necesitará:

  • Un servidor Debian 10 configurado con un usuario sudo no root y un firewall.
  • Un nombre de dominio completamente registrado. En este tutorial, su dominio se representará como your_domain.

Si desea instalar Minio en un servidor remoto, continúe leyendo; de lo contrario, si desea instalar el compilador GCC en la computadora local, omita el primer párrafo "Conexión al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:

ssh root@IP_DEL_SERVER

A continuación, deberá ingresar la contraseña del usuario root.

Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:

ssh nome_utente@IP_DEL_SERVER

Luego se le pedirá que ingrese su contraseña de usuario.

El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Paso 1: instalar y configurar el servidor Minio

Puede instalar el servidor Minio compilando el código fuente o utilizando un archivo binario. Para instalarlo desde la fuente, debe tener al menos Go 1.12 instalado en su sistema.

En este paso, instalará el servidor a través del binario precompilado y posteriormente configurará el servidor Minio.

Si no ha actualizado recientemente la base de datos del paquete, actualícela ahora:

sudo apt update

Luego, descargue el binario del servidor Minio del sitio web oficial:

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

Recibirá un resultado similar al siguiente:

--2020-03-17 22:21:52-- 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: 47321088 (45M) [application/octet-stream]
 Saving to: 'minio'

 minio 100%[=================================================================================================================>] 45.13M 13.8MB/s in 4.0s

 2020-03-17 22:21:57 (11.2 MB/s) - 'minio' saved [47321088/47321088]

Cuando se complete la descarga, un archivo llamado minio estará en su directorio de trabajo. Utilice el siguiente comando para hacerlo ejecutable:

sudo chmod +x minio

Ahora, mueva el archivo al directorio /usr/local/bin donde systemd espera encontrarlo:

sudo mv minio /usr/local/bin

Esto nos permitirá escribir un archivo de unidad de servicio más adelante en este tutorial para ejecutar automáticamente Minio al inicio.

Por razones de seguridad, es mejor evitar ejecutar el servidor Minio como root. Esto limitará el daño que se puede hacer a su sistema si se ve comprometido. Dado que el systemd que usará en el paso 2 busca una cuenta de usuario y un grupo llamado minio-user, cree un nuevo usuario con este nombre:

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

En este comando, usó el -s para establecer /sbin/nologin como el shell para minio-user. Este es un shell que no permite el inicio de sesión de usuario, lo cual no es necesario para minio-user.

A continuación, cambie la propiedad del binario Minio a minio-user:

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

A continuación, creará un directorio donde Minio almacenará los archivos. Esta será la ubicación de almacenamiento de los cubos que posteriormente se utilizan para organizar los objetos almacenados en el servidor de Minio. Este tutorial nombrará el directorio minio

sudo mkdir /usr/local/share/minio

Asigne la propiedad de ese directorio a minio-user:

sudo chown minio-user:minio-user /usr/local/share/minio

La mayoría de los archivos de configuración del servidor se almacenan en el /etc, así que cree su archivo de configuración de Minio allí:

sudo mkdir /etc/minio

También otorgue la propiedad de ese directorio a minio-user:

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

Utilice nano o su editor de texto favorito para crear el archivo de entorno necesario para cambiar la configuración predeterminada:

sudo nano /etc/default/minio

Una vez que el archivo esté abierto, agregue las siguientes líneas para establecer algunas variables de entorno importantes en su archivo de entorno:

MINIO_ACCESS_KEY="minio"
 MINIO_VOLUMES="/usr/local/share/minio/"
 MINIO_OPTS="-C /etc/minio --address your_server_ip:9000"
 MINIO_SECRET_KEY="miniostorage"

Echemos un vistazo a estas variables y sus valores establecidos:

  • MINIO_ACCESS_KEY: establezca la clave de acceso que utilizará para acceder a la interfaz de usuario del navegador Minio.
  • MINIO_SECRET_KEY: establezca la clave privada que utilizará para completar las credenciales de inicio de sesión en la interfaz de Minio. Este tutorial ha establecido el valor en miniostorage, pero le recomendamos que elija una contraseña diferente y más complicada para proteger su servidor.
  • MINIO_VOLUMES: identifica el directorio de almacenamiento creado para los depósitos.
  • MINIO_OPTS: esto cambia dónde y cómo el servidor entrega los datos. El -C apunta a Minio al directorio de configuración que debe usar, mientras que el --address le dice a Minio la dirección IP y el puerto al que debe conectarse. Si no se especifica la dirección IP, Minio se vinculará a todas las direcciones configuradas en el servidor, incluido localhost y todas las direcciones IP relacionadas con Docker, por lo que se recomienda especificar la dirección IP directamente aquí. Si lo desea, se puede cambiar 9000

Finalmente, guarde y cierre el archivo de entorno cuando haya terminado de realizar cambios.

Ahora ha instalado Minio y ha establecido algunas variables de entorno importantes. A continuación, configurará el servidor para que se ejecute como un servicio del sistema.

Paso 2: Instale el script de inicio de Minio Systemd

En este paso, configurará el servidor Minio para que se administre como un servicio systemd

Primero, descargue el archivo descriptor de servicio oficial de Minio usando el siguiente comando:

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

Recibirá un resultado similar al siguiente:

% Total % Received % Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
 100 835 100 835 0 0 4133 0 --:--:-- --:--:-- --:--:-- 4133

Cuando se complete la descarga, un archivo llamado minio.service estará en el directorio de trabajo.

Para comprobar el contenido de minio.service antes de aplicarlo, ábralo en un editor de texto para ver su contenido:

nano minio.service

Este será el contenido del archivo:

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

Este archivo de unidad de servicio inicia el servidor Minio utilizando el minio-user creado anteriormente. También implementa las variables de entorno establecidas en el último paso y permite que el servidor se ejecute automáticamente al iniciarse.

Después de revisar el contenido del script, cierre el editor de texto.

Systemd requiere que los archivos de la unidad se almacenen en el systemd, así que mueva el minio.service a esa carpeta con el comando mv:

sudo mv minio.service /etc/systemd/system

Luego, ejecute el siguiente comando para recargar todas las unidades systemd:

sudo systemctl daemon-reload

Finalmente, habilite Minio para comenzar al inicio:

sudo systemctl enable minio

Esto dará el siguiente resultado:

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

Ahora que el script systemd está instalado y configurado, es hora de iniciar el servidor.

Paso 3: inicie el servidor Minio

En este paso, iniciará el servidor y modificará el firewall para permitir el acceso a través de la interfaz del navegador.

Primero, inicie el servidor Minio:

sudo systemctl start minio

A continuación, verifique el estado de Minio, la dirección IP con la que está asociado, el uso de memoria y más ejecutando este comando:

sudo systemctl status minio

Obtendrá el siguiente resultado:

● minio.service - MinIO
 Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
 Active: active (running) since Thu 2020-03-19 00:26:30 CET; 2s ago
 Docs: https://docs.min.io
 Process: 11242 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/SUCCESS)
 Main PID: 11243 (minio)
 Tasks: 8 (limit: 2301)
 Memory: 148.8M
 CGroup: /system.slice/minio.service

 └─2180 /usr/local/bin/minio server -C /etc/minio --address YOUR_ADDRESS:9000 /usr/local/share/minio/

Luego habilite el acceso a través del firewall UFW, si está activo, al servidor Minio en el puerto configurado. En este tutorial, el puerto es 9000.

Primero agregue la regla:

sudo ufw allow 9000

Luego, habilite el firewall:

sudo ufw enable

Aparecerá el siguiente mensaje:

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

Presione y y ENTER para confirmar. Entonces obtendrá el siguiente resultado:

Firewall is active and enabled on system startup

Minio ahora está listo para aceptar tráfico, pero antes de conectarse al servidor, protegerá sus comunicaciones instalando un certificado SSL /TLS.

Paso 4: Asegurar el acceso al servidor Minio con un certificado TLS

En este paso, asegurará el acceso a su servidor Minio utilizando una clave privada y un certificado público obtenido de una autoridad de certificación (CA), en este caso Let's Encrypt. Para obtener un certificado SSL gratuito, utilizará Certbot.

Primero, permita el acceso HTTP y HTTPS a través de su firewall. Para hacer esto, abra el puerto 80, que es el puerto para HTTP:

sudo ufw allow 80

Luego, abra el puerto 443 para HTTPS:

sudo ufw allow 443

Después de agregar estas reglas, verifique el estado de su firewall con el siguiente comando:

sudo ufw status verbose

Recibirá un resultado similar al siguiente:

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)

Esto confirma que los puertos 80 y 443 están abiertos, lo que garantiza que el servidor acepta solicitudes de Internet.

A continuación, instalará Certbot. Dado que Certbot mantiene un repositorio de PPA separado, primero deberá agregarlo a su lista de repositorios antes de instalar Certbot como se muestra:

Para prepararse para agregar el repositorio de PPA, primero instale el software-properties-common para administrar PPA:

sudo apt install software-properties-common

Este paquete proporciona algunos scripts útiles para agregar y eliminar PPA en lugar de hacerlo manualmente.

A continuación, agregue el repositorio de Certbot:

sudo add-apt-repository ppa:certbot/certbot

Recibirá el siguiente resultado:

This is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu.

 Note: Packages are only provided for currently supported Ubuntu releases.
 More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot
 Press [ENTER] to continue or ctrl-c to cancel adding it

Presione ENTER para aceptar.

Luego actualice la lista de paquetes:

sudo apt update

Finalmente, instale certbot:

sudo apt install certbot

A continuación, utilizará certbot para generar un nuevo certificado SSL.

Dado que Debian 10 aún no admite la instalación automática, utilizará los certonly y --standalone para obtener el certificado:

sudo certbot certonly --standalone -d minio-server.your_domain

--standalone significa que este certificado es para un servidor web independiente integrado.

Recibirá el siguiente resultado:

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

Agregue su correo electrónico y presione ENTER.

Luego, Certbot le pedirá que se registre en Let's Encrypt:

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

Escriba A y presione ENTER para aceptar.

A continuación, se le preguntará si desea compartir su correo electrónico con Electronic Frontier Foundation:

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

Después de responder Y o N, las claves públicas y privadas se generarán y guardarán en el directorio /etc/letsencrypt/live/minio-server.your_domain_name

Luego, copie estos dos archivos ( privkey.pem y fullchain.pem ) al certs en la carpeta de configuración del servidor de Minio, que es /etc/minio en este tutorial. Utilice el comando cp para copiar privkey.pem y cambie el nombre del archivo private.key:

sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/privkey.pem /etc/minio/certs/private.key

Luego haga lo mismo para fullchain.pem, nombrando el resultado public.crt:

sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/fullchain.pem /etc/minio/certs/public.crt

Ahora, cambie la propiedad de los archivos a minio-user. Primero, haz esto para private.key:

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

Entonces public.crt:

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

Reinicie el servidor Minio para que reconozca el certificado y comience a usar HTTPS:

sudo systemctl restart minio

Los certificados Let's Encrypt solo son válidos durante noventa días. Esto es para animar a los usuarios a automatizar el proceso de renovación del certificado. El paquete Certbot que instaló agrega automáticamente un script de renovación a /etc/cron.d. Este script se ejecuta dos veces al día y renovará automáticamente cualquier certificado dentro de los treinta días posteriores a su vencimiento.

Con eso, la conexión de Minio ahora es segura y el certificado TLS SSL se renovará automáticamente para usted. En el siguiente paso, se conectará a Minio a través de su navegador para usar el servidor.

Paso 5: Conéctese de forma segura a la interfaz web de Minio a través de HTTPS

En este paso, se conectará de forma segura a la interfaz web de Minio a través de HTTPS, luego creará bukects y cargará objetos en ellos.

Acceda a la interfaz web apuntando su navegador a. https://minio-server.your_domain:9000

Verá la pantalla de inicio de sesión del servidor Minio.

Ahora inicie sesión en la interfaz principal ingresando sus credenciales. Para la clave de acceso, ingrese el MINIO_ACCESS_KEY establecido en el archivo de entorno /etc/default/minio en el paso 1. Para la clave secreta, escriba el valor establecido en el MINIO_SECRET_KEY del mismo archivo. Después de ingresar sus credenciales, haga clic en el botón directamente debajo de los campos de entrada.

A continuación, se le presentará la interfaz de usuario de Minio. Para crear un nuevo depósito donde se pueden almacenar objetos, haga clic en el botón en la parte inferior derecha de la interfaz principal para mostrar dos botones amarillos adicionales.

Haga clic en el botón amarillo del medio e ingrese un nombre para su nuevo depósito en el mensaje, presionando la ENTER para guardar la respuesta. Su nuevo balde ahora está listo para usarse para almacenamiento.

Nota:

Cuando desee agregar objetos al depósito, haga clic en el mismo botón rojo claro que antes y luego haga clic en el botón amarillo en la parte superior para abrir un mensaje de carga de archivo.

Conclusión

Ahora tiene su propio servidor de almacenamiento de objetos Minio al que puede conectarse de forma segura desde la interfaz web mediante un certificado Let's Encrypt SSL /TLS. Opcionalmente, es posible que desee ver el cliente de escritorio Minio para FreeBSD, Linux, Mac y Windows como una forma alternativa de usar y administrar su servidor de almacenamiento de objetos.

Puede encontrar más información sobre Minio en el sitio web de documentación del proyecto.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.