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