bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación de MinIO Object Storage

calendar_month Jun 03, 2026 schedule 20 min de lectura visibility 40 vistas
Установка MinIO Object Storage на VPS: S3-совместимое хранилище, SSL, бэкапы
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación de MinIO Object Storage en un VPS: Almacenamiento compatible con S3, SSL, copias de seguridad

TL;DR

En esta guía detallada, configuraremos paso a paso MinIO, un almacenamiento de objetos de alto rendimiento y compatible con S3, en su servidor virtual o dedicado. Aprenderá cómo instalar MinIO, asegurar su funcionamiento con SSL/TLS a través de Caddy, configurarlo para que se inicie automáticamente como un servicio del sistema e implementar una estrategia eficaz de copia de seguridad para proteger sus datos. Al final de la guía, tendrá un almacenamiento de objetos completamente funcional, listo para aplicaciones, copias de seguridad y otras tareas que requieran un almacenamiento escalable y fiable.

  • Implementará MinIO como un almacenamiento de objetos compatible con S3 en Ubuntu 24.04 LTS.
  • Configurará la obtención y renovación automática de certificados SSL con Caddy para un acceso seguro.
  • Asegurará que MinIO se ejecute como un servicio del sistema con inicio automático después de un reinicio.
  • Implementará medidas de seguridad básicas: firewall, protección contra ataques de fuerza bruta y uso de claves SSH.
  • Desarrollará una estrategia sencilla de copia de seguridad para los datos de MinIO.

¿Qué configuramos y por qué?

Схема: Что мы настраиваем и зачем
Diagrama: ¿Qué configuramos y por qué?

Configuraremos MinIO, un servidor de almacenamiento de objetos distribuido y de alto rendimiento, escrito en Go. Está diseñado para proporcionar una API compatible con S3, lo que lo convierte en un reemplazo o complemento ideal para servicios en la nube como Amazon S3, DigitalOcean Spaces o Google Cloud Storage. MinIO permite implementar su propio almacenamiento de objetos en cualquier hardware, desde un solo servidor hasta un clúster de decenas de nodos, garantizando alta disponibilidad y escalabilidad.

¿Qué obtendrá el lector al final? Tendrá control total sobre sus datos, independencia de proveedores externos y la capacidad de utilizar la familiar API de S3 para sus aplicaciones. Esto es especialmente valioso para los desarrolladores que necesitan almacenar grandes volúmenes de datos no estructurados (imágenes, videos, documentos, registros, copias de seguridad) e integrarlos con sus servicios, ya sean aplicaciones web, microservicios o plataformas analíticas. MinIO es excelente para crear una nube privada para el almacenamiento de datos, alojar sitios estáticos, almacenar archivos multimedia para CDN o incluso como backend para pipelines de CI/CD.

¿Qué alternativas existen y por qué autoalojado en un VPS? En el mercado existen numerosas soluciones de almacenamiento de objetos en la nube, como Amazon S3, Google Cloud Storage, Azure Blob Storage, DigitalOcean Spaces, Backblaze B2. Estos servicios ofrecen alta fiabilidad, escalabilidad y a menudo tienen un bajo coste de entrada. Sin embargo, también tienen sus desventajas: dependencia de un único proveedor, posibles problemas de privacidad de datos (especialmente para información sensible), costes impredecibles con grandes volúmenes de tráfico y almacenamiento, y la imposibilidad de tener un control total sobre la infraestructura.

La implementación de MinIO en su propio VPS o servidor dedicado le proporciona:

  • Control total: Usted gestiona los datos, la seguridad y la configuración.
  • Costes predecibles: Paga un precio fijo por el servidor, independientemente del volumen de datos almacenados o del tráfico (dentro de los límites del servidor).
  • Privacidad de los datos: Sus datos permanecen en su servidor, bajo su control.
  • Rendimiento: Posibilidad de optimizar MinIO para sus tareas específicas y utilizar los recursos del servidor de la manera más eficiente posible.
  • Flexibilidad: Posibilidad de integración con servicios locales sin demoras ni costes adicionales por tráfico saliente.
Para muchas empresas y desarrolladores individuales, especialmente aquellos que trabajan con datos sensibles o buscan optimizar los costes a largo plazo, MinIO autoalojado es la solución óptima.

¿Qué configuración de VPS se necesita para esta tarea?

Схема: Какой VPS-конфиг нужен под эту задачу
Diagrama: ¿Qué configuración de VPS se necesita para esta tarea?

La elección de una configuración de VPS adecuada para MinIO depende de la carga prevista, el volumen de datos almacenados y los requisitos de rendimiento. MinIO utiliza eficazmente los recursos disponibles, pero el almacenamiento de objetos, especialmente con un uso intensivo, puede ser exigente en ciertos parámetros.

Requisitos mínimos:

  • Procesador (CPU): 1-2 núcleos. MinIO no es muy intensivo en CPU para operaciones básicas, pero las solicitudes multiproceso se benefician de más núcleos. Para cargas pequeñas, 1 núcleo es suficiente; para un uso más activo, 2 núcleos.
  • Memoria RAM: 2 GB. MinIO utiliza RAM para el almacenamiento en caché de metadatos y la búferización de datos. 2 GB es el mínimo cómodo para un funcionamiento estable. Si se planean muchos objetos pequeños o una alta carga concurrente, 4 GB serán preferibles.
  • Disco: El componente más crítico.
    • Tipo: Para el almacenamiento de objetos, el rendimiento del disco es extremadamente importante. NVMe SSD o SATA SSD de alto rendimiento son obligatorios para una buena velocidad de lectura/escritura. Los HDD solo son adecuados para almacenamiento de archivo con baja frecuencia de acceso.
    • Volumen: Mínimo 50 GB para el sistema y los datos iniciales. El volumen real depende de sus necesidades. Asegúrese de tener suficiente espacio para crecer.
    • Tolerancia a fallos: Si utiliza un solo disco, considere las copias de seguridad regulares. Para configuraciones multidisco, MinIO admite la codificación de borrado (erasure coding), pero en un solo VPS esto generalmente no es relevante, a menos que utilice almacenamiento en bloque proporcionado por el proveedor.
  • Red: 1 Gbit/s. Un buen ancho de banda de red es importante, ya que MinIO transferirá datos activamente. Para la mayoría de los VPS, 1 Gbit/s es el estándar. Asegúrese de que su proveedor no tenga restricciones ocultas o costes excesivos por el tráfico saliente.

Plan de VPS específico para la tarea:

Para ejecutar MinIO para un equipo de desarrolladores, un pequeño proyecto SaaS o copias de seguridad personales, se recomienda la siguiente configuración:

  • CPU: 2 núcleos
  • RAM: 4 GB
  • Disco: 200-500 GB NVMe SSD (o más, según las necesidades)
  • Red: 1 Gbit/s, límite de tráfico ilimitado o generoso.

Puede adquirir un VPS con las características indicadas o un plan similar de otro proveedor que ofrezca NVMe SSD y suficiente memoria.

Cuándo se necesita un dedicado, no un VPS:

Un servidor dedicado se vuelve necesario cuando:

  • Se requiere un rendimiento de E/S extremo: Para volúmenes de datos muy grandes, alta frecuencia de acceso o cargas de trabajo específicas donde el rendimiento del subsistema de disco de un VPS puede convertirse en un cuello de botella debido al uso compartido de recursos.
  • Se necesitan grandes volúmenes de almacenamiento: Si necesita varios terabytes o petabytes de datos, un servidor dedicado con varios discos (por ejemplo, en un array RAID) será una solución más económica y de mayor rendimiento.
  • Alta disponibilidad y tolerancia a fallos: Para implementaciones de clúster de MinIO con codificación de borrado (erasure coding), que requieren varios nodos físicos para distribuir datos y garantizar la tolerancia a fallos a nivel de disco y servidor.
  • Requisitos específicos de seguridad o cumplimiento: Algunas normativas pueden exigir el aislamiento físico del hardware.

Ubicación: en qué influye

La elección de la ubicación del servidor MinIO es importante por varias razones:

  • Latencia: Cuanto más cerca esté el servidor de su público objetivo o de los servidores de aplicaciones que utilizarán MinIO, menor será la latencia al acceder a los datos. Esto es crítico para aplicaciones interactivas.
  • Legislación: La ubicación del servidor puede afectar la legislación aplicable sobre protección de datos (por ejemplo, GDPR en Europa).
  • Coste del tráfico: Algunos proveedores pueden tener diferentes tarifas para el tráfico saliente según la región.

Elija la ubicación que esté geográficamente más cerca de los principales consumidores de datos de MinIO.

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Antes de instalar MinIO, es necesario realizar una configuración básica del sistema operativo. Se asume que está utilizando una instalación limpia de Ubuntu Server 24.04 LTS.

1. Conexión por SSH y actualización del sistema

Primero, conéctese a su VPS por SSH, utilizando las credenciales proporcionadas por el proveedor. Normalmente, es el usuario root o un usuario estándar con permisos sudo.


ssh user@your_vps_ip_address

Luego, actualice la lista de paquetes y los paquetes instalados a las últimas versiones:


sudo apt update && sudo apt upgrade -y

Esto asegurará que tenga todos los parches de seguridad actuales y las últimas versiones de las utilidades del sistema.

2. Creación de un nuevo usuario con permisos sudo (si no usa root)

Trabajar como usuario root no se recomienda para tareas diarias. Cree un nuevo usuario y concédale permisos sudo.


sudo adduser minioadmin
sudo usermod -aG sudo minioadmin

Ahora puede cerrar la sesión actual e iniciar sesión con el nuevo usuario:


exit
ssh minioadmin@your_vps_ip_address

3. Configuración de claves SSH para un acceso seguro

El uso de claves SSH es mucho más seguro que las contraseñas. Si aún no ha generado claves, hágalo en su máquina local:


ssh-keygen -t rsa -b 4096

Luego, copie la clave pública a su VPS (reemplace minioadmin y your_vps_ip_address):


ssh-copy-id minioadmin@your_vps_ip_address

Después de copiar la clave con éxito, se recomienda deshabilitar la autenticación por contraseña para root y su nuevo usuario para aumentar la seguridad. Edite el archivo /etc/ssh/sshd_config:


sudo nano /etc/ssh/sshd_config

Encuentre y modifique las siguientes líneas:


# Deshabilitar el inicio de sesión para root con contraseña
PermitRootLogin prohibit-password
# Deshabilitar la autenticación por contraseña para todos
PasswordAuthentication no

Guarde los cambios (Ctrl+O, Enter, Ctrl+X) y reinicie el servicio SSH:


sudo systemctl restart sshd

Importante: ¡Asegúrese de poder iniciar sesión por SSH con la clave antes de deshabilitar la autenticación por contraseña! De lo contrario, perderá el acceso al servidor.

4. Configuración del firewall (UFW)

El firewall es necesario para restringir el acceso a su servidor solo a los puertos necesarios. Ubuntu utiliza UFW (Uncomplicated Firewall).


sudo apt install ufw -y # Instalamos UFW, si no está presente
sudo ufw allow OpenSSH # Permitimos SSH (puerto 22)
sudo ufw allow 80/tcp # Permitimos HTTP (para Caddy)
sudo ufw allow 443/tcp # Permitimos HTTPS (para Caddy)
sudo ufw enable # Habilitamos el firewall
sudo ufw status # Verificamos el estado

En esta etapa, MinIO aún no está instalado, por lo que su puerto (por defecto 9000) no se abre todavía.

5. Instalación de Fail2ban

Fail2ban ayuda a proteger el servidor contra ataques de fuerza bruta bloqueando las direcciones IP que realizan demasiados intentos de inicio de sesión fallidos.


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Fail2ban está configurado por defecto para proteger SSH. Puede verificar su estado:


sudo fail2ban-client status
sudo fail2ban-client status sshd

Ahora su servidor está listo para la instalación de MinIO y el software relacionado.

Instalación de software — paso a paso

Diagrama: Instalación de software — paso a paso
Diagrama: Instalación de software — paso a paso

En esta etapa, instalaremos MinIO y Caddy, que se utilizará para proporcionar acceso HTTPS a MinIO.

1. Instalación del servidor MinIO

Instalaremos MinIO descargando el binario oficial y configurándolo como un servicio del sistema. Para mantenerlo actualizado en 2026, utilizaremos las últimas versiones estables.

1.1. Creación de usuario y grupos para MinIO

Para mejorar la seguridad, MinIO se ejecutará bajo su propio usuario no privilegiado.


sudo groupadd -r minio-user # Creamos un grupo para MinIO
sudo useradd -r -s /sbin/nologin -g minio-user minio-user # Creamos un usuario sin shell

1.2. Creación de directorios para MinIO

Crearemos un directorio para almacenar el binario de MinIO, los datos y la configuración.


sudo mkdir -p /usr/local/bin
sudo mkdir -p /etc/minio
sudo mkdir -p /var/lib/minio

1.3. Descarga del binario de MinIO

Descargaremos la última versión estable de MinIO. Las versiones actuales siempre se pueden encontrar en el sitio web oficial de MinIO o en GitHub. Para el año 2026, asumiremos que la versión actual de MinIO tiene el formato RELEASE.2026-XX-XXTXX-XX-XXZ. Usaremos mc (MinIO Client) para administrar MinIO.


# Descarga del servidor MinIO
wget -O /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio # Descargamos el binario de MinIO
# Descarga del cliente MinIO (mc)
wget -O /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc # Descargamos el binario del cliente MinIO

1.4. Concesión de permisos de ejecución

Haremos que los archivos descargados sean ejecutables.


sudo chmod +x /usr/local/bin/minio # Hacemos MinIO ejecutable
sudo chmod +x /usr/local/bin/mc # Hacemos MinIO Client ejecutable

1.5. Configuración de permisos de acceso para el directorio de datos

Estableceremos el propietario del directorio de datos de MinIO al usuario creado minio-user.


sudo chown minio-user:minio-user /var/lib/minio # Cambiamos el propietario del directorio de datos

2. Instalación del servidor web Caddy

Caddy se utilizará como proxy inverso para MinIO y gestionará automáticamente los certificados SSL de Let's Encrypt. Esto simplifica significativamente la configuración de HTTPS.

2.1. Adición del repositorio de Caddy

Para obtener la última versión estable de Caddy, añadiremos su repositorio oficial.


sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https # Instalamos los paquetes necesarios
curl -1s https://dl.cloudsmith.io/public/caddy/stable/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg # Añadimos la clave GPG
curl -1s https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt | sudo tee /etc/apt/sources.list.d/caddy-stable.list # Añadimos el repositorio

2.2. Instalación de Caddy

Actualizaremos la lista de paquetes e instalaremos Caddy.


sudo apt update # Actualizamos la lista de paquetes
sudo apt install caddy -y # Instalamos Caddy

Caddy se instalará como un servicio del sistema y se iniciará automáticamente. Puede verificar su estado:


sudo systemctl status caddy

3. Apertura del puerto de MinIO en el firewall (UFW)

Ahora que MinIO estará en funcionamiento, necesitamos abrir el puerto en el que escuchará (por defecto 9000). Caddy actuará como proxy para las solicitudes a este puerto.


sudo ufw allow 9000/tcp # Permitimos el acceso al puerto de MinIO
sudo ufw status # Verificamos el estado de UFW

En esta etapa, todo el software necesario está instalado. Pasamos a la configuración.

Configuración

Esquema: Configuración
Esquema: Configuración

Ahora que MinIO y Caddy están instalados, es necesario configurarlos para que trabajen juntos y proporcionen acceso seguro a través de HTTPS.

1. Configuración de las variables de entorno de MinIO

MinIO utiliza variables de entorno para su configuración, incluyendo las claves de acceso. Crearemos el archivo /etc/minio/minio.conf para almacenar estas variables.

Importante: Reemplace YOUR_MINIO_ACCESS_KEY y YOUR_MINIO_SECRET_KEY por valores seguros, largos y complejos. ¡Estas claves se utilizarán para acceder a su almacenamiento!


sudo nano /etc/minio/minio.conf

Agregue el siguiente contenido:


# MinIO Server Configuration
MINIO_ROOT_USER="YOUR_MINIO_ACCESS_KEY"
MINIO_ROOT_PASSWORD="YOUR_MINIO_SECRET_KEY"
MINIO_VOLUMES="/var/lib/minio" # Directorio para almacenar los datos de MinIO
MINIO_SERVER_URL="https://minio.your-domain.com" # URL a través de la cual MinIO será accesible mediante Caddy

Guarde el archivo (Ctrl+O, Enter, Ctrl+X).

Asegúrese de que este archivo sea de solo lectura para el usuario minio-user:


sudo chown root:minio-user /etc/minio/minio.conf
sudo chmod 640 /etc/minio/minio.conf

2. Creación del servicio Systemd para MinIO

Crearemos un servicio del sistema para que MinIO se inicie automáticamente al arrancar el servidor y sea gestionado a través de systemctl.


sudo nano /etc/systemd/system/minio.service

Agregue el siguiente contenido:


[Unit]
Description=MinIO S3 Compatible Object Storage
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/minio server $MINIO_VOLUMES --console-address ":9001"
EnvironmentFile=/etc/minio/minio.conf # Cargamos las variables de entorno de nuestro archivo
User=minio-user
Group=minio-user
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

Guarde el archivo (Ctrl+O, Enter, Ctrl+X).

Ahora, recargue systemd, habilite e inicie el servicio MinIO:


sudo systemctl daemon-reload # Recargamos systemd
sudo systemctl enable minio # Habilitamos el inicio automático de MinIO al arrancar el sistema
sudo systemctl start minio # Iniciamos MinIO
sudo systemctl status minio # Verificamos el estado de MinIO

MinIO debería estar en ejecución y escuchando en el puerto 9000 (API) y 9001 (consola). Asegúrese de que no haya errores en la salida de systemctl status minio.

3. Configuración de Caddyfile para proxy inverso y SSL

Caddy actuará como proxy para las solicitudes de su nombre de dominio hacia el MinIO local, obteniendo y renovando automáticamente los certificados SSL.

Importante: Asegúrese de que su dominio (por ejemplo, minio.your-domain.com) apunte a la dirección IP de su VPS en el DNS mediante un registro A.


sudo nano /etc/caddy/Caddyfile

Reemplace el contenido existente por lo siguiente (sustituya minio.your-domain.com por su dominio real):


minio.your-domain.com {
    reverse_proxy localhost:9000 # Proxy para la API de MinIO
    # Para la consola de MinIO (opcional, si se necesita la consola web a través del mismo dominio)
    # reverse_proxy /minio-console/ localhost:9001
    # Si desea que toda la consola esté disponible en un subdominio separado,
    # o simplemente a través de otro puerto, es mejor configurarlo por separado.
    # Para simplificar, solo hacemos proxy de la API de MinIO en el puerto 9000.
    # La consola de MinIO está disponible por defecto en el puerto 9001.
    # Si desea hacer proxy de ella a través del mismo dominio, entonces
    # minio.your-domain.com {
    #     handle /minio-console/ {
    #         reverse_proxy localhost:9001
    #     }
    #     handle / {
    #         reverse_proxy localhost:9000
    #     }
    # }
    # Para mayor simplicidad y seguridad, la consola puede dejarse accesible solo localmente o mediante un túnel SSH
    # o en un dominio separado. Aquí solo hacemos proxy de la API.

    # Agregamos los encabezados necesarios para MinIO
    header Access-Control-Allow-Origin ""
    header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
    header Access-Control-Allow-Headers "Accept, Authorization, Content-Type, Content-Length, X-Amz-Date, X-Amz-User-Agent, X-Amz-Content-Sha256, X-Amz-SignedHeaders, X-Amz-Signature, X-Minio-Deployment-ID, X-Minio-Identity-Tag, X-Minio-Release"
    header X-Minio-Deployment-ID "MINIO_DEPLOYMENT_ID"
    header X-Minio-Identity-Tag "MINIO_IDENTITY_TAG"
    header X-Minio-Release "MINIO_RELEASE"
}

Guarde el archivo (Ctrl+O, Enter, Ctrl+X).

Reinicie Caddy para aplicar los cambios:


sudo systemctl reload caddy # Recargamos Caddy
sudo systemctl status caddy # Verificamos el estado de Caddy

Caddy debería iniciarse correctamente, obtener un certificado SSL para su dominio y comenzar a actuar como proxy para las solicitudes a MinIO.

4. Verificación de la funcionalidad

4.1. Verificación de la disponibilidad de MinIO a través de Caddy (HTTPS)

Puede usar curl para verificar la disponibilidad de su API de MinIO a través de HTTPS.


curl -I https://minio.your-domain.com/minio/health/live

Debería recibir un estado HTTP 200 OK, lo que significa que MinIO está funcionando y es accesible a través de Caddy con SSL.


HTTP/2 200
server: Caddy
content-length: 0
date: Mon, 01 Jan 2026 12:00:00 GMT

4.2. Uso del cliente MinIO (mc)

En su máquina local o en el VPS, puede usar mc para interactuar con MinIO.

Primero, agregue su servidor MinIO a la lista de mc:


mc alias set myminio https://minio.your-domain.com YOUR_MINIO_ACCESS_KEY YOUR_MINIO_SECRET_KEY --api S3v4

Reemplace myminio por el nombre deseado, https://minio.your-domain.com por su dominio, y YOUR_MINIO_ACCESS_KEY y YOUR_MINIO_SECRET_KEY por los que especificó en minio.conf.

Ahora puede crear buckets y subir archivos:


mc mb myminio/myfirstbucket # Creamos un nuevo bucket
echo "Hello MinIO" > testfile.txt
mc cp testfile.txt myminio/myfirstbucket/ # Subimos un archivo
mc ls myminio/myfirstbucket # Verificamos el contenido del bucket

Si todos los comandos se ejecutan con éxito, su almacenamiento MinIO está completamente configurado y funcionando.

4.3. Acceso a la Consola de MinIO (opcional)

Por defecto, la Consola de MinIO está disponible en el puerto 9001. Para acceder a ella desde el exterior, puede:

  • Configurar un subdominio separado para la consola (por ejemplo, console.your-domain.com) en Caddy, haciendo proxy hacia localhost:9001.
  • Usar tunelización SSH para acceder de forma segura al puerto 9001 desde su máquina local:
    
    ssh -L 9001:localhost:9001 minioadmin@your_vps_ip_address
                

    Luego, abra http://localhost:9001 en su navegador en su máquina local.

Copias de seguridad y mantenimiento

Esquema: Copias de seguridad y mantenimiento
Esquema: Copias de seguridad y mantenimiento

La copia de seguridad es un aspecto críticamente importante para cualquier almacenamiento de datos. MinIO, al ser un almacenamiento de objetos, tiene sus propias particularidades en cuanto a las copias de seguridad. El mantenimiento incluye actualizaciones regulares y monitoreo.

1. Qué respaldar

En el contexto de MinIO, necesita respaldar:

  • Datos de MinIO: Los objetos mismos, almacenados en los buckets. Este es el volumen principal de datos.
  • Archivos de configuración de MinIO: El archivo /etc/minio/minio.conf, que contiene sus claves de acceso y otras configuraciones.
  • Archivos de configuración de Caddy: El archivo /etc/caddy/Caddyfile y, posiblemente, el directorio /var/lib/caddy/.local/share/caddy/, donde Caddy almacena los certificados SSL. Aunque los certificados se pueden volver a emitir, una copia de seguridad acelerará la recuperación.

2. Script simple de copia de seguridad automática de datos de MinIO

La forma más efectiva de hacer una copia de seguridad de los datos de MinIO es usar el comando mc mirror para sincronizar los datos con otro almacenamiento compatible con S3 (por ejemplo, otro servidor MinIO, AWS S3, DigitalOcean Spaces o Backblaze B2). Configuraremos un script para replicar todos los buckets de nuestro MinIO a un servicio externo compatible con S3.

Supongamos que tiene un segundo servicio compatible con S3 (por ejemplo, backup-s3.example.com) con acceso BACKUP_ACCESS_KEY y BACKUP_SECRET_KEY.

2.1. Añadir S3 externo a mc alias

Primero, añada su servicio S3 externo a mc alias en su VPS.


mc alias set external-s3 https://backup-s3.example.com BACKUP_ACCESS_KEY BACKUP_SECRET_KEY --api S3v4

2.2. Creación del script de copia de seguridad

Crearemos el script /usr/local/bin/minio_backup.sh:


sudo nano /usr/local/bin/minio_backup.sh

Añada el siguiente contenido:


#!/bin/bash

# Directorio para archivos de registro temporales
BACKUP_LOG_DIR="/var/log/minio-backups"
mkdir -p "$BACKUP_LOG_DIR"

# Archivo de registro para la ejecución actual
LOG_FILE="$BACKUP_LOG_DIR/minio_backup_$(date +\%Y\%m\%d_\%H\%M\%S).log"

echo "--- Copia de seguridad de MinIO iniciada: $(date) ---" | tee -a "$LOG_FILE"

# Ruta al cliente de MinIO
MC_PATH="/usr/local/bin/mc"

# Nombre de su alias local de MinIO
LOCAL_MINIO_ALIAS="myminio"
# Nombre de su alias S3 externo para copias de seguridad
REMOTE_S3_ALIAS="external-s3"

# Obtenemos la lista de todos los buckets en el MinIO local
BUCKETS=$($MC_PATH ls $LOCAL_MINIO_ALIAS --json | jq -r '.[].key')

if [ -z "$BUCKETS" ]; then
    echo "No se encontraron buckets en $LOCAL_MINIO_ALIAS. Saliendo." | tee -a "$LOG_FILE"
    exit 0
fi

for BUCKET in $BUCKETS; do
    echo "Realizando copia de seguridad del bucket: $BUCKET" | tee -a "$LOG_FILE"
    # Creamos el bucket en el almacenamiento remoto si no existe
    $MC_PATH mb $REMOTE_S3_ALIAS/$BUCKET 2>/dev/null
    # Sincronizamos el contenido del bucket
    # --overwrite sobrescribe archivos si son diferentes
    # --recursive para copia recursiva
    # --force copia forzada
    # --remove elimina archivos en el almacenamiento de destino que no están en el origen (¡úselo con precaución!)
    $MC_PATH mirror --overwrite --force --recursive $LOCAL_MINIO_ALIAS/$BUCKET $REMOTE_S3_ALIAS/$BUCKET 2>&1 | tee -a "$LOG_FILE"
    if [ ${PIPESTATUS[0]} -ne 0 ]; then
        echo "Error al hacer copia de seguridad de $BUCKET" | tee -a "$LOG_FILE"
    else
        echo "Copia de seguridad de $BUCKET realizada con éxito" | tee -a "$LOG_FILE"
    fi
done

echo "--- Copia de seguridad de MinIO finalizada: $(date) ---" | tee -a "$LOG_FILE"

# Limpieza de registros antiguos (por ejemplo, más de 30 días)
find "$BACKUP_LOG_DIR" -type f -name "minio_backup_*.log" -mtime +30 -delete
echo "Registros antiguos limpiados." | tee -a "$LOG_FILE"

Guarde el archivo (Ctrl+O, Enter, Ctrl+X).

Haga el script ejecutable:


sudo chmod +x /usr/local/bin/minio_backup.sh

2.3. Configuración de Cron para ejecución automática

Añadiremos el script al cron para que se ejecute diariamente. Por ejemplo, a las 3 de la mañana.


sudo crontab -e

Seleccione un editor (si se le solicita) y añada la siguiente línea al final del archivo:


0 3 * * * /usr/local/bin/minio_backup.sh > /dev/null 2>&1

Esta línea ejecuta el script todos los días a las 03:00. La salida del script se redirige a /dev/null, pero los registros se guardan en /var/log/minio-backups/.

2.4. Copia de seguridad de archivos de configuración

Los archivos de configuración se pueden respaldar por separado, por ejemplo, usando rsync a otro directorio o a un servidor externo.


# Ejemplo de copia de seguridad de configuraciones en un archivo local
sudo tar -czvf /root/minio_configs_$(date +\%Y\%m\%d).tar.gz /etc/minio/minio.conf /etc/caddy/Caddyfile
# Luego, este archivo se puede transferir a un almacenamiento remoto

3. Mantenimiento y actualizaciones

3.1. Actualización de MinIO

MinIO se desarrolla activamente, y las actualizaciones regulares son importantes para obtener nuevas funciones, mejoras de rendimiento y correcciones de seguridad. El proceso de actualización de MinIO es bastante simple:


sudo systemctl stop minio # Detenemos el servicio de MinIO
wget -O /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio # Descargamos el nuevo binario
sudo chmod +x /usr/local/bin/minio # Concedemos permisos de ejecución
sudo systemctl start minio # Iniciamos MinIO
sudo systemctl status minio # Verificamos el estado

Se recomienda realizar las actualizaciones en una "ventana de mantenimiento" (maintenance window) para minimizar posibles tiempos de inactividad, aunque MinIO a menudo soporta actualizaciones continuas (rolling updates) para configuraciones de clúster.

3.2. Actualización de Caddy

Caddy, al estar instalado desde el repositorio, se actualiza de forma estándar:


sudo apt update
sudo apt upgrade caddy -y
sudo systemctl reload caddy # Recargamos Caddy después de la actualización

3.3. Actualización del sistema operativo

Actualice regularmente todo el sistema para obtener parches de seguridad y estabilidad.


sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y # Eliminación de paquetes innecesarios
sudo reboot # Reinicio, si hubo actualizaciones del kernel o componentes críticos

Programe los reinicios durante períodos de baja carga.

Solución de problemas + Preguntas frecuentes

Aquí se recopilan problemas típicos y preguntas frecuentes que pueden surgir al trabajar con MinIO en un VPS.

MinIO no se inicia o arroja un error "Permission denied"

Qué verificar: Asegúrese de que el usuario minio-user tenga los permisos de acceso correctos al directorio de datos /var/lib/minio y al binario /usr/local/bin/minio. También verifique el archivo /etc/minio/minio.conf en busca de errores tipográficos y permisos correctos.

Cómo solucionar:


sudo chown minio-user:minio-user /var/lib/minio
sudo chmod +x /usr/local/bin/minio
sudo chown root:minio-user /etc/minio/minio.conf
sudo chmod 640 /etc/minio/minio.conf
sudo systemctl daemon-reload
sudo systemctl restart minio
sudo systemctl status minio
        
Verifique los registros de MinIO: journalctl -u minio.service -f.

Caddy no obtiene un certificado SSL o no proxy las solicitudes

Qué verificar:

  1. Asegúrese de que su dominio (por ejemplo, minio.your-domain.com) apunte correctamente a la dirección IP de su VPS en el DNS (registro A).
  2. Verifique que los puertos 80 y 443 estén abiertos en el firewall (UFW).
  3. Verifique la sintaxis de /etc/caddy/Caddyfile.
  4. Asegúrese de que MinIO esté en ejecución y escuchando en el puerto 9000.

Cómo solucionar:


sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo systemctl restart caddy
sudo systemctl status caddy
        
Consulte los registros de Caddy: journalctl -u caddy.service -f.

No puedo conectarme a MinIO a través de mc alias

Qué verificar:

  1. La exactitud de la URL, Access Key y Secret Key utilizadas al crear mc alias set.
  2. La disponibilidad de su dominio MinIO desde su red local (ping, curl).
  3. La corrección de la configuración del firewall en el VPS (puertos 80, 443 para Caddy).

Cómo solucionar: Vuelva a crear mc alias, verificando cuidadosamente todos los parámetros. Asegúrese de que no haya errores tipográficos en las claves de acceso y que la URL corresponda a la dirección HTTPS a través de la cual MinIO es accesible. Si utiliza la consola de MinIO, intente iniciar sesión a través de ella para verificar la exactitud de las claves.

¿Qué configuración mínima de VPS es adecuada?

Para un uso mínimo de MinIO, por ejemplo, para copias de seguridad personales o pequeños proyectos de prueba, necesitará un VPS con 1 núcleo de CPU, 2 GB de RAM y al menos 50 GB de NVMe SSD. Sin embargo, para cualquier carga de trabajo más seria, como el almacenamiento de archivos multimedia para una aplicación web o el uso de MinIO como backend para CI/CD, se recomiendan 2 núcleos de CPU, 4 GB de RAM y 200+ GB de NVMe SSD. El rendimiento del disco (IOPS) es un factor clave para el almacenamiento de objetos.

¿Qué elegir: VPS o dedicado para esta tarea?

La elección entre un VPS y un servidor dedicado depende de la escala y los requisitos de rendimiento. Un VPS es ideal para la mayoría de las tareas medianas: desarrollo, pequeños proyectos SaaS, copias de seguridad personales y de equipo, alojamiento de sitios estáticos. Es económico y bastante flexible. Un servidor dedicado se vuelve necesario cuando se requiere el máximo rendimiento del subsistema de disco (especialmente para grandes volúmenes de datos), un alto ancho de banda de red sin restricciones, o cuando MinIO funcionará en una configuración de clúster con erasure coding para garantizar alta disponibilidad y tolerancia a fallos a nivel de múltiples discos físicos y máquinas. Para volúmenes de datos muy grandes (terabytes y más) o aplicaciones empresariales críticamente importantes, un servidor dedicado proporciona más control y recursos garantizados.

¿Cómo actualizar MinIO sin tiempo de inactividad?

Para un solo servidor MinIO, "sin tiempo de inactividad" en el sentido estricto de la palabra generalmente no es posible, ya que el servicio debe detenerse para reemplazar el binario. Sin embargo, si utiliza MinIO en modo distribuido (varios nodos), puede realizar una actualización continua (rolling update), actualizando los nodos uno por uno mientras otros nodos continúan sirviendo las solicitudes. Para un servidor VPS individual, planifique una ventana de mantenimiento corta (unos minutos) para detener MinIO, actualizar el binario y volver a iniciarlo. Caddy almacenará en caché las solicitudes por un corto tiempo, minimizando el tiempo de inactividad visible para los clientes.

Conclusiones y próximos pasos

Esquema: Conclusiones y próximos pasos
Esquema: Conclusiones y próximos pasos

En esta guía, hemos desplegado con éxito MinIO Object Storage en su VPS, asegurado su funcionamiento con HTTPS a través de Caddy y configurado un sistema básico de copia de seguridad. Ahora tiene un almacenamiento compatible con S3 potente y flexible, completamente bajo su control, listo para integrarse con sus aplicaciones y servicios.

¿Hacia dónde avanzar?

  1. Monitoreo: Configure el monitoreo de MinIO con Prometheus y Grafana para rastrear el rendimiento, el uso del disco y otras métricas. MinIO proporciona puntos finales (endpoints) integrados para Prometheus.
  2. Escalado: Si sus necesidades de almacenamiento crecen, considere la posibilidad de pasar a un clúster de MinIO con varios nodos para mejorar el rendimiento y la tolerancia a fallos.
  3. Integración: Integre MinIO con sus aplicaciones utilizando los SDK oficiales de S3 para varios lenguajes de programación, o configúrelo como backend para otras herramientas, como Nextcloud, GitLab o sistemas de copia de seguridad.

¿Te fue útil esta guía?

instalación MinIO Object Storage en VPS: almacenamiento compatible con S3, SSL, copias de
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.