Server Ubuntu con MinIO + Let's Encrypt + Laravel

Installazione e configurazione di MinIO su Ubuntu + integrazione Lets Encrypt + Laravel

Cerchi un'alternativa conveniente ad Amazon S3? MinIO è un'ottima opzione. In questa guida, ti guideremo attraverso l'installazione e la configurazione di base di MinIO sul tuo server Ubuntu, insieme a passaggi bonus per integrarlo con Laravel/PHP.

Naturalmente, l'impostazione è a tuo rischio e pericolo. Non siamo responsabili di nulla.

Passaggio 1: configurare Ubuntu Server

Prima di iniziare, assicurati di avere un server Ubuntu attivo e funzionante.

🤓😎 Sempre più persone stanno ricevendo i nostri consigli su Geek, Privacy, Sviluppo e Stile di Vita

Vuoi ricevere gli ultimi blog su Geek, Privacy, Sviluppo e Lifestyle? Iscriviti alla nostra newsletter.

Passaggio 2: installare MinIO

Per installare MinIO, seguire le istruzioni fornite nel documentazione ufficiale MinIO.

Passaggio 3: configurare il servizio systemd MinIO

Dopo l'installazione, aggiungi il file systemd minio.service. Se non viene aggiunto automaticamente, puoi aggiungerlo manualmente. Puoi trovare un file di esempio qui.

Aprire il file minio.service e rimuovere le seguenti righe:

Utente=minio-utente Gruppo=minio-utente

Senza queste linee, MinIO funzionerà nella root come descritto in questo problema di GitHub.

Passaggio 4: installa il certificato SSL Let's Encrypt

MinIO supporta la crittografia SSL. Per impostare SSL, puoi usare Let's Encrypt, un provider di certificati SSL gratuito e ampiamente affidabile.

Seguire le istruzioni a https://certbot.eff.org affinché Ubuntu installi Let's Encrypt e generi il tuo certificato SSL.

Passaggio 5: configurare MinIO con Let's Encrypt

Una volta generato il certificato SSL, devi configurare MinIO per utilizzarlo. Ecco come:

Copiare i file del certificato SSL nella directory 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.key

Imposta un crontab per rinnovare settimanalmente il certificato SSL:

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

Passaggio 6: modifica le impostazioni MinIO

Modificare il file di configurazione MinIO:

nano /etc/default/minio

Aggiorna le seguenti impostazioni:

MINIO_VOLUMES="/mnt/data" MINIO_OPTS="--indirizzo :9000 --indirizzo-console :9001" MINIO_ROOT_USER="il_tuo_nome_utente" MINIO_ROOT_PASSWORD="la_tua_password" MINIO_SERVER_URL="https://tuodominio.com:9000" MINIO_CONFIG_ENV_FILE=/etc/default/minio

Passaggio 7: modifica nome utente e password predefiniti

Modifica il nome utente e la password predefiniti per proteggere l'installazione di MinIO.

Passaggio 8: riavviare il servizio MinIO

Riavviare il servizio MinIO per applicare le modifiche:

sudo systemctl riavvia minio.service

Controllare lo stato per assicurarsi che MinIO sia in esecuzione:

sudo systemctl stato minio.service

Passaggio 9: abilitare MinIO all'avvio

Per abilitare l'esecuzione di MinIO all'avvio, utilizzare il seguente comando:

systemctl abilita minio

Passaggio 10: creare un bucket

Crea un bucket in MinIO per archiviare i tuoi file. Puoi usare l'interfaccia web di MinIO o lo strumento da riga di comando di MinIO per creare un bucket.

Passaggio 11: creare una policy per il bucket

Crea una policy per il bucket per definire i permessi di accesso. Ecco un esempio di policy:

{ "Versione": "2012-10-17", "Istruzione": [ { "Effetto": "Consenti", "Azione": [ "s3:*" ], "Risorsa": [ "arn:aws:s3:::your_bucket/*" ] } ] }

Passaggio 12: creare un utente e assegnare la nuova policy

Creare un utente in MinIO e assegnargli la policy creata in precedenza.

Genera una chiave di accesso e una chiave segreta per l'utente. Avrai bisogno di queste chiavi nei passaggi successivi.

Passaggio 13: configurare il supporto Laravel per MinIO

Se utilizzi Laravel o PHP, puoi integrare MinIO con la tua applicazione utilizzando lega/flysystem-aws-s3-v3 pacchetto.

Installa il pacchetto tramite Composer:

il compositore richiede league/flysystem-aws-s3-v3 "^3.0"

Quindi, aggiorna il filesystem.php file di configurazione:

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

Passaggio 14: testare l'integrazione di MinIO in Laravel

Verificare l'integrazione di MinIO utilizzando la console Tinker di Laravel:

php artigiano tinker \Storage::cloud()->put('hello.json', '{"hello": "world"}'); \Storage::cloud()->get('hello.json');

Dovrebbe restituire qualcosa come "true" o qualcosa di successful. In caso contrario, puoi aggiungere questa opzione di debug dei filesystem a MinIO: 'throw'=> env('APP_DEBUG'), quindi diventerà qualcosa come:

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

Questo eseguirà il debug/genererà messaggi di errore solo quando APP_DEBUG è attivo. Non eseguirlo mai in produzione o in ambienti sensibili.

Passaggio 15: imposta DNS inverso

Se possibile, imposta il DNS inverso.

Passaggio 16: riavviare e verificare

Riavvia il server e verifica che MinIO e l'integrazione con Laravel funzionino ancora correttamente. Questo (si spera) significherà che systemd funziona ancora correttamente.

Passaggio 17: configurare i firewall

Per migliorare la sicurezza, puoi impostare dei firewall per limitare l'accesso a MinIO:

  • Per l'accesso amministrativo, consenti le connessioni solo dagli indirizzi IP di casa/ufficio.
  • Per l'accesso web, consentire le connessioni solo dagli IP dei server che necessitano l'accesso.

Sii sempre cauto sul fatto che se cambia l'IP di casa, ufficio o server, dovrai aggiungerli alla whitelist. Se gli indirizzi IP cambiano troppo frequentemente, adotta altre misure di sicurezza appropriate per il tuo server.

Seguendo questi passaggi, puoi installare e configurare un server MinIO di base sul tuo server Ubuntu, evitando gli elevati costi associati ad Amazon S3. L'integrazione di MinIO con Laravel/PHP ti consente di sfruttare la potenza dell'archiviazione di oggetti nelle tue applicazioni, mantenendo al contempo il controllo sui tuoi dati e sui costi.

Crea anche un cronjob di controllo dello spazio su disco che invia un'e-mail se il disco è quasi pieno, specialmente se stai usando MinIO in modalità server singolo. MinIO ha la capacità di collegare più server e zone di replicazione tra loro.

Se questo è troppo complesso, abbiamo anche creato una guida per l'impostazione di un semplice server SFTP per Ubuntu / Laravel.

Ultimo aggiornamento il 31 maggio 2023

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItaliano
Scorri verso l'alto