MinIO

MinIO adalah platform object storage bersifat open source yang dirancang untuk menyimpan data dalam jumlah besar secara aman dan cepat. MinIO kompatibel dengan protokol Amazon S3, sehingga mendukung integrasi dengan berbagai aplikasi dan layanan yang menggunakan S3. Solusi ini populer digunakan untuk kebutuhan penyimpanan cloud-native, seperti big data, machine learning, backup, dan containerization.

MinIO memiliki keunggulan dalam hal kinerja tinggi, skalabilitas, dan kesederhanaan implementasi. Dengan dukungan multi-cloud, MinIO dapat digunakan pada infrastruktur on-premises, cloud publik, maupun hybrid cloud. Keamanan data di MinIO terjamin melalui enkripsi end-to-end, serta fitur data versioning dan erasure coding untuk memastikan redundansi dan perlindungan terhadap kehilangan data.

1. Persyaratan Sistem

System requirements yang direkomendasikan untuk MinIO:

  • 4 CPU
  • 8 GB RAM
  • 100 GB SSD
  • 1GB/s network bandwidth
  • Ubuntu 20.04 LTS

Untuk panduan deploy ini untuk menggunakan:

  • Topologi MinIO Single Node Single Drive
  • Cloud VPS 1 CPU, 1 GB RAM
  • Block Storage 100 GB
  • OS Ubuntu 24.04 LTS
  • MinIO Open Source
  • Subdomain minio-console.contoh.com, minio-api.contoh.com

2. Persiapan Storage

Update sistem

sudo apt update
sudo apt upgrade -y

Block storage sudah terpasang sebelumnya Tampilkan block devices

sudo lsblk

Contoh hasilnya

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda       8:0    0  100G  0 disk 
vda     253:0    0   25G  0 disk 
├─vda1  253:1    0   24G  0 part /
├─vda14 253:14   0    4M  0 part 
├─vda15 253:15   0  106M  0 part /boot/efi
└─vda16 259:0    0  913M  0 part /boot
vdb     253:16   0  482K  1 disk

Device sda yang akan digunakan Partisi dan format sda dengan filesystem XFS

sudo parted -s /dev/sda mklabel gpt	
sudo parted -s /dev/sda unit mib mkpart primary 0% 100%
sudo mkfs.xfs /dev/sda1

Verifikasi langkah partisi

sudo lsblk

Contoh hasilnya

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda       8:0    0  100G  0 disk 
└─sda1    8:1    0  100G  0 part 
vda     253:0    0   25G  0 disk 
├─vda1  253:1    0   24G  0 part /
├─vda14 253:14   0    4M  0 part 
├─vda15 253:15   0  106M  0 part /boot/efi
└─vda16 259:0    0  913M  0 part /boot
vdb     253:16   0  482K  1 disk 

Block storage sda dengan partisi sda1 sudah aktif

Buat direktori dan mount partisi sda1

sudo mkdir /mnt/minio-storage
sudo mount /dev/sda1 /mnt/minio-storage	

Verifikasi langkah mount

df -hT

Contoh hasilnya

Filesystem     Type   Size  Used Avail Use% Mounted on
tmpfs          tmpfs   97M  1.0M   96M   2% /run
/dev/vda1      ext4    24G  5.3G   18G  23% /
tmpfs          tmpfs  481M     0  481M   0% /dev/shm
tmpfs          tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/vda16     ext4   881M   61M  758M   8% /boot
/dev/vda15     vfat   105M  6.1M   99M   6% /boot/efi
tmpfs          tmpfs   97M   12K   97M   1% /run/user/1000
/dev/sda1      xfs    100G  2.0G   98G   2% /mnt/minio-storage

Partisi sda1 berhasil di-mount di /mnt/minio-storage

Buka file fstab

sudo nano /etc/fstab

Masukkan konfigurasi auto-mount sda1

/dev/sda1  /mnt/minio-storage  xfs  defaults  0  0

3. Install MinIO Server

Download dan install MinIO server

wget https://dl.min.io/server/minio/release/linux-amd64/minio_20241218131544.0.0_amd64.deb
sudo dpkg -i minio*.deb

Buat user minio-user

sudo useradd -r minio-user -s /sbin/nologin
sudo chown minio-user:minio-user /mnt/minio-storage	

Buat file konfigurasi

sudo nano /etc/default/minio

Masukkan konfigurasinya

MINIO_VOLUMES="/mnt/minio-storage"
MINIO_OPTS="--address :9000 --console-address :9001"
MINIO_ROOT_USER=minio_admin
MINIO_ROOT_PASSWORD=minio_password

Jalankan service minio

sudo systemctl start minio
sudo systemctl enable minio
sudo systemctl status minio

4. Konfigurasi Nginx

Install Nginx

sudo apt install nginx -y

Buat konfigurasi reverse proxy untuk console

sudo nano /etc/nginx/conf.d/minio-console.conf

Masukkan konfigurasinya

server {
   listen 80;
   server_name  minio-console.contoh.com;

   ignore_invalid_headers off;
   client_max_body_size 0;
   proxy_buffering off;
   proxy_request_buffering off;

   location / {
      proxy_set_header Host $http_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_set_header X-NginX-Proxy true;

      real_ip_header X-Real-IP;
      proxy_connect_timeout 300;

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      chunked_transfer_encoding off;

      proxy_pass http://127.0.0.1:9001;
   }

   access_log /var/log/nginx/minio-console.access.log;
   error_log /var/log/nginx/minio-console.error.log;
}

Buat konfigurasi reverse proxy untuk API

sudo nano /etc/nginx/conf.d/minio-api.conf

Masukkan konfigurasinya

server {
   listen 80;
   server_name  minio-api.contoh.com;

   ignore_invalid_headers off;
   client_max_body_size 0;
   proxy_buffering off;
   proxy_request_buffering off;

   location / {
      proxy_set_header Host $http_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_connect_timeout 300;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      chunked_transfer_encoding off;

      proxy_pass http://127.0.0.1:9000;
   }

   access_log /var/log/nginx/minio-api.access.log;
   error_log /var/log/nginx/minio-api.error.log;
}

Restart server Nginx

sudo systemctl restart nginx

Install certbot

sudo apt install certbot python3-certbot-nginx -y

Install sertifikat SSL

sudo certbot --non-interactive \
-m [email protected] \
--agree-tos \
--no-eff-email \
--nginx -d minio-console.contoh.com \
--redirect

sudo certbot --non-interactive \
-m [email protected] \
--agree-tos \
--no-eff-email \
--nginx -d minio-api.contoh.com \
--redirect

5. Pengujian

Pengujian console

  • Akses https://minio-console.contoh.com
  • Buat bucket
  • Browse bucket
  • Upload file ke bucket
  • Buat user

Pengujian API Install MinIO client

sudo wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc
sudo chmod +x /usr/local/bin/mc

Buat koneksi ke MinIO server

mc alias set myminio/ https://minio-api.contoh.com MYUSERNAME MYPASSWORD

Tampilkan semua object yang berada di myminio

mc ls myminio

Tampilkan semua object yang berada di mybucket

mc ls myminio/mybucket

Deploy MinIO server telah selesai, siap digunakan.