Servidor Ubuntu con MinIO + Let's Encrypt + Laravel

Installing and Setting Up MinIO on Ubuntu + Lets Encrypt + Laravel integration

¿Busca una alternativa rentable a Amazon S3? MinIO es una gran opción. En esta guía, lo guiaremos a través de la instalación y configuración básica de MinIO en su servidor Ubuntu, junto con pasos adicionales para integrarlo con Laravel/PHP.

Por supuesto, configurar esto es bajo su propio riesgo. No somos responsables de nada.

Paso 1: configurar el servidor Ubuntu

Antes de comenzar, asegúrese de tener un servidor Ubuntu en funcionamiento.

Paso 2: Instale MinIO

Para instalar MinIO, siga las instrucciones proporcionadas en el documentación oficial de MinIO.

Paso 3: configurar el servicio minIO systemd

Después de la instalación, agregue el archivo systemd minio.service. Si no se agrega automáticamente, puede agregarlo manualmente. Puedes encontrar un archivo de ejemplo aquí.

Abra el archivo minio.service y elimine las siguientes líneas:

Usuario=usuario-minio Grupo=usuario-minio

Sin estas líneas, MinIO funcionará en la raíz como se describe en Este problema de GitHub.

Paso 4: Instale el certificado SSL Let's Encrypt

MinIO admite el cifrado SSL. Para configurar SSL, puede utilizar Let's Encrypt, un proveedor de certificados SSL gratuito y ampliamente confiable.

Siga las instrucciones en https://certbot.eff.org para que Ubuntu instale Let's Encrypt y genere su certificado SSL.

Paso 5: Configure MinIO con Let's Encrypt

Una vez que haya generado el certificado SSL, deberá configurar MinIO para usarlo. Así es cómo:

Copie los archivos del certificado SSL al directorio MinIO:

cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /root/.minio/certs/public.crt cp /etc/letsencrypt/live/yourdomain.com/privkey.pem /root/.minio/certs/private .llave

Configure un crontab para renovar el certificado SSL semanalmente:

0 5 * * 1 cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /root/.minio/certs/public.crt 0 5 * * 5 cp /etc/letsencrypt/live/yourdomain.com/privkey. pem /root/.minio/certs/private.key

Paso 6: cambiar la configuración de MinIO

Modifique el archivo de configuración de MinIO:

nano /etc/default/minio

Actualice las siguientes configuraciones:

MINIO_VOLUMES="/mnt/data" MINIO_OPTS="--dirección :9000 --dirección-consola :9001" MINIO_ROOT_USER="tu_nombre de usuario" MINIO_ROOT_PASSWORD="tu_contraseña" MINIO_SERVER_URL="https://tudominio.com:9000" MINIO_CONFIG_ENV_FILE=/ etc/predeterminado/minio

Paso 7: cambiar el nombre de usuario y la contraseña predeterminados

Cambie el nombre de usuario y la contraseña predeterminados para proteger su instalación de MinIO.

Paso 8: reinicie el servicio MinIO

Reinicie el servicio MinIO para aplicar los cambios:

sudo systemctl reiniciar minio.service

Verifique el estado para asegurarse de que MinIO se esté ejecutando:

sudo systemctl estado minio.servicio

Paso 9: habilite MinIO al iniciar

Para permitir que MinIO se ejecute al inicio, use el siguiente comando:

systemctl habilitar minio

Paso 10: crea un depósito

Cree un depósito en MinIO para almacenar sus archivos. Puede utilizar la interfaz web de MinIO o la herramienta de línea de comandos de MinIO para crear un depósito.

Paso 11: crear una política para el depósito

Cree una política para que el depósito defina los permisos de acceso. A continuación se muestra una política de ejemplo:

{ "Versión": "2012-10-17", "Declaración": [ { "Efecto": "Permitir", "Acción": [ "s3:*" ], "Recurso": [ "arn:aws:s3 :::tu_cubo/*" ] } ] }

Paso 12: cree un usuario y asigne la nueva política

Cree un usuario en MinIO y asígnele la política creada previamente.

Generar una clave de acceso y una clave secreta para el usuario. Necesitará estas claves en los siguientes pasos.

Paso 13: Configurar el soporte de Laravel para MinIO

Si está utilizando Laravel o PHP, puede integrar MinIO con su aplicación usando el liga/flysystem-aws-s3-v3 paquete.

Instale el paquete a través de Composer:

El compositor requiere liga/flysystem-aws-s3-v3 "^3.0"

A continuación, actualice el sistemas de archivos.php archivo de configuración:

'nube' => env('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'driver' => 's3', 'endpoint' => env('MINIO_ENDPOINT', 'https:// sudominio.com:9000'), 'use_path_style_endpoint' => true, 'key' => env('MINIO_KEY', '...'), 'secret' => env('MINIO_SECRET', '...') , 'región' => env('MINIO_REGION', 'JUSTSOMETHINGRANDOM'), 'bucket' => env('MINIO_BUCKET', 'BUCKETNAME'), ],

Paso 14: Pruebe la integración de MinIO en Laravel

Verifique la integración de MinIO usando la consola Tinker de Laravel:

php artesano tinker \Storage::cloud()->put('hola.json', '{"hola": "mundo"}'); \Storage::cloud()->get('hola.json');

Esto debería devolver algo como "verdadero" o algo exitoso. De lo contrario, puede agregar esta opción de depuración de sistemas de archivos a MinIO: 'throw'=> env('APP_DEBUG'), por lo que se convertirá en algo como:

'nube' => env('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'driver' => 's3', 'endpoint' => env('MINIO_ENDPOINT', 'https:// sudominio.com:9000'), 'use_path_style_endpoint' => true, 'key' => env('MINIO_KEY', '...'), 'secret' => env('MINIO_SECRET', '...') , 'región' => env('MINIO_REGION', 'JUSTSOMETHINGRANDOM'), 'bucket' => env('MINIO_BUCKET', 'BUCKETNAME'), 'throw' => env('APP_DEBUG', false) ],

Esto solo depurará/arrojará mensajes de error cuando APP_DEBUG esté activado. Nunca ejecute esto en producción o en entornos sensibles.

Paso 15: Configurar DNS inverso

Configure DNS inverso si es posible.

Paso 16: reiniciar y verificar

Reinicie su servidor y verifique que MinIO y la integración con Laravel sigan funcionando correctamente. Esto (con suerte) significará que systemd todavía funciona correctamente.

Paso 17: Configurar cortafuegos

Para mejorar la seguridad, puede configurar firewalls para restringir el acceso a MinIO:

  • Para acceso de administrador, permita conexiones solo desde las direcciones IP de su hogar/oficina.
  • Para el acceso web, permita conexiones solo desde las IP de los servidores que necesitan acceso.

Tenga siempre cuidado con el hecho de que si la IP de su hogar, oficina o servidor cambia, tendrá que agregarlos a la lista blanca. Si las direcciones IP cambian con frecuencia, tome otras medidas de seguridad adecuadas para su servidor.

Siguiendo estos pasos, puede instalar y configurar un servidor MinIO básico en su servidor Ubuntu, evitando los altos costos asociados con Amazon S3. La integración de MinIO con Laravel/PHP le permite aprovechar el poder del almacenamiento de objetos en sus aplicaciones mientras mantiene el control sobre sus datos y costos.

También cree un cronjob de verificación de espacio en disco que envíe por correo electrónico si su disco está casi lleno, especialmente si está utilizando MinIO en modo de servidor único. MinIO tiene la capacidad de vincular múltiples servidores y zonas de replicación entre sí.

Si esto es demasiado complejo, también creamos una guía para configurar un Servidor SFTP simple para Ubuntu/Laravel.

Deja un comentario

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

es_ESEspañol
Ir arriba