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.