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.
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-utenteSenza 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.keyImposta 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.keyPassaggio 6: modifica le impostazioni MinIO
Modificare il file di configurazione MinIO:
nano /etc/default/minioAggiorna 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/minioPassaggio 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.serviceControllare lo stato per assicurarsi che MinIO sia in esecuzione:
sudo systemctl stato minio.servicePassaggio 9: abilitare MinIO all'avvio
Per abilitare l'esecuzione di MinIO all'avvio, utilizzare il seguente comando:
systemctl abilita minioPassaggio 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
