VPS Murah Nevacloud

Alternatif MinIO: Pasang Garage S3 di VPS Sendiri

Kalau kita masih menyimpan data di MinIO Community Edition, ada kabar yang perlu dibaca lebih dulu: repositori resminya sudah diarsipkan sejak 25 April 2026 dan README-nya kini berbunyi “this repository is no longer maintained”. Rilis terakhir edisi komunitas adalah RELEASE.2025-10-15T17-29-55Z — sebuah perbaikan keamanan — dan di catatan rilisnya MinIO menulis bahwa untuk lingkungan container kita harus meng-clone kode sumber dan membangun image sendiri, karena binary serta image resminya sudah tidak dibagikan lagi. Jadi kalau kita masih butuh S3 sendiri, sekarang waktunya mencari alternatif MinIO yang benar-benar dirawat.

Salah satu kandidat terkuatnya adalah Garage, object store S3-compatible buatan Deuxfleurs, koperasi nonprofit asal Prancis yang memakainya di produksi sejak rilis pertama 2020. Versi stabil terbarunya v2.4.1 (8 September 2026), dan sejak v2.3.0 Garage bisa menyiapkan klaster satu node secara otomatis.

Oke, lanjuutt.. kita pasang Garage di VPS, mulai dari file konfigurasi sampai jadwal backup-nya.

Kenapa MinIO CE Pensiun dan Apa Efeknya buat Kita

Perjalanan mundurnya cukup panjang dan sayangnya bertahap, jadi banyak yang baru sadar setelah terlanjur upgrade:

  • 24 Mei 2025 — rilis RELEASE.2025-05-24T17-08-30Z ditandai Breaking Release di GitHub, dan pemberitaan industri (antara lain Blocks & Files) mencatat konsol manajemen dikeluarkan dari edisi komunitas. Administrasi user, policy, dan lifecycle pindah ke CLI mc.
  • Oktober 2025 — MinIO berhenti membagikan binary dan image container untuk edisi komunitas. Dokumentasi perilisannya menyuruh kita membangun container sendiri dari sumber.
  • 3 Desember 2025 — README diubah menjadi mode pemeliharaan.
  • 12 Februari 2026 — statusnya diubah jadi “no longer maintained”, lalu repositori diarsipkan penuh pada 25 April 2026.

Untuk kita yang sekadar butuh tujuan backup atau penyimpanan objek, tiga konsekuensinya nyata: tidak ada lagi jaminan patch keamanan di jalur gratis, tidak ada image resmi yang bisa langsung ditarik, dan kalau ada CVE baru, satu-satunya jalan adalah membangun sendiri dari kode yang sudah tidak dikembangkan. Pilihannya cuma dua: bayar produk komersialnya, atau pindah ke implementasi S3 lain yang masih hidup.

Apa Itu Garage dan Kenapa Cocok Jadi Alternatif MinIO

Garage adalah layanan object storage yang mengimplementasikan S3 API — tidak seluruh permukaannya, tapi daftar fitur yang didukungnya ditulis terbuka di halaman kompatibilitas S3 milik proyeknya. Yang menarik untuk VPS kecil:

  • Lisensi AGPLv3 dan dikembangkan koperasi nonprofit. Tidak ada rencana upsell ke edisi berbayar yang bisa berubah sepihak; kode utamanya ada di git.deuxfleurs.fr, dengan mirror di GitHub.
  • Ringan dan mandiri. Garage tidak butuh layanan eksternal untuk jalan, dan desainnya menyasar klaster kecil-menengah.
  • Deduplikasi plus kompresi Zstd opsional. Objek dipotong jadi blok berukuran tetap dan blok identik disimpan sekali saja, jadi file yang mirip tidak menelan ruang dua kali.
  • Tanpa RAFT atau konsensus terpusat. Semua permintaan bisa dilayani mandiri, jadi tidak ada satu node yang jadi leher botol.
  • Bisa jadi web server statis. Bucket dapat ditandai sebagai situs statis lewat garage bucket website --allow, sesuatu yang bahkan tidak didukung implementasi S3 alternatif lain menurut dokumentasinya.
  • Admin API dan metrik Prometheus. Berguna kalau kita sudah memasang pemantauan sendiri.

Satu catatan jujur sebelum mulai: mode satu node tidak punya redundansi sama sekali, dan dokumentasi Garage sendiri menulis bahwa deployment single-node di panduan cepat “should not be used in production”. Untuk VPS pribadi ini tetap masuk akal sebagai tujuan backup, asalkan kita sadar bahwa salinan kedua di tempat lain tetap wajib — bukan opsional.

Yang Perlu Disiapkan

  1. VPS Linux dengan Docker dan Docker Compose yang sudah terpasang. Cek dengan docker --version dan docker compose version.
  2. Ruang disk yang cukup untuk data. Pisahkan folder metadata (kecil, sering diakses) dan folder data kalau disk-nya lebih dari satu.
  3. Empat port milik Garage: 3900 (S3 API), 3901 (komunikasi antar node), 3902 (web statis), dan 3903 (admin API).
  4. Klien uji: mc (MinIO Client), rclone, atau awscli.

Langkah 1: Tulis Konfigurasi garage.toml

Buat folder kerjanya, lalu tulis konfigurasi berikut di /etc/garage.toml:


sudo mkdir -p /etc /var/lib/garage/meta /var/lib/garage/data
openssl rand -hex 32   # simpan hasilnya untuk rpc_secret
openssl rand -base64 32 # untuk admin_token
openssl rand -base64 32 # untuk metrics_token

metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
db_engine = "sqlite"

replication_factor = 1

rpc_bind_addr = "[::]:3901"
rpc_secret = "GANTI_DENGAN_HASIL_openssl_rand_hex_32"

[s3_api]
s3_region = "garage"
api_bind_addr = "127.0.0.1:3900"

[s3_web]
bind_addr = "127.0.0.1:3902"
root_domain = ".web.garage.localhost"
index = "index.html"

[admin]
api_bind_addr = "127.0.0.1:3903"
admin_token = "GANTI_DENGAN_HASIL_openssl_rand_base64_32"
metrics_token = "GANTI_JUGA"

Tiga hal yang sengaja kita pilih begini:

  • replication_factor = 1 wajib untuk mode satu node. Dokumentasi Garage menyebut kalau angkanya lain, Garage akan menolak start dengan --single-node.
  • db_engine = "sqlite" dipilih karena dokumentasi Garage mencatat LMDB (mesin default, paling cepat dan paling teruji) cenderung korup setelah mati listrik mendadak, sementara sqlite lebih tahan. Untuk VPS kecil yang bukan klaster, ketahanan lebih berharga daripada kecepatan.
  • Ketiga port diikat ke 127.0.0.1. Aplikasi yang jalan di VPS yang sama tetap bisa mengakses Garage, tapi tidak ada satu pun port yang terbuka ke internet. Ini penting, terutama untuk port admin.

Langkah 2: Jalankan Garage dengan Docker Compose

Buat docker-compose.yml:


services:
  garage:
    image: dxflrs/garage:v2.4.1
    container_name: garage
    restart: unless-stopped
    volumes:
      - /etc/garage.toml:/etc/garage.toml:ro
      - /var/lib/garage/meta:/var/lib/garage/meta
      - /var/lib/garage/data:/var/lib/garage/data
    ports:
      - "127.0.0.1:3900:3900"
      - "127.0.0.1:3902:3902"
      - "127.0.0.1:3903:3903"
    command: ["/garage", "server", "--single-node"]

Perhatikan bagian volumes-nya. Contoh docker run di panduan cepat Garage memang lebih pendek, tapi dokumentasinya sendiri memberi peringatan bahwa perintah itu tidak membuat volume persisten sehingga data hilang begitu container berhenti. Tiga mount di atas menyelesaikan itu: konfigurasi dibaca dari host, metadata dan data disimpan di /var/lib/garage.

Nyalakan dan periksa:


docker compose up -d
docker compose logs -f garage

Kalau log sudah tenang, buat alias supaya perintah CLI tidak perlu diketik panjang:


alias garage="docker compose exec garage /garage"

Lalu cek statusnya:


docker compose exec garage /garage status

Node kita harus muncul sebagai healthy dengan ID panjang dan versi v2.4.1. Flag --single-node itulah yang mengurus layout klaster secara otomatis — Garage akan menolak menjalankannya kalau klaster ternyata sudah punya node lain. Jadi kita tidak perlu lagi rangkaian garage layout assign manual seperti pada deployment multi-node.

Langkah 3: Buat Bucket dan Access Key

Selanjutnya kita siapkan wadah dan kuncinya:


docker compose exec garage /garage key create backup-vps
docker compose exec garage /garage bucket create arsip-server
docker compose exec garage /garage bucket allow arsip-server --read --write --key backup-vps

Perintah pertama akan menampilkan Key ID (berawalan GK) dan Secret key. Simpan keduanya di password manager sekarang — nilai secret-nya tidak bisa dilihat lagi setelah layar tertutup. Kalau ingin bucket itu juga bisa dibuka sebagai situs statis, tambahkan --owner saat memberi izin lalu jalankan bucket website --allow arsip-server.

Untuk melihat pemakaian disk, cukup:


docker compose exec garage /garage stats

Langkah 4: Uji dari Terminal Pakai mc atau rclone

Uji dengan mc:


mc alias set garage http://127.0.0.1:3900 GKxxxxxxxx GANTI_SECRET --api S3v4
mc ls garage/
echo "halo garage" > /tmp/uji.txt
mc cp /tmp/uji.txt garage/arsip-server/uji.txt
mc ls garage/arsip-server

Dan kalau kita lebih suka rclone (yang dipakai artikel backup VPS otomatis ke cloud pakai rclone), tambahkan remote berikut di ~/.config/rclone/rclone.conf:


[garage]
type = s3
provider = Other
env_auth = false
access_key_id = GKxxxxxxxx
secret_access_key = GANTI_SECRET
region = garage
endpoint = http://127.0.0.1:3900
force_path_style = true
acl = private
bucket_acl = private

force_path_style = true bukan pilihan gaya — Garage hanya mendukung path-style addressing, jadi remote tanpa baris itu akan gagal. Setelah tersimpan, cek dengan rclone lsd garage:. Dua tips dari dokumentasi Garage: pakai --fast-list untuk rclone sync kalau bucket sudah berisi banyak objek, dan kalau nanti Garage diletakkan di belakang proxy Cloudflare dan muncul error Invalid signature, tambahkan --s3-sign-accept-encoding=false.

Langkah 5: Jadikan Garage Target Backup

Karena endpoint-nya sudah S3, semua alat backup yang mendukung S3 langsung bisa dipakai. Contoh dengan restic — pola yang ada di dokumentasi Garage:


export AWS_ACCESS_KEY_ID=GKxxxxxxxx        # Key ID dari langkah 3
export AWS_SECRET_ACCESS_KEY=GANTI_SECRET
export RESTIC_REPOSITORY="s3:http://127.0.0.1:3900/arsip-server"
export RESTIC_PASSWORD="$(openssl rand -base64 32)"   # simpan di password manager!
restic init
restic backup /var/www
restic snapshots

Sama seperti pola backup lain, jangan simpan RESTIC_PASSWORD di skrip — taruh di environment atau password manager, karena tanpa kunci itu isi snapshot tidak bisa dibuka. Kalau mau dijalankan otomatis tiap malam, rangkai restic backup di dalam systemd timer seperti pada panduan backup rclone, arahkan targetnya ke Garage, lalu pantau hasilnya supaya kegagalan tidak lewat begitu saja.

Keamanan dan Catatan Operasional

  • Jangan pernah membuka port 3903. Admin API di port itu bisa mengubah kredensial dan layout klaster; biarkan di 127.0.0.1. Kalau butuh dikelola dari mesin lain, masuk dulu lewat SSH tunnel atau VPN.
  • Pindahkan endpoint ke HTTPS kalau ada aplikasi di server lain. Dokumentasi Garage menyediakan contoh Nginx, Apache, Traefik, dan Caddy; yang perlu diubah di garage.toml adalah advertise_endpoint (misalnya https://s3.domainku.com), dan root_domain kalau ingin penamaan bucket bergaya subdomain.
  • Aktifkan enkripsi bila perlu. Garage mendukung SSE-C sejak v1.0, dan sudah diuji bersama Nextcloud — cocok kalau bucket akan menampung data sensitif.
  • Siapkan salinan kedua. Satu node berarti satu titik kegagalan. Kirim bucket Garage ke penyimpanan lain lewat rclone sync supaya satu disk rusak tidak berarti semuanya hilang.
  • Upgrade dengan urutan yang benar. Dokumentasi Garage menganjurkan membaca halaman upgrading lebih dulu; dengan container, polanya berhenti container lama, hapus, lalu buat ulang dengan tag versi baru.

Kesimpulan

MinIO edisi komunitas memang sudah tamat, tapi itu bukan alasan untuk kembali menyerahkan data ke penyimpanan berbayar. Garage memberi kita endpoint S3 sendiri di VPS, berlisensi AGPLv3, dari proyek yang sudah jalan sejak 2020 dan masih rajin merilis — v2.4.1 bahkan keluar bulan lalu untuk membereskan masalah pada mode discovery Kubernetes dan Consul. Kuncinya cuma satu: perlakukan Garage sebagai bagian dari strategi 3-2-1, bukan sebagai satu-satunya tempat data kita bersandar.

Selamat mencoba di VPS-nya, dan semoga backup kita akhirnya tinggal di rumah sendiri.

Baca juga

Nevacloud VPS Indonesia

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *