MINio – Uno storage ad oggetti Open Source

Categories: Fediverso, Roba da nerd

Cercavamo da tempo uno storage ad oggetti rilasciato sotto licenza GPL o simili per utilizzarlo come backend per i media files di bologna.one.
In effetti mastodon prevede la possibilità di usare un bucket S3 su AWS per storare questo tipo di oggetti, ma per vari motivi questa strada non era praticabile.
Innanzitutto per una questione di costi e poi anche per ragioni di privacy. Avendo a disposizione un server dismesso su OVH abbiamo deciso di fare un test creando un nostro Object Storage per poi provare ad utilizzarlo in una installazione di prova di Mastodon come repository per i media files.
Questo articolo tratta solo la parte di Object Storage, l’installazione di Mastodon con i media files sul nostro Object Storage sarà trattata in un altro articolo.
Ci siamo quindi messi alla ricerca di un software che facesse quello che ci serviva.
Le caratteristiche necessarie erano:

  • Licenza libera (GPL o simili)
  • Compatibilità con i protocolli S3 di AWS
  • Possibilità di scalare a livello di spazio, ma anche di altre risorse
  • Possibilità di fare un’installazione distribuita su più nodi, anche se questa feature nell’immediato non era necessaria

Dopo qualche ricerca ci siamo orientati su MINio (https://min.io), che offre tutte le features richieste, più la possibilità di passare ad un piano a pagamento hostato presso l’azienda che lo sviluppa (anche questa parte al momento non interessa, ma potrebbe essere interessante per eventuali sviluppi futuri).
Il setup iniziale di MINio è piuttosto semplice. E’ consigliato di usare una distribuzione Linux RedHat compatibile e quindi, dati i noti problemi di CentOS ci siamo orientati su Rocky Linux, anche se forse per una installazione in produzione in ambiente mission critical sarebbe meglio scegliere Oracle Linux, grazie alla possibilità di avere un supporto di tipo enterprise.
Installato quindi Rocky Linux 8 in modalità minimal e fatti gli aggiornamenti occorre prevedere un adeguato spazio per gli oggetti che saranno caricati sul nostro object storage. Nel nostro caso abbiamo aggiunto un disco da 50GB e creato un file system LVM (in modo da poterlo espandere a piacimento). Il suddetto storage è stato poi montato in una directory chiamata /data
Ora è sufficiente scaricare il pacchetto MINio che non richiede setup):

wget https://dl.min.io/server/minio/release/linux-amd64/minio

Rendiamo eseguibile il pacchetto:

chmod 755 minio

Infine lanciamolo dandogli l’indicazione di dove posizionare i dati:

./minio server /data &

A video dovrebbe comparire qualcosa di simile a questo:

Endpoint: http://xx.71.141.xx:9000 http://127.0.0.1:9000
AccessKey: minioadmin
SecretKey: minioadmin

Browser Access: 
   http://xx.71.141.xx:9000 http://127.0.0.1:9000
Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide 
   $ mc alias set myminio http://xx.71.141.xx:9000 minioadmin minioadmin
Object API (Amazon S3 compatible): 
   Go: https://docs.min.io/docs/golang-client-quickstart-guide
   Java: https://docs.min.io/docs/java-client-quickstart-guide
   Python: https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET: https://docs.min.io/docs/dotnet-client-quickstart-guide
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ACCESS_KEY' and 'MINIO_SECRET_KEY'

Se si vogliono utilizzare delle credenziali diverse da quelle fornite di default (consigliato) basta usare questa sequenza di comandi:

export MINIO_ACCESS_KEY=geekflare
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

Ora è possibile con un browser accedere al nostro storage e provare a caricare un file, che poi possiamo verificare che si troverà sul filesystem.
Per le nostre esigenze di test questa configurazione è sufficiente.
Come evidenziato in più punti nel testo, un uso in produzione di MINio, anche nella versione rilasciata con licenza AGPL richiede delle configurazioni più avanzate.
Ne riparleremo se e quando MINio diventerà lo storage di default di bologna.one

«