# 🚀 Panduan Lengkap Deploy MinIO di VPS dengan Docker (dengan Spesifikasi Server)

**MinIO** adalah sistem penyimpanan objek (object storage) berperforma tinggi yang kompatibel dengan API AWS S3.  
Dengan MinIO, Anda bisa menyimpan file dalam jumlah besar dengan efisien dan aman, baik untuk aplikasi internal, backup, maupun publik.

---

## 2\. Spesifikasi Server yang Diperlukan

### **Minimum untuk Testing atau Development**

* **CPU**: 1 vCPU
    
* **RAM**: 1 GB
    
* **Storage**: 20 GB (HDD/SSD)
    
* **Koneksi Internet**: 10 Mbps (upload/download)
    
* **OS**: Ubuntu 20.04+, Debian 11+, atau CentOS 8+
    

> Cocok untuk **uji coba**, **projek kecil**, atau **pengembangan lokal**.

---

### **Rekomendasi untuk Production Skala Kecil**

* **CPU**: 2 vCPU (atau lebih)
    
* **RAM**: 4 GB
    
* **Storage**: Minimal 50 GB SSD/NVMe (lebih cepat aksesnya)
    
* **Koneksi Internet**: 50 Mbps simetris (upload & download)
    
* **Backup**: Sistem backup otomatis ke lokasi lain
    
* **OS**: Ubuntu LTS (disarankan)
    

> Cocok untuk aplikasi web dengan file hingga **500GB**, atau pengguna aktif ratusan orang.

---

### **Rekomendasi untuk Production Skala Menengah**

* **CPU**: 4+ vCPU
    
* **RAM**: 8 GB atau lebih
    
* **Storage**: 200 GB SSD/NVMe (support disk expansion)
    
* **Koneksi Internet**: 100 Mbps simetris atau lebih
    
* **Keamanan**:
    
    * Firewall aktif
        
    * SSL/TLS untuk API dan Console
        
* **Redundansi**:
    
    * Bisa cluster MinIO
        
    * Backup harian otomatis
        

> Cocok untuk **SaaS** atau layanan publik yang banyak menangani upload/download.

---

### **Catatan Penting**

* **RAM** mempengaruhi kecepatan caching metadata dan performa upload/download.
    
* **SSD/NVMe** jauh lebih cepat daripada HDD, sangat terasa saat mengelola banyak file kecil.
    
* Jika file sangat besar (video, backup database), **kecepatan internet** dan **IO disk** menjadi faktor kritis.
    
* Untuk **cluster MinIO**, minimal 4 node dan storage disk terpisah.
    

---

## 3\. Instalasi Docker & Docker Compose

```bash
sudo apt update
sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker
```

---

## 4\. Struktur Direktori

```bash
mkdir -p ~/minio/data
mkdir -p ~/minio/config
cd ~/minio
```

---

## 5\. File `docker-compose.yml`

```yaml
version: '3.8'

services:
  minio:
    image: minio/minio:latest
    container_name: minio
    ports:
      - "9000:9000"   # API S3
      - "9001:9001"   # Console Web
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: supersecretpassword
    volumes:
      - ./data:/data
      - ./config:/root/.minio
    command: server /data --console-address ":9001"
    restart: unless-stopped
```

---

## 6\. Menjalankan MinIO

```bash
docker-compose up -d
```

Akses:

* Console: `http://<IP-VPS>:9001`
    
* API S3: `http://<IP-VPS>:9000`
    

---

## 7\. Domain & SSL

1. Arahkan DNS ke IP VPS:
    
    ```typescript
    s3.domainanda.com → <IP VPS>
    minio.domainanda.com → <IP VPS>
    ```
    
2. Gunakan **Nginx Proxy Manager** untuk SSL Let’s Encrypt.
    

---

## 8\. Testing Upload

1. Login ke console.
    
2. Buat bucket.
    
3. Upload file.
    
4. Coba akses via API S3.
    

---

## 9\. Best Practice

* Gunakan **password kuat** dan simpan di password manager.
    
* Backup data secara rutin (`data/`).
    
* Gunakan **firewall** untuk membatasi akses.
    
* Gunakan **SSD/NVMe** untuk performa optimal.
