En este video veremos como instalar Minio, una aplicación de software libre que nos permite montar nuestro propio servicio S3 en cualquier servidor o nube.

S3 es un servicio de almacenamiento de objetos creado para almacenar y recuperar cualquier volumen de datos desde cualquier ubicación de Internet. Es un servicio de almacenamiento sencillo que ofrece excelente durabilidad, disponibilidad, rendimiento, seguridad y escalabilidad.

La instalación la realizaremos en un servidor Ubuntu 20.04 LTS con ayuda de docker para ejecutar nuestra aplicación dentro de un contenedor, y de nginx como proxy reverso, para reenviar las peticiones web a nuestro contenedor al cual asignaremos un nombre de dominio.

Listado de comandos

A continuación enlisto los comandos utilizados durante el video:

Primero actualizamos nuestros repositorios del servidor.

sudo apt-get update

Posteriormente vamos a instalar docker en caso de que no lo tengamos instalado, para esto primero instalaremos lo siguientes paquetes con el comando.

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Ahora descargamos y añadimos a nuestro servidor la llave para poder añadir el repositorio de docker a nuestro servidor.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add

Añadimos el repositorio de docker a nuestra lista de repositorios.

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Actualizamos nuevamente los repositorios.

sudo apt-get update

Verificamos que aparezcan los repositorios y que usemos el repositorio de docker.

apt-cache policy docker-ce

Instalamos docker.

sudo apt install docker-ce

Verificamos que este corriendo el servicio de docker.

sudo systemctl status docker

Creamos un directorio donde se almacenarán los archivos del servicio S3 de Minio.

sudo mkdir /data

Creamos el contenedor de docker y mapeamos la carpeta data recién creada con la carpeta data del contenedor y asignamos el usuario y contraseña para nuestro servicio S3.

sudo docker run -p 9000:9000 --name minio \
-e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
-v /mnt/data:/data \
minio/minio server /data

Obtenemos la lista de contenedores para saber el id de nuestro contenedor recién creado.

sudo docker ps -a

Iniciando el contenedor con el identificador que obtuvimos del comando anterior.

sudo docker start contenedor-id

Instalando el servidor web nginx para configurarlo como proxy reverso.

supo apt-get install nginx

Entrar al directorio de configuración de sitios de nginx.

cd /etc/nginx/sites-available/

Creamos el archivo de configuración de nuestro sitio con el editor nano, donde minio.bioxor.net se debe sustituir con el nombre de tu sitio.

sudo nano minio.bioxor.net

Configuración de nginx, reemplazar minio.bioxor.net por el nombre de tu sitio y la dirección IP 172.17.0.2 por la de tu contenedor.

server {
  listen 80;
  server_name www.minio.bioxor.net minio.bioxor.net;
# redirects both www and non-www to https
  return 301 https://minio.bioxor.net$request_uri;
}

server {

 listen 443 ssl;
 server_name minio.bioxor.net;

 access_log            /var/log/nginx/minio.bioxor.net.access.log;

 ssl_certificate           /etc/nginx/certs/server.crt;
 ssl_certificate_key       /etc/nginx/certs/server.key;
 ssl_trusted_certificate   /etc/nginx/certs/server_ca.crt;

 ignore_invalid_headers off;
 client_max_body_size 0;

location / {

 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header Host $http_host;

 proxy_connect_timeout 300;
 proxy_http_version 1.1;
 proxy_set_header Connection "";
 chunked_transfer_encoding off;

 proxy_pass          http://172.17.0.2:9000/;
 proxy_read_timeout  600;

 proxy_redirect       http://172.17.0.2:9000 https://minio.bioxor.net;

  }
}

Una vez guardado el archivo con la siguiente configuración ingresar al directorio de sitios habilitados de nginx.

cd /etc/nginx/sites-enabled/

Creando un vinculo simbolico de nuestra configuración de nginx.

sudo ln -s ../sites-available/minio.bioxor.net

Verificando que la configuración de nginx sea correcta.

sudo nginx -t

Reiniciando servicio de nginx para que tome la configuración de nuestro sitio.

sudo service nginx restart

Referencias y documentación

A continuación enlisto referencias e información complementaria a este tutorial.

Guardar archivo en Base de datos, en Disco y en S3 en C# ASP .NET
Documentación oficial de Minio
Configuración de nginx para minio
Cómo instalar tu propio servicio S3 con Minio en Ubuntu (sin Docker)

Rodolfo Borja

Me encanta la tecnología y los chocolates y me da satisfacción poder ayudar a otras personas compartiendo mis conocimientos, estudié ingeniería en computación y me dedico al giro del desarrollo software y servicios desde hace más de 15 años.

View all posts

1 comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  • Buen día, acabo de ver tu video en youtube (Cómo instalar tu servicio S3 con Minio + Docker + Nginx) de verdad que excelente material, pero me gastaría si en lo posible me pudiese ayudar y tiene que ver como desplegar minio a través de kubernetes utilizando ingress-nginx (controlador de ingreso) ya se realizo el despliegue pero no logro que el ingress-contoller haga la redirección hacia el pod del minio. en su defecto estoy dispuesto a pagar la asesoría que pueda brindar.

    Mi correo es ifernando1976@gmail.com

    Gradezco su apoyo Saludos cordiales

Publicidad

¿Me donas para un chocolate?