¿Qué es MinIO?
MinIO es una solución de almacenamiento de objetos de código abierto, diseñada para ser altamente escalable, sencilla de usar y compatible con el estándar Amazon S3 API. Es ideal para gestionar grandes cantidades de datos no estructurados como archivos, imágenes, videos, backups y datasets.

¿Cómo funciona MinIO?
- Modelo de almacenamiento de objetos: MinIO organiza los datos en forma de objetos, que consisten en:
- Datos: El archivo o contenido real (texto, imágenes, videos, etc.).
- Metadatos: Información descriptiva asociada al objeto (tamaño, tipo de contenido, etiquetas).
- Identificador único: Cada objeto tiene una clave única en el «bucket» (contenedor lógico similar a una carpeta).
- Buckets: Los objetos se almacenan dentro de «buckets», que son análogos a carpetas. Cada bucket tiene un nombre único y puede contener un número ilimitado de objetos.
- Acceso a través de APIs: MinIO usa el estándar S3 API para interactuar con los objetos, permitiendo que herramientas y aplicaciones compatibles con Amazon S3 trabajen con MinIO.
- Escalabilidad: Puedes usar MinIO en una configuración local o en clústeres distribuidos para manejar petabytes de datos.
Tipos de objetos almacenables
MinIO puede almacenar cualquier tipo de archivo digital, entre ellos:
- Imágenes: PNG, JPEG, SVG.
- Videos: MP4, AVI, MKV.
- Archivos de texto: JSON, CSV, TXT.
- Datos científicos: Modelos de machine learning, datasets (como en formato HDF5, Parquet).
- Documentos: PDF, DOCX, Excel.
- Otros formatos binarios o serializados.
Cómo almacenar objetos desde un cliente Python
Para interactuar con MinIO desde Python, puedes usar la librería oficial minio
. Aquí tienes un ejemplo de cómo trabajar con MinIO en una aplicación de machine learning o AI:
Instalación
pip install minio
Conexión al servidor MinIO
from minio import Minio
from minio.error import S3Error
# Configuración del cliente
minio_client = Minio(
"localhost:9000", # URL del servidor
access_key="minioadmin", # Usuario de MinIO
secret_key="minioadmin", # Contraseña
secure=False # Usar HTTPS si está habilitado
)
Crear un bucket
# Verifica si el bucket existe; si no, lo crea
bucket_name = "datasets"
if not minio_client.bucket_exists(bucket_name):
minio_client.make_bucket(bucket_name)
print(f"Bucket '{bucket_name}' creado.")
else:
print(f"Bucket '{bucket_name}' ya existe.")
Subir un archivo (dataset o modelo)
file_path = "model.pkl" # Ruta al archivo
object_name = "models/model.pkl" # Nombre dentro del bucket
minio_client.fput_object(bucket_name, object_name, file_path)
print(f"Archivo '{file_path}' subido como '{object_name}' en el bucket '{bucket_name}'.")
Listar objetos
objects = minio_client.list_objects(bucket_name, prefix="models/")
for obj in objects:
print(obj.object_name)
Descargar un archivo
download_path = "downloaded_model.pkl"
minio_client.fget_object(bucket_name, object_name, download_path)
print(f"Archivo descargado como '{download_path}'.")
Uso en Machine Learning o AI
MinIO es especialmente útil para aplicaciones que requieren almacenar y recuperar modelos y datasets.
Por ejemplo:
- Guardar un modelo de ML: Después de entrenar un modelo, puedes almacenarlo en MinIO y recuperarlo cuando sea necesario.
- Gestionar datasets grandes: Datasets como imágenes para visión por computadora o registros de texto pueden ser subidos como objetos.
- Versionado: Puedes implementar versiones para modelos o datasets organizando objetos en carpetas lógicas.
Ejemplo práctico (almacenar un modelo de ML):
import pickle
from sklearn.ensemble import RandomForestClassifier
# Entrenar un modelo de ejemplo
X = [[0, 0], [1, 1]]
y = [0, 1]
model = RandomForestClassifier()
model.fit(X, y)
# Guardar el modelo en disco
with open("model.pkl", "wb") as f:
pickle.dump(model, f)
# Subirlo a MinIO
minio_client.fput_object(bucket_name, "models/rf_model.pkl", "model.pkl")
print("Modelo de ML subido a MinIO.")
Ventajas de MinIO para ML/AI
- Almacenamiento local o en la nube: Flexibilidad para elegir dónde guardar los datos.
- Alta velocidad: Diseñado para cargas de trabajo intensivas.
- Compatibilidad S3: Fácil integración con herramientas existentes.
- Escalabilidad: Ideal para datasets masivos.
Requisitos del sistema para instalar MinIO
MinIO puede instalarse perfectamente en un VPS, lo que lo convierte en una opción excelente para crear un sistema de almacenamiento ágil, privado y compatible con S3. Es ideal para quienes buscan una solución auto-gestionada con control total sobre sus datos.
Requisitos del sistema para instalar MinIO
Hardware
- CPU: Procesador moderno de 64 bits (al menos 2 núcleos recomendados).
- Memoria RAM:
- Mínimo: 1 GB.
- Recomendado: 4 GB o más para un rendimiento óptimo, especialmente si almacenas grandes volúmenes de datos.
- Almacenamiento:
- Recomendado: Almacenamiento SSD para mayor rendimiento.
- Espacio: Depende del volumen de datos que planeas almacenar. MinIO soporta cualquier sistema de archivos montado.
- Red:
- Conexión confiable para manejar peticiones.
- Ancho de banda adecuado si planeas manejar grandes transferencias de datos.
Software
- Sistema operativo:
- Linux (recomendado): CentOS, AlmaLinux, Ubuntu, Debian, etc.
- Windows y macOS: También soportados, aunque no tan comunes para servidores de producción.
- Dependencias mínimas:
- GNU Core Utilities: Instaladas por defecto en la mayoría de las distribuciones Linux.
- 64-bit Kernel y File System: Requerido para manejar grandes volúmenes de datos.
- Certificados SSL (opcional): Para habilitar HTTPS.
Red (puertos requeridos)
- Puerto 9000: Por defecto para la API y la interfaz web (puede cambiarse).
- Puerto 9001 (opcional): Interfaz web para el modo distribuido (usado en configuraciones avanzadas).
Ventajas de instalar MinIO en un VPS
- Control total: Puedes administrar permisos, cifrado y configuraciones sin depender de un proveedor externo.
- Costo efectivo: Comparado con los servicios en la nube, usar un VPS puede ser más económico, especialmente para almacenamiento de mediano tamaño.
- Privacidad: Ideal para datos sensibles, ya que permanecen en tu infraestructura.
- Escalabilidad: MinIO soporta configuraciones distribuidas para manejar grandes volúmenes si el VPS tiene almacenamiento limitado.
Cómo instalar MinIO en un VPS
Paso 1: Descarga e instalación
En Linux, puedes instalar MinIO fácilmente desde su binario oficial.
# Descarga el binario de MinIO
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# Hazlo ejecutable
chmod +x minio
# Mueve el binario a una ubicación en el PATH
sudo mv minio /usr/local/bin
Paso 2: Configuración básica
Crea un directorio donde se almacenarán los datos.
mkdir -p /mnt/data/minio
Ejecuta MinIO en modo standalone (almacenamiento único):
export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin123
Luego, ejecuta el servidor con estas credenciales.
Paso 4: Acceso a la interfaz web
- Abre un navegador y accede a
http://<IP_VPS>:9001
. - Ingresa las credenciales configuradas (usuario y contraseña).
Paso 5: (Opcional) Habilitar HTTPS
Genera un certificado SSL y configura MinIO para usarlo:
# Copia los certificados al directorio esperado
cp cert.pem /home/user/.minio/certs/public.crt
cp key.pem /home/user/.minio/certs/private.key
Usar MinIO desde un cliente remoto
Una vez instalado, puedes usar boto3, la CLI de MinIO, o cualquier otra herramienta compatible con S3 para interactuar con el servidor.
Instalar la CLI de MinIO
# Descarga el binario
wget https://dl.min.io/client/mc/release/linux-amd64/mc
# Hazlo ejecutable
chmod +x mc
# Mueve el binario a una ubicación en el PATH
sudo mv mc /usr/local/bin
Configurar la CLI
Conecta la CLI al servidor MinIO:
mc alias set myminio http://<IP_VPS>:9000 minioadmin minioadmin123
Ahora puedes usar comandos como:
# Crear un bucket
mc mb myminio/bucketname
# Subir un archivo
mc cp localfile.txt myminio/bucketname/
# Listar archivos en el bucket
mc ls myminio/bucketname
Un VPS es una excelente opción para instalar MinIO, ya que proporciona un almacenamiento privado y accesible desde cualquier parte con una conexión a Internet. Con requisitos modestos, puedes manejar almacenamiento de objetos para aplicaciones de AI, ML, backup, o cualquier otro caso de uso.
Características del Dashboard de MinIO
MinIO incluye un dashboard web que permite a los usuarios administrar el almacenamiento y visualizar métricas del sistema de manera intuitiva! Es una de las características más prácticas, ya que combina facilidad de uso con un entorno visual amigable.
- Gestión de Buckets y Objetos:
- Crear, eliminar y explorar buckets.
- Subir y descargar archivos directamente desde la interfaz web.
- Gestionar políticas de acceso para usuarios y grupos.
- Métricas en Tiempo Real:
- Uso de almacenamiento.
- Estadísticas sobre la carga del sistema.
- Latencia de operaciones y tasa de transferencia de datos.
- Interfaz Intuitiva:
- Diseño limpio y funcional.
- Navegación simple para usuarios técnicos y no técnicos.
- Compatibilidad:
- Se puede acceder desde cualquier navegador moderno.
- Perfecto para administradores que necesitan monitorear o gestionar remotamente.
- Soporte para Clústeres Distribuidos:
- Muestra información sobre el estado de los nodos en configuraciones distribuidas.
Cómo Acceder al Dashboard
1. Ejecutar el Servidor MinIO con el Dashboard Activado
El dashboard está habilitado por defecto en el puerto 9001 (puedes configurarlo). Si ya tienes MinIO en ejecución, puedes acceder desde cualquier navegador apuntando a:
http://<IP_del_Servidor>:9001
2. Configurar Credenciales
Debes iniciar sesión con las credenciales definidas para el servidor MinIO:
- Usuario:
MINIO_ROOT_USER
- Contraseña:
MINIO_ROOT_PASSWORD
Ejemplo Práctico de Acceso al Dashboard
- Ejecuta MinIO con soporte para el dashboard:
minio server /path/to/data --console-address ":9001"
- Esto inicia el servidor y habilita el dashboard en el puerto 9001.
- Accede al Dashboard:
- Abre un navegador y ve a
http://<IP_DEL_SERVIDOR>:9001
. - Ingresa tus credenciales de administrador.
- Abre un navegador y ve a
- Explora las Funciones:
- Administra buckets.
- Subir y descargar archivos.
- Consulta métricas y estadísticas.
Ventajas del Dashboard
El dashboard de MinIO es ideal para administradores que buscan una herramienta visual para gestionar almacenamiento. Además, su compatibilidad con S3 significa que puede complementarse con otras herramientas (como la CLI o SDKs) para flujos de trabajo más avanzados.
Para opciones mas avanzadas recomendamos leer la Integración con Prometheus, para implementar con Java con The MinIO Java SDK, y AI Storage is Object Storage.
También recomendamos la lectura del artículo Enhance Large Language Models Leveraging RAG and MinIO.