Nur Akhwan 21 July 2024
Dalam membuat project Laravel biasanya akan menggunakan storage tipe 'local' secara default. Storage tipe 'local' akan menggunakan folder storage/app di project Laravel kita. Metode ini digunakan apabila file source code aplikasi dan file upload aplikasi jadi satu dalam satu server atau dalam dunia arsitektur aplikasi disebut aplikasi monolith.
Ada metode lain yang ditawarkan Laravel dalam manajemen file upload ini. Salah satunya adalah menggunakan storage tipe 's3'. Storage tipe s3 ini memisahkan antara file source code aplikasi dengan file upload aplikasi, dan tidak dalam satu server. Metode ini menggunakan layanan storage pihak ketiga yang support driver s3, seperti amazone s3 storage, yandex s3 storage, digital ocean s3 storage dan lain-lain. Penyedia pihak ketiga ini biasanya memungut biaya tertentu untuk menggunakan layanannya.
Alih-alih membayar, kita bisa membuat layanan storage s3 ini dengan memanfaatkan layanan on-premise dari Minio (https://min.io) yang tentunya gratis. Tetapi kita perlu menyediakan sebuah server yang digunakan sebagai server storage s3. Spesifikasi server untuk diinstall Minio tentunya membutuhkan storage yang besar untuk menyimpan file-file upload proyek aplikasi laravel kita. Untuk installasi di server nya, dapat mengikuti petunjuk di https://min.io/download?license=agpl&platform=linux .
Untuk proses development, yang biasanya menggunakan OS windows, kita dapat menginstall di komputer local kita, dengan mengikuti petunjuk di : https://min.io/download?license=agpl&platform=windows . Setelah berhasil menginstall, akan didapatkan di terminal kita sebagai berikut :
Kemudian lewat browser kita akses alamat http://127.0.0.1:90001, dan login dengan menggunakan username 'admin', dan password 'password', dan akan tampil :
Pertama agar bisa digunakan di proyek Laravel, kita harus membuat 'bucket'. Caranya : klik menu 'Bucket', kemudian 'Create Bucket +', kemudian masukkan 'Bucket Name'. Dalam contoh ini saya membuat 'bucket' dengan nama 'storage', dan akan muncul seperti tampilan di bawah ini :
Yang kedua kita perlu membuat access key dan secret key. Caranya klik "Access Keys", kemudian "Create access key +". Isian Access Key dan Secret Key akan terisi otomatis, tidak perlu diubah. Isian Expiry, dan lain-lain bisa dikosongkan, kemudian klik 'Create'. Setelah itu kita perlu meng-copy isian Access Key ke dalam file .env laravel pada bagian AWS_ACCESS_KEY_ID, dan Secret Key pada bagian AWS_SECRET_ACCESS_KEY.
Buat sebuah project laravel baru
laravel new minio_app
Ubah isi file .env pada bagian