Cara Menjalankan MinIO di VPS Ubuntu 24.04
Jalankan MinIO di satu VPS Ubuntu 24.04 dengan binary terverifikasi, systemd, dasar mc, presigned URL, dan target pencadangan restic berbasis S3.
Yang diberikan object storage yang di-host sendiri dengan MinIO
MinIO adalah object storage yang di-host sendiri dan mendukung API Amazon S3. Arahkan restic atau S3 SDK apa pun ke server Anda sendiri, ubah satu pengaturan endpoint, dan klien tidak dapat membedakan keduanya. Panduan ini membuat satu node pada Ubuntu 24.04: binary yang telah diverifikasi, pengguna sistem khusus, unit systemd yang menjaga kredensial root tetap berada di luar file unit, serta bucket yang digunakan restic untuk menyimpan cadangan.
S3 (simple storage service) adalah API HTTP, bukan filesystem. Anda menggunakan PUT untuk menempatkan objek ke dalam bucket dengan sebuah key, lalu menggunakan GET untuk mengambilnya kembali. S3 tidak mendukung penulisan parsial atau penggantian nama. Model ini sesuai untuk alat pencadangan karena sebuah objek diterima secara utuh atau tidak diterima sama sekali.
Satu node menyimpan satu salinan data Anda. Itulah kompromi yang Anda pilih. Anda memperoleh endpoint S3 yang dapat dikendalikan sendiri dengan biaya sebesar VPS, tetapi Anda juga mengambil alih semua tugas yang sebelumnya dilakukan penyedia cloud, mulai dari mengganti disk yang gagal hingga menambal software server. Bagian menjelang akhir menjelaskan secara langsung kapan kompromi tersebut merupakan pilihan yang tepat.
Status MinIO Community Edition pada Juli 2026
Baca bagian ini sebelum menggunakannya sebagai dasar, karena statusnya baru-baru ini berubah. Pada Mei 2025, MinIO menghapus fitur administrasi dari konsol web pada community edition. Browser kini hanya menyediakan object browser. Karena itu, bucket dan access key dikelola dengan command-line client mc.
Kemudian, pada 2025, MinIO berhenti menerbitkan binary community yang telah dikompilasi. README proyek kini menyatakan bahwa community edition hanya didistribusikan sebagai source code. URL unduhan lama masih berfungsi. Per Juli 2026, URL tersebut menyediakan server build RELEASE.2025-09-07T16-13-09Z dan client build RELEASE.2025-08-13T08-35-41Z, dan belum ada community build yang lebih baru. Jadi, binary di bawah ini benar-benar tersedia dan dapat dijalankan, tetapi versinya tidak berubah. Perbaikan keamanan yang diterbitkan setelah September 2025 tidak terdapat di dalamnya.
Fakta ini menentukan bagian lain dalam panduan ini. Karena itu, MinIO di sini mendengarkan pada 127.0.0.1 dan hanya terhubung ke Internet melalui proxy yang Anda kendalikan. Jika Anda ingin mengikuti perbaikan terbaru, build dari source code. README vendor menyediakan satu perintah, go install github.com/minio/minio@latest, yang memerlukan toolchain Go dan menulis binary ke ~/go/bin/minio. Instal binary tersebut ke /usr/local/bin/minio. Semua langkah lain dalam panduan ini tetap sama.
Instal biner MinIO dan verifikasi unduhan
Unduh rilis yang ditetapkan versinya beserta checksum yang dipublikasikan. Flag -f membuat curl gagal jika terjadi error HTTP, bukan menyimpan halaman error dengan nama file yang Anda minta. Jika tidak, Anda dapat menginstal halaman 404 dan bingung karena file tersebut tidak dapat dieksekusi.
cd /tmp
REL=RELEASE.2025-09-07T16-13-09Z
curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/archive/minio.$REL" -o minio
curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/archive/minio.$REL.sha256sum" -o minio.sha256sumBandingkan kedua hash tersebut. Bandingkan hash saja.
published=$(awk '{print $1}' minio.sha256sum)
downloaded=$(sha256sum minio | awk '{print $1}')
[ "$published" = "$downloaded" ] && echo "checksum ok"Jangan gunakan sha256sum -c minio.sha256sum di sini. Label yang ditulis setelah hash dalam file tersebut adalah minio.RELEASE.2025-09-07T16-13-09Z, sedangkan hasil unduhan disimpan sebagai minio. Karena itu, -c mencari file yang tidak ada. Perintah tersebut melaporkan No such file or directory, lalu WARNING: 1 listed file could not be read. Kondisi ini terlihat seperti unduhan yang rusak, padahal bukan. Label hanya berfungsi sebagai nama. Hash adalah bagian yang memberikan jaminan.
Pahami dengan jelas hal yang dibuktikan oleh pemeriksaan ini. Biner dan hash berasal dari vendor yang sama melalui koneksi yang sama. Jadi, kecocokan hash membuktikan bahwa unduhan selesai dan tidak rusak atau diubah selama transmisi. Pemeriksaan ini tidak membuktikan bahwa vendor tersebut tepercaya. Itu adalah masalah yang berbeda, dan tidak ada perintah sha256sum yang dapat menyelesaikannya.
sudo install -o root -g root -m 755 minio /usr/local/bin/minio
minio --versionminio --version mencetak minio version RELEASE.2025-09-07T16-13-09Z, diikuti beberapa baris build. Permission denied di sini berarti modenya salah, sedangkan command not found berarti /usr/local/bin tidak ada di PATH Anda.
Buat pengguna sistem dan direktori data
MinIO menerima unggahan dari jaringan, sehingga tidak boleh dijalankan sebagai root. Berikan MinIO akun tanpa direktori home dan tanpa shell login.
sudo groupadd -r minio-user
sudo useradd -M -r -g minio-user -s /usr/sbin/nologin minio-user
sudo mkdir -p /var/lib/minio/data
sudo chown -R minio-user:minio-user /var/lib/minio
sudo chmod 750 /var/lib/minio-r membuat akun sistem dengan UID di bawah 1000, sehingga akun tersebut tidak berada dalam rentang yang digunakan untuk pengguna biasa. -M melewati pembuatan direktori home karena akun yang tidak pernah login tidak memerlukan direktori tersebut. Periksa hasilnya dengan id minio-user dan stat -c '%U %a' /var/lib/minio, yang seharusnya menampilkan minio-user 750.
Direktori data harus dapat ditulisi oleh pengguna tersebut, bukan hanya dibaca. Saat pertama kali dijalankan, MinIO membuat direktori .minio.sys di dalam volume untuk menyimpan konfigurasinya sendiri. Karena itu, direktori yang dimiliki root membuat MinIO berhenti saat startup dengan pesan yang diakhiri permission denied. Aturan yang sama berlaku untuk setiap service yang Anda jalankan dengan cara ini. Pengguna service dengan hak akses minimum pada VPS membahasnya secara lebih lengkap.
Masukkan kredensial root ke file environment
Kredensial root dapat membuka setiap bucket, sehingga kredensial tersebut tidak boleh disimpan dalam unit file yang dapat dibaca semua pengguna. Buat file dengan mode yang benar terlebih dahulu, lalu tulis isinya. Dengan demikian, password tidak pernah berada dalam file yang dapat dibaca, bahkan untuk sesaat.
sudo install -o root -g root -m 600 /dev/null /etc/default/minio
printf 'MINIO_ROOT_USER=minio-root\nMINIO_ROOT_PASSWORD=%s\nMINIO_VOLUMES="/var/lib/minio/data"\nMINIO_OPTS="--address 127.0.0.1:9000 --console-address 127.0.0.1:9001"\n' "$(openssl rand -base64 24)" | sudo tee /etc/default/minio > /dev/null
sudo sed -n 's/^MINIO_ROOT_PASSWORD=//p' /etc/default/miniotee mengosongkan file yang sudah ada, bukan membuatnya ulang. Karena itu, mode tetap 600 dan pemilik tetap root. Hal ini memang disengaja. systemd membaca EnvironmentFile sebagai root sebelum menurunkan hak akses ke User=. Dengan demikian, akun service tidak perlu membaca kredensialnya sendiri. Setelah service berjalan, buktikan dengan sudo -u minio-user cat /etc/default/minio. Perintah tersebut harus menampilkan Permission denied.
Ada dua perilaku MinIO yang perlu diketahui sebelum Anda menjalankannya. Jika tidak ada MINIO_ROOT_USER dan MINIO_ROOT_PASSWORD di environment-nya, MinIO tidak menolak untuk berjalan. MinIO berjalan menggunakan kredensial default yang didokumentasikan, yaitu minioadmin:minioadmin. Kredensial tersebut adalah pasangan pertama yang dicoba oleh scanner, meskipun MinIO terlihat sepenuhnya sehat saat menggunakannya. Password dengan panjang kurang dari 8 karakter akan ditolak. MinIO keluar saat startup dan menampilkan error bahwa kredensial tidak valid, karena access key memerlukan sedikitnya 3 karakter dan secret key sedikitnya 8 karakter.
MINIO_VOLUMES adalah path data, sedangkan MINIO_OPTS berisi flag. Binding ke 127.0.0.1 berarti tidak ada pihak di luar VPS ini yang dapat mengakses API S3 untuk saat ini. Ini adalah default yang tepat. Anda dapat membukanya nanti secara sengaja melalui proxy yang memiliki sertifikat.
Tulis unit systemd
Buat /etc/systemd/system/minio.service:
[Unit]
Description=MinIO object storage
Documentation=https://github.com/minio/minio
Wants=network-online.target
After=network-online.target
[Service]
User=minio-user
Group=minio-user
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_VOLUMES $MINIO_OPTS
Restart=always
RestartSec=5
LimitNOFILE=65536
NoNewPrivileges=true
[Install]
WantedBy=multi-user.targetTidak ada awalan - pada EnvironmentFile, dan ini merupakan keputusan, bukan kesalahan pengetikan. Dengan tanda hubung tersebut, systemd mengabaikan file yang tidak ada dan tetap menjalankan MinIO. Akibatnya, file yang terhapus atau path yang salah ketik dapat secara diam-diam membuat server berjalan dengan minioadmin:minioadmin. Tanpa tanda hubung, file yang tidak ada membuat unit gagal sebelum MinIO dijalankan, dan journalctl -u minio menampilkan Failed to load environment files: No such file or directory. Unit yang menolak untuk start jauh lebih mudah diketahui daripada server yang diam-diam menerima kata sandi default.
$MINIO_VOLUMES dan $MINIO_OPTS sengaja tidak diberi tanda kutip karena systemd memisahkan variabel tanpa tanda kutip berdasarkan spasi menjadi argumen terpisah. Dengan cara ini, empat kata dalam MINIO_OPTS menjadi empat argumen untuk minio server. LimitNOFILE=65536 menaikkan batas file descriptor karena setiap koneksi terbuka dan setiap file data terbuka menggunakan satu descriptor, sedangkan nilai default 1024 akan habis saat beban meningkat.
sudo systemctl daemon-reload
sudo systemctl enable --now minio
systemctl is-active minio
curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:9000/minio/health/liveis-active seharusnya menampilkan active, dan endpoint health seharusnya menjawab 200. journalctl -u minio -n 20 --no-pager menampilkan alamat API tempat server menerima koneksi. Jika unit terus melakukan restart, systemd akan berhenti mencoba dan mencatat Start request repeated too quickly. Artinya, MinIO keluar pada setiap percobaan. Penyebabnya tercetak pada baris sebelum pesan tersebut, jadi baca log ke arah atas.
Untuk isolasi yang lebih baik, tambahkan ProtectSystem=full dan ProtectHome=true ke bagian [Service]. Keduanya memerlukan mount namespace dari kernel host. Pada virtualisasi container yang menggunakan kernel host bersama, seperti OpenVZ atau LXC, keduanya dapat gagal, lalu unit melaporkan status=226/NAMESPACE. Hapus kedua baris tersebut agar unit dapat start. Unit ini sendiri merupakan unit biasa, dan service dan timer systemd pada VPS membahas direktif lainnya.
Instal mc dan buktikan alur pulang-pergi
Klien MinIO adalah mc. Jangan menginstalnya dengan apt install mc. Paket tersebut adalah Midnight Commander, yaitu file manager yang tidak terkait dengan MinIO.
cd /tmp
curl -fsSL https://dl.min.io/client/mc/release/linux-amd64/mc -o mc
curl -fsSL https://dl.min.io/client/mc/release/linux-amd64/mc.sha256sum -o mc.sha256sum
[ "$(awk '{print $1}' mc.sha256sum)" = "$(sha256sum mc | awk '{print $1}')" ] && echo "checksum ok"
sudo install -o root -g root -m 755 mc /usr/local/bin/mcDaftarkan server sebagai alias, lalu pindahkan sebuah objek melalui server tersebut.
MINIO_PASS=$(sudo sed -n 's/^MINIO_ROOT_PASSWORD=//p' /etc/default/minio)
mc alias set local http://127.0.0.1:9000 minio-root "$MINIO_PASS"
mc mb local/backups
echo "hello object storage" > /tmp/hello.txt
mc cp /tmp/hello.txt local/backups/hello.txt
mc ls local/backups
mc cat local/backups/hello.txtmc ls harus menampilkan hello.txt beserta ukurannya, dan mc cat harus mencetak hello object storage. Alur pulang-pergi ini adalah bukti nyata bahwa server berfungsi, karena proses tersebut menggunakan signed request S3 yang sama seperti yang akan digunakan klien lain. mc admin info local menampilkan status server jika Anda ingin melakukan pemeriksaan tambahan.
Lakukan satu pemeriksaan lagi sekarang, saat server masih kosong.
mc alias set defaultcheck http://127.0.0.1:9000 minioadmin minioadminPerintah ini harus gagal. Jika berhasil, file environment tidak pernah diteruskan ke proses dan server Anda berjalan dengan kredensial default. Perbaiki hal tersebut sebelum ada proses lain yang mengakses mesin.
mc menyimpan alias dalam ~/.mc/config.json sebagai teks biasa, sehingga kredensial tersebut berada di direktori home pengguna yang menjalankan perintah. Menjalankan mc dengan sudo menempatkan kredensial root di /root/.mc/config.json. Simpan alias root pada satu akun administrator dan berikan setiap aplikasi kuncinya sendiri.
Bagikan satu objek dengan URL yang telah ditandatangani
URL yang telah ditandatangani adalah tautan HTTPS biasa yang dilengkapi tanda tangan dan waktu kedaluwarsa. Siapa pun yang memiliki tautan tersebut dapat mengambil satu objek itu tanpa akun dan tanpa client.
mc share download --expire 12h local/backups/hello.txtOutput tersebut memuat X-Amz-Signature dan X-Amz-Expires dalam query string. Ada dua hal yang sering mengejutkan pengguna. Tautan dibuat berdasarkan endpoint pada alias yang Anda gunakan. Jadi, alias pada 127.0.0.1 menghasilkan tautan yang hanya dapat dibuka oleh mesin ini. Buat alias kedua pada hostname publik Anda untuk tautan yang akan dibagikan. Selain itu, tidak ada tombol pencabutan. Tanda tangan tetap valid sampai kedaluwarsa. Karena itu, waktu kedaluwarsa yang singkat adalah satu-satunya kontrol yang tersedia. Tujuh hari adalah batas maksimum yang diizinkan oleh format tanda tangan S3.
Beri restic key dan bucket khusus
Kredensial root dapat membaca dan menghapus setiap bucket, sehingga backup job tidak boleh menggunakannya. Buat bucket, policy yang cakupannya dibatasi ke bucket tersebut, dan user yang tidak memperoleh akses lain.
mc mb local/restic
cat > /tmp/restic-rw.json <<'EOF'
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::restic"]
},
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
"Resource": ["arn:aws:s3:::restic/*"]
}
]
}
EOF
RESTIC_KEY=$(openssl rand -base64 24)
mc admin policy create local restic-rw /tmp/restic-rw.json
mc admin user add local restic-backup "$RESTIC_KEY"
mc admin policy attach local restic-rw --user restic-backupMinIO menyediakan policy bawaan readwrite yang akan menghemat satu perintah, tetapi policy tersebut memberikan akses penuh ke setiap bucket di server. Policy di atas sengaja menyebut bucket dua kali: pertama sebagai arn:aws:s3:::restic agar bucket dapat dicantumkan, dan kedua sebagai arn:aws:s3:::restic/* untuk objek di dalamnya. Dalam S3, bucket dan objeknya merupakan resource terpisah. Karena itu, policy yang hanya menyebut salah satunya akan gagal dengan cara yang terlihat seperti client yang rusak.
Uji pembatasan tersebut sebelum mengandalkannya.
mc alias set resticuser http://127.0.0.1:9000 restic-backup "$RESTIC_KEY"
mc ls resticuser/restic
mc ls resticuser/backupsPerintah ls pertama berhasil dan perintah kedua gagal dengan Access Denied. Policy yang belum diuji hanyalah perkiraan.
Sekarang arahkan restic ke bucket tersebut. restic membaca kredensial S3 dari environment variable AWS standar, sehingga tidak ada file kredensial khusus restic yang digunakan.
sudo apt install -y restic
export AWS_ACCESS_KEY_ID=restic-backup
export AWS_SECRET_ACCESS_KEY="$RESTIC_KEY"
restic -r s3:http://127.0.0.1:9000/restic init
restic -r s3:http://127.0.0.1:9000/restic backup /etc
restic -r s3:http://127.0.0.1:9000/restic snapshotsrestic init meminta password repository. Password tersebut mengenkripsi repository, sehingga MinIO hanya menyimpan ciphertext. Jika password hilang, backup juga tidak dapat dipulihkan. Proses yang dijalankan oleh timer systemd tidak memiliki terminal untuk menerima input, sehingga atur RESTIC_PASSWORD_FILE ke file mode 600 untuk backup terjadwal.
Ada satu aturan penempatan yang lebih penting daripada perintah apa pun di atas. Repository restic pada VPS yang sama dengan data yang dilindunginya hanya melindungi Anda dari rm yang buruk, bukan dari kegagalan lainnya. Node MinIO harus berada di mesin yang berbeda, idealnya di region yang berbeda. backup restic pada VPS membahas penjadwalan dan retensi berdasarkan konfigurasi ini.
Terminasi TLS dengan nginx
MinIO berjalan pada localhost, sehingga nginx menjadi permukaan publik. Terbitkan sertifikat terlebih dahulu, seperti yang dijelaskan dalam Sertifikat Let's Encrypt dengan certbot dan nginx, lalu gunakan server block berikut.
server {
listen 443 ssl;
server_name s3.example.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;
}
}Beberapa baris tersebut sangat penting. client_max_body_size 0 menghapus batas ukuran body default sebesar 1 MB. Tanpa pengaturan ini, upload yang lebih besar akan ditolak dengan 413 Request Entity Too Large sebelum MinIO menerima request tersebut. proxy_request_buffering off meneruskan upload secara langsung, karena konfigurasi default menyimpan seluruh request ke file sementara terlebih dahulu. Akibatnya, object berukuran besar membutuhkan ruang disk dua kali lipat. proxy_set_header Host $http_host adalah bagian yang paling sulit terlihat: tanda tangan S3 mencakup header Host. Proxy yang menulis ulang header tersebut membuat setiap request gagal dengan SignatureDoesNotMatch, meskipun access log menunjukkan request normal telah diterima.
Beri tahu MinIO nama publiknya agar link yang dihasilkannya mengarah ke proxy, bukan ke localhost.
echo 'MINIO_SERVER_URL=https://s3.example.com' | sudo tee -a /etc/default/minio
sudo systemctl restart minioKonfigurasi firewall tetap sederhana. Izinkan SSH dan HTTPS. Jangan buat rule untuk port 9000 dan 9001. Alamat yang terikat ke 127.0.0.1 tidak dapat dijangkau dari mesin lain, apa pun konfigurasi firewall. Dasar-dasar firewall ufw pada VPS berisi perintahnya.
Kapan MinIO single-node sudah memadai dan kapan Anda memerlukan S3 sungguhan
Single-node di sini berarti satu drive tanpa parity. Dokumentasi MinIO sendiri menjelaskan bahwa tata letak ini cocok untuk pengujian dan workload kecil yang tidak memiliki persyaratan availability. Tidak ada salinan kedua di dalam deployment, sehingga durability setiap object bergantung pada durability disk satu VPS. Fitur yang mengasumsikan backend distributed erasure-coded, termasuk bucket replication dan object locking, ditujukan untuk deployment dengan banyak drive. Karena itu, jangan menjanjikan kebijakan immutable retention kepada siapa pun pada setup ini.
Setup ini cocok sebagai target restic pada VPS kedua di region lain dan sebagai endpoint S3 untuk pekerjaan development serta artifact CI, ketika kehilangan sebuah bucket hanya mengharuskan Anda melakukan rebuild. Setup ini juga cukup sesuai untuk upload pengguna pada aplikasi kecil, selama Anda memiliki recovery plan dan benar-benar telah menguji proses restore.
Pilih managed S3 ketika kontrak atau regulator meminta object lock atau durability multi-region, atau ketika Anda tidak ingin menjadi orang yang menerima pager pada pukul 03:00 karena disk penuh. Build yang dibekukan juga merupakan alasan yang valid. Per Juli 2026, binary komunitas yang telah dikompilasi sebelumnya berasal dari September 2025 dan tidak menerima perbaikan. Menjalankannya berarti menerima kondisi tersebut, atau melakukan build dari source dan mengikuti perkembangan project sendiri.
Ada satu batasan yang perlu ditegaskan karena sering ditanyakan. Object storage bukan database. Setiap write mengganti seluruh object, sehingga file SQL yang aktif pada bucket S3 akan lambat dan tidak aman. Simpan database pada local disk, lalu backup database tersebut ke bucket: menjalankan SQLite di production pada VPS menjelaskan pemisahan tersebut.
Mode kegagalan dan pesan yang akan Anda lihat
Unit gagal segera setelah systemctl enable --now. Baca journalctl -u minio -n 30 --no-pager. Failed to load environment files: No such file or directory berarti /etc/default/minio tidak ada atau path-nya salah eja dalam unit. Pesan yang diakhiri dengan permission denied berarti direktori data tidak dapat ditulis oleh akun service. Karena itu, periksa apakah stat -c '%U' /var/lib/minio/data menampilkan minio-user.
minioadmin:minioadmin masih dapat login. File environment tidak pernah diteruskan ke proses. Pastikan unit berisi EnvironmentFile=/etc/default/minio, jalankan sudo systemctl daemon-reload, lalu restart service. MinIO membaca kredensial root sekali saat startup. Jadi, mengedit file tersebut tanpa melakukan restart tidak mengubah apa pun.
Address already in use saat startup. Proses lain menggunakan port 9000. Cari proses tersebut dengan sudo ss -ltnp | grep :9000 sebelum mengubah port MinIO.
Upload berukuran lebih dari 1 MB gagal melalui proxy. nginx mengembalikan 413 Request Entity Too Large dan MinIO tidak pernah menerima request tersebut. Atur client_max_body_size 0 di server block.
SignatureDoesNotMatch. Secret key salah, atau sesuatu di antara client dan MinIO menulis ulang header Host yang tercakup dalam signature.
RequestTimeTooSkewed. Jam pada client atau server salah. Setiap request S3 membawa timestamp dan ditolak jika berada di luar rentang 15 menit. Periksa timedatectl dan pastikan sinkronisasi waktu aktif.
Access Denied pada bucket yang Anda ketahui ada. Key tersebut dibatasi untuk bucket lain. Tampilkan izin yang sebenarnya diberikan oleh policy dengan mc admin policy info local restic-rw, lalu bandingkan nama bucket pada baris resource.
FAQ
Apakah MinIO single-node cukup untuk backup sungguhan?
MinIO cukup sebagai target restic yang berjalan pada mesin terpisah dari data yang dilindunginya. Namun, MinIO tidak cukup sebagai satu-satunya salinan. Deployment dengan satu drive tidak memiliki parity, sehingga tidak ada salinan kedua di dalam MinIO. Jika disk VPS tersebut kehilangan data, objek akan hilang. Simpan target kedua di lokasi lain, lalu lakukan pemulihan dari keduanya setidaknya sekali untuk memastikan prosesnya berfungsi.
Mengapa sha256sum -c gagal memeriksa file checksum MinIO?
Karena label setelah hash di dalam file tersebut berisi nama release, minio.RELEASE.2025-09-07T16-13-09Z, sedangkan file yang Anda unduh biasanya bernama minio. sha256sum -c mencari file dengan nama yang tertulis di dalam file checksum, tetapi tidak menemukannya, lalu melaporkan No such file or directory dan WARNING: 1 listed file could not be read. Unduhan tersebut tidak bermasalah. Bandingkan string hash secara langsung dan abaikan labelnya karena label tidak memiliki makna keamanan.
Ke mana konsol web admin MinIO?
MinIO menghapus fitur administrasi dari konsol edisi komunitas pada May 2025. Antarmuka web tersebut kini hanya menyediakan object browser. Bucket dan user sekarang dikelola dengan client mc menggunakan perintah seperti mc admin user add dan mc admin policy attach. Cara tersebut merupakan jalur yang didukung pada edisi komunitas, bukan workaround. Karena itu, panduan ini melakukan semuanya dari command line.
Bagaimana cara mengarahkan restic ke MinIO sebagai backend S3?
Atur AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY ke access key MinIO dan secret-nya, lalu gunakan string repository dengan format s3:https://s3.example.com/restic. Elemen path terakhir adalah nama bucket. Buat bucket terlebih dahulu dengan mc mb karena key yang dibatasi ke satu bucket tidak memiliki izin untuk membuat bucket. restic mengenkripsi semuanya dengan password repository miliknya sendiri sebelum upload. Dengan demikian, MinIO menyimpan ciphertext dan tidak pernah melihat file Anda.
Apakah MinIO harus dijalankan di belakang nginx?
Anda memerlukan TLS (transport layer security) jika client tidak berada pada mesin yang sama. Kredensial S3 dan data objek sama-sama dikirim di dalam request. Proxy pada port 443 dengan sertifikat dari certbot adalah cara paling sederhana untuk mendapatkannya. Cara ini juga membuat pembaruan sertifikat tidak perlu ditangani oleh MinIO. MinIO juga dapat melakukan terminasi TLS sendiri jika Anda mengarahkan --certs-dir ke direktori yang berisi public.crt dan private.key. Namun, service account memerlukan akses baca ke private key yang telah diperbarui. Ini menambah pekerjaan untuk hasil yang sama.