Minio Object Storage

    Pada kesempatan kali ini saya ingin berbagi mengenai MinIO, yaitu obcject storage untuk menyimpan file-file seperti gambar, dokumen dan lain-lain. MinIO adalah sistem High Performance Object Storage yang bersifat open-source. Sederhananya, MinIO memungkinkan kita memiliki layanan penyimpanan data seperti AWS S3 (Amazon Simple Storage Service) atau Google Cloud Storage, tetapi dijalankan di server kita sendiri (On-Premise) atau di cloud pribadi.

Mengapa MinIO Populer ?

  1. S3 Compatible: MinIO menggunakan protokol API yang sama persis dengan AWS S3. Artinya, aplikasi yang dibuat untuk AWS S3 bisa beralih ke MinIO tanpa perlu mengubah kode program, cukup ubah URL endpoint-nya saja.
  2. Kecepatan Tinggi: Didesain untuk performa tinggi, mampu menangani throughput data yang besar (cocok untuk AI/ML, analytics, dan backup).
  3. Cloud Native: Sangat ringan dan dibuat khusus untuk berjalan di lingkungan kontainer (Docker/Kubernetes).
  4. Hemat Biaya: Tidak ada biaya egress (biaya transfer data keluar) seperti pada public cloud provider jika Anda host sendiri.

Use Case (Contoh Penggunaan)

  • Menyimpan upload user (foto profil, dokumen) untuk aplikasi web/mobile.
  • Menyimpan file backup database.
  • Repository data untuk Machine Learning.
Yang perlu disiapkan untuk instalasi minio :
  • Server (bisa linux atau windows)
  • Docker (pastikan sudah terinstall docker)
  • Nginx (untuk reverse proxy)
Langkah #1 :
Akses server dengan menggunakan ssh, kemudian buat folder baru serta buat file .env
#mkdir  -p minio/data
#touch .env (lalu isikan dengan konfigurasi berikut)

MINIO_USER=minioadmin
MINIO_PASSWORD=miniopassword
DOMAIN_API=api.example.com
DOMAIN_CONSOLE=example.com


Masuk ke directory yang sudah dibuat lalu buat file docker-compose.yml dan isi dengan konfigurasi berikut :
version: "3.8"

services:
  minio-service:
    image: minio/minio:RELEASE.2024-11-07T00-52-20Z
    container_name: minio
    restart: unless-stopped
    command: server /data --console-address ":9001"
    ports:
      - "9000:9000" 
      - "9001:9001" 
    environment:
      MINIO_ROOT_USER: ${MINIO_USER}
      MINIO_ROOT_PASSWORD: ${MINIO_PASSWORD}
      MINIO_SERVER_URL: https://${DOMAIN_API}
      MINIO_BROWSER_REDIRECT_URL: https://${DOMAIN_CONSOLE}
    volumes:
      - ./data:/data

Langkah #2 :
Sesuaikan konfigurasi diatas sesuai dengan kebutuhan dan jalankan perintah dan pastikan service berjalan
#docker compose up --build -d

Langkah #3 :
Buat konfigurasi reverse proxy nginx atau bisa menggunkan konfigurasi berikut
#nano /etc/nginx/conf.d/api.example.com.conf

server {

     server_name api.example.com; #sesuaikan dengan domain
     client_max_body_size 500M;
     server_tokens off; 

     location / {
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_read_timeout 900;
         proxy_send_timeout 900;
         proxy_connect_timeout 900;
         send_timeout 900;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "upgrade";
         proxy_pass http://127.0.0.1:9000;
   }
}


#nano /etc/nginx/conf.d/example.com.conf

server {

     server_name example.com; #sesuaikan dengan domain
     client_max_body_size 500M;
     server_tokens off; 

     location / {
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_read_timeout 900;
         proxy_send_timeout 900;
         proxy_connect_timeout 900;
         send_timeout 900;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "upgrade";
         proxy_pass http://127.0.0.1:9001;
   }
}

Langkah #4:
Buat certificate ssl menggunakan certbot, untuk instalasi bisa cek disini
#certbot --nginx -d api.example.com
#certbot --nginx -d example.com

 

Langkah #5: 
Akses di browser menggunakan domain yang sudah dibuat https://example.com
jika berhasil tampilanya seperti ini


Sekian untuk instalasi dan konfigurasi Object Storage menggunakan Minio pada server onpremise

Posting Komentar

0 Komentar