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-30Zditandai 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 CLImc. - 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
- VPS Linux dengan Docker dan Docker Compose yang sudah terpasang. Cek dengan
docker --versiondandocker compose version. - Ruang disk yang cukup untuk data. Pisahkan folder metadata (kecil, sering diakses) dan folder data kalau disk-nya lebih dari satu.
- Empat port milik Garage:
3900(S3 API),3901(komunikasi antar node),3902(web statis), dan3903(admin API). - Klien uji:
mc(MinIO Client),rclone, atauawscli.
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 = 1wajib 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.tomladalahadvertise_endpoint(misalnyahttps://s3.domainku.com), danroot_domainkalau 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 syncsupaya 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.

