Amazon S3 es cómodo, hasta que llega la factura de la transferencia de datos, porque es la transferencia, y no el almacenamiento en sí, lo que más sorprende. MinIO es un almacenamiento de objetos de código abierto que habla el mismo idioma que S3, es decir, la misma API, por lo que la librería boto3 o aws-sdk, que ya tienes en tu proyecto, funciona sin cambiar una línea de código, salvo la dirección del endpoint. La diferencia es que MinIO lo instalas en tu propio Box, una sola vez, y pagas solo por el Box, sin una factura aparte por cada gigabyte de transferencia. A continuación, te explicamos paso a paso cómo instalar MinIO en Saplo.
Por qué MinIO en lugar de Amazon S3
Amazon S3 tiene dos características que, en la práctica, son las que más afectan a los proyectos en crecimiento:
- factura por la transferencia de datos salientes: el almacenamiento de archivos es barato, pero cada archivo descargado, cada foto mostrada al usuario, se cuenta por separado y, con un mayor tráfico, puede dominar la factura.
- facturación basada en el número de operaciones: listar archivos, escribir, leer, cada una de estas acciones tiene su propia tarifa, por lo que el coste es difícil de predecir de antemano.
MinIO implementa el mismo protocolo S3, por lo que la migración de uno a otro suele ser un cambio de dirección de "endpoint" y de claves de acceso, y no una reescritura del código de la aplicación. Lo instalas en tu propio Box, pagas por el Box independientemente de cuántas veces se descargue el archivo, y los datos permanecen físicamente en tu infraestructura.
Requisitos
Para instalar MinIO en Saplo, necesitas:
- Un Box con Docker en funcionamiento (el motor lo activa automáticamente al instalarlo desde el catálogo, requiere anidamiento en el contenedor, que Saplo tiene por defecto),
- Mínimo 512 MB de RAM libre en el Box y 5 GB de espacio en disco para los datos; la cantidad final dependerá de cuántos archivos planees almacenar,
- Un dominio o subdominio
*.saploapp.plincluido en el precio de cada plan, bajo el cual se ubicará la consola de administración.
MinIO expone dos interfaces diferentes que es importante distinguir de inmediato. La primera es la consola web, que es un panel con un explorador de archivos, creación de cubos (buckets) y gestión de claves de acceso, expuesta bajo un dominio como cualquier otra aplicación del catálogo. La segunda es la propia API S3, es decir, el endpoint al que se conecta el código de la aplicación a través de boto3 o una biblioteca similar. El motor asigna a la aplicación un puerto bajo el dominio público, por lo que la API S3 funciona exclusivamente dentro del Box, en el loopback, y no es visible desde el exterior.
Instalación paso a paso
- En el panel de Saplo, ve a Catálogo de aplicaciones y selecciona MinIO (categoría "Servidor").
- Indica el Box en el que se instalará y el dominio o subdominio bajo el cual estará disponible la consola de administración.
- Confirma la instalación. El motor crea un contenedor Docker con la imagen oficial
minio/minio, prepara un volumen separado para los datos, genera una cuenta de administrador aleatoria y expone la consola bajo el dominio especificado a través de nginx con SSL gratuito. - El motor verifica que el contenedor haya iniciado correctamente antes de considerar la instalación completa, así que si la imagen no arranca, verás un error en lugar de un dominio muerto.
- Una vez finalizado, en el catálogo de aplicaciones del Box encontrarás el archivo
MINIO-SETUP.txtcon el nombre de usuario y la contraseña generada para la consola.
Primera configuración
MinIO, al igual que Directus o Vaultwarden, genera una cuenta de administrador automáticamente durante la instalación en lugar de solicitarla en el asistente.
- Inicia sesión en la consola con los datos del archivo
MINIO-SETUP.txty cambia la contraseña en Identity -> Users antes de hacer cualquier otra cosa. - Crea tu primer bucket en la pestaña Buckets -> Create Bucket, por ejemplo, uno separado para los archivos de los usuarios y otro para las copias de seguridad.
- En Identity -> Service Accounts, genera una clave de acceso (Access Key y Secret Key) para la aplicación que escribirá y leerá archivos. No utilices la cuenta de administrador para esto en el código de la aplicación.
- El endpoint de la API S3 funciona exclusivamente en el loopback de Box y no está expuesto públicamente. Si la aplicación que utiliza MinIO está en el mismo Box, se conecta a través de
http://127.0.0.1en el puerto asignado. El acceso desde fuera de Box, por ejemplo, desde tu propio ordenador u otro servidor, requiere un túnel SSH disponible desde Box L en adelante, o un puerto TCP adicional del catálogo de complementos.
MinIO en Saplo vs. Amazon S3
| Amazon S3 | MinIO en Saplo | |
|---|---|---|
| Precio | almacenamiento más transferencia más operaciones, facturado por separado | incluido en el plan Saplo, sin coste adicional por transferencia |
| Dónde están los datos | infraestructura de Amazon | Tu Box |
| Compatibilidad API | estándar S3 | el mismo protocolo, las mismas bibliotecas (boto3 y otras) |
| Acceso API desde fuera del servidor | endpoint público inmediatamente | requiere un túnel SSH (Box L+) o un complemento de puerto TCP |
| Quién administra | Amazon | Tú, pero sin tener que configurar el servidor manualmente |
Preguntas frecuentes
¿Tengo que cambiar el código de la aplicación para migrar de S3 a MinIO?
Normalmente no. MinIO implementa el mismo protocolo S3, por lo que solo tienes que cambiar la dirección del endpoint, la clave de acceso y el secreto en la configuración de la aplicación, y el resto del código que utiliza boto3 o una biblioteca similar funcionará sin cambios.
¿Por qué la API de S3 no está disponible desde fuera de Box de inmediato? El motor de Saplo expone exactamente un puerto por aplicación bajo el dominio público, y en el caso de MinIO, es la consola web. La API de S3 permanece en el loopback, por lo que las aplicaciones que se ejecutan en el mismo Box se conectan a ella directamente, y el acceso desde fuera de Box requiere un túnel SSH o un complemento de puerto TCP.
¿Puedo tener más de un bucket? Sí, el número de buckets no está limitado por MinIO en sí, el único límite es el espacio en disco de Box.
¿Cómo protejo el acceso a los archivos si la aplicación se conecta desde fuera de Box? Genera una clave de acceso separada para cada aplicación en Identity -> Service Accounts y restringe su política a un bucket específico, en lugar de usar la cuenta de administrador. Para conectarte desde fuera de Box, usa un túnel SSH (Box L y superiores) o compra el complemento de tu propio puerto TCP.
¿Los datos en MinIO se respaldan automáticamente? Depende del plan de Box que hayas adquirido, la copia de seguridad funciona a nivel de todo el Box, al igual que con otras aplicaciones del catálogo, no es una función separada de MinIO.
Si tienes preguntas al configurar MinIO en tu propio Box o al conectarlo a tu propia aplicación, escríbenos, te ayudaremos con la configuración inicial.
- #Backup
- #MinIO
- #Guía
- #Almacenamiento de archivos
- #S3
