Cara Menjalankan MinIO di VPS Ubuntu 24.04
Jalankan MinIO di satu VPS Ubuntu 24.04 dengan binary terverifikasi, systemd, mc, URL presigned, dan target pencadangan restic melalui API S3 milik Anda.
Apa yang Anda dapatkan dari penyimpanan objek yang di-host sendiri dengan MinIO
MinIO adalah penyimpanan objek yang di-host sendiri dan mendukung API Amazon S3. Arahkan restic atau SDK S3 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 untuk menyimpan cadangan dari restic.
S3 (simple storage service) adalah API HTTP, bukan sistem berkas. Anda melakukan PUT objek ke dalam bucket menggunakan key, lalu mengambilnya kembali dengan GET. Tidak ada penulisan parsial dan tidak ada penggantian nama. Alat pencadangan menyukai model ini karena suatu objek tiba secara utuh atau tidak tiba sama sekali.
Satu node menyimpan satu salinan data Anda. Itulah kompromi yang Anda pilih. Anda mendapatkan endpoint S3 yang dapat dikendalikan dengan biaya VPS, tetapi Anda juga mengambil alih semua pekerjaan yang sebelumnya dilakukan penyedia cloud, mulai dari mengganti disk yang gagal hingga melakukan patch pada perangkat lunak server. Bagian menjelang akhir menjelaskan secara langsung kapan kompromi ini merupakan pilihan yang tepat.
Status MinIO Community Edition pada Juli 2026
Baca bagian ini sebelum menggunakannya sebagai dasar, karena situasinya baru-baru ini berubah. Pada Mei 2025, MinIO menghapus fitur administrasi dari konsol web pada community edition. Yang tersisa di browser adalah browser objek. Karena itu, bucket dan access key dikelola dengan klien baris perintah mc.
Kemudian pada 2025, MinIO berhenti menerbitkan biner community edition yang telah dikompilasi. README proyek kini menyatakan bahwa community edition hanya didistribusikan sebagai kode sumber. URL unduhan lama masih berfungsi. Per Juli 2026, URL tersebut menyediakan build server RELEASE.2025-09-07T16-13-09Z dan build client RELEASE.2025-08-13T08-35-41Z, dan belum ada build community yang lebih baru. Jadi, biner di bawah ini benar-benar tersedia dan dapat dijalankan, tetapi versinya tidak berubah. Perbaikan keamanan yang diterbitkan setelah September 2025 tidak termasuk di dalamnya.
Fakta tersebut menentukan bagian lain dari panduan ini. Karena itu, MinIO di sini mendengarkan pada 127.0.0.1 dan hanya mengakses internet melalui proxy yang Anda kendalikan. Jika Anda ingin mengikuti perbaikan terbaru, lakukan build dari kode sumber. README vendor memberikan satu perintah, go install github.com/minio/minio@latest, yang memerlukan toolchain Go dan menulis biner ke ~/go/bin/minio. Instal biner tersebut ke /usr/local/bin/minio. Semua langkah lainnya di sini tetap sama.
Instal biner MinIO dan verifikasi unduhan
Unduh rilis yang ditetapkan dan checksum yang dipublikasikan. Flag -f membuat curl gagal saat terjadi kesalahan HTTP, bukan menyimpan halaman kesalahan dengan nama yang Anda minta. Tanpa opsi ini, Anda dapat memasang halaman 404 lalu bingung karena berkas 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, dan bandingkan hanya hash-nya.
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 di dalam berkas tersebut adalah minio.RELEASE.2025-09-07T16-13-09Z, sedangkan kita menyimpan unduhan sebagai minio. Karena itu, -c mencari berkas 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 tersebut hanya 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 lengkap dan tidak rusak atau diubah selama transmisi. Pemeriksaan ini tidak membuktikan bahwa vendor dapat dipercaya. 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 dalam konteks ini berarti modenya salah, sedangkan command not found berarti /usr/local/bin tidak ada di PATH Anda.
Membuat pengguna sistem dan direktori data
MinIO menerima unggahan dari jaringan, sehingga tidak boleh berjalan 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. Dengan demikian, 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. Pada saat pertama kali dijalankan, MinIO membuat direktori .minio.sys di dalam volume untuk menyimpan konfigurasinya sendiri. Karena itu, direktori yang dimiliki root membuat MinIO keluar saat startup dengan pesan yang diakhiri permission denied. Aturan yang sama berlaku untuk setiap layanan yang Anda jalankan dengan cara ini. pengguna layanan dengan hak akses minimum pada VPS membahasnya secara tepat.
Masukkan kredensial root ke dalam file lingkungan
Kredensial root dapat mengakses setiap bucket, sehingga kredensial tersebut tidak boleh ditempatkan di unit file yang dapat dibaca semua pengguna. Buat file dengan mode yang benar terlebih dahulu, lalu tuliskan isinya. Dengan demikian, kata sandi 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 memotong file yang sudah ada, bukan membuatnya ulang. Karena itu, modenya tetap 600 dan pemiliknya tetap root. Hal ini disengaja. systemd membaca EnvironmentFile sebagai root sebelum menurunkan hak akses ke User=. Artinya, akun layanan tidak perlu membaca kredensialnya sendiri. Setelah layanan berjalan, buktikan dengan sudo -u minio-user cat /etc/default/minio. Perintah tersebut harus menampilkan Permission denied.
Sebelum memulainya, Anda perlu mengetahui 2 perilaku MinIO. Jika tidak ada MINIO_ROOT_USER dan MINIO_ROOT_PASSWORD di lingkungannya, MinIO tidak menolak untuk berjalan. MinIO berjalan dengan kredensial default yang didokumentasikan, yaitu minioadmin:minioadmin. Kredensial ini adalah pasangan pertama yang dicoba oleh pemindai, dan MinIO tampak sepenuhnya sehat saat menggunakannya. Kata sandi yang panjangnya kurang dari 8 karakter akan ditolak. MinIO keluar saat startup dan menampilkan kesalahan yang menyatakan bahwa kredensial tidak valid, karena access key memerlukan sedikitnya 3 karakter dan secret key sedikitnya 8 karakter.
MINIO_VOLUMES adalah jalur data, sedangkan MINIO_OPTS berisi flag. Mengikat layanan ke 127.0.0.1 berarti tidak ada pihak di luar VPS ini yang dapat mengakses S3 API untuk saat ini. Ini adalah default yang tepat. Anda dapat membukanya nanti secara sengaja melalui proxy yang memegang 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. Ini disengaja, bukan kesalahan ketik. 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 menjalankan server dengan minioadmin:minioadmin. Tanpa tanda hubung tersebut, file yang tidak ada akan 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 dijalankan 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 demikian, empat kata dalam MINIO_OPTS menjadi empat argumen untuk minio server. LimitNOFILE=65536 meningkatkan batas deskriptor file, karena setiap koneksi terbuka dan setiap file data terbuka menggunakan satu deskriptor. 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 kesehatan seharusnya merespons 200. journalctl -u minio -n 20 --no-pager menampilkan alamat API tempat server mendengarkan. Jika unit terus dijalankan ulang, systemd akan berhenti mencoba dan mencatat Start request repeated too quickly. Artinya, MinIO keluar pada setiap percobaan. Alasannya tercetak pada baris sebelum pesan tersebut, jadi baca ke atas.
Untuk isolasi yang lebih ketat, tambahkan ProtectSystem=full dan ProtectHome=true ke bagian [Service]. Keduanya memerlukan namespace mount dari kernel host. Pada virtualisasi container yang berbagi kernel host, seperti OpenVZ atau LXC, keduanya dapat gagal. Dalam kondisi tersebut, unit melaporkan status=226/NAMESPACE. Hapus kedua baris tersebut agar unit dapat dijalankan. Unit ini sendiri adalah unit biasa, dan layanan serta 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 pengelola berkas 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 objek melaluinya.
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 merupakan bukti nyata bahwa server berfungsi, karena proses tersebut membuat permintaan S3 bertanda tangan yang sama seperti yang akan dibuat oleh klien lain. mc admin info local menampilkan status server jika Anda menginginkan pemeriksaan tambahan.
Lakukan satu pemeriksaan lagi sekarang, saat mesin masih kosong.
mc alias set defaultcheck http://127.0.0.1:9000 minioadmin minioadminPerintah ini harus gagal. Jika berhasil, berkas lingkungan tidak pernah diteruskan ke proses dan server Anda berjalan menggunakan kredensial default. Perbaiki hal tersebut sebelum komponen lain mengakses mesin.
mc menyimpan alias di ~/.mc/config.json dalam bentuk teks biasa, sehingga kredensial tersebut berada di direktori home pengguna yang menjalankan perintah. Menjalankan mc menggunakan 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 sebelumnya
URL yang telah ditandatangani sebelumnya adalah tautan HTTPS biasa dengan tanda tangan dan masa berlaku. Siapa pun yang memiliki tautan tersebut dapat mengambil satu objek itu tanpa akun dan tanpa klien.
mc share download --expire 12h local/backups/hello.txtOutput tersebut memuat X-Amz-Signature dan X-Amz-Expires dalam string kueri. Ada dua hal yang sering mengejutkan pengguna. Tautan dibuat berdasarkan endpoint dalam alias yang Anda gunakan. Karena itu, alias pada 127.0.0.1 menghasilkan tautan yang hanya dapat dibuka oleh mesin ini. Buat alias kedua pada hostname publik untuk tautan yang ingin Anda bagikan. Selain itu, tidak ada tombol pencabutan. Tanda tangan tetap valid sampai masa berlakunya berakhir. Jadi, masa berlaku yang singkat adalah satu-satunya kontrol yang tersedia. Tujuh hari adalah batas maksimum yang diizinkan oleh format tanda tangan S3.
Beri restic kunci dan bucket khusus
Kredensial root dapat membaca dan menghapus setiap bucket, sehingga tugas pencadangan tidak boleh menggunakannya. Buat bucket, kebijakan yang dibatasi untuk bucket tersebut, dan pengguna yang tidak memperoleh akses lainnya.
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 kebijakan bawaan readwrite yang seharusnya menghemat satu perintah, tetapi kebijakan itu memberikan akses penuh ke setiap bucket di server. Kebijakan di atas menyebut nama bucket dua kali dengan sengaja: sekali sebagai arn:aws:s3:::restic agar bucket dapat dicantumkan, dan sekali sebagai arn:aws:s3:::restic/* untuk objek di dalamnya. Dalam S3, bucket dan objeknya merupakan resource terpisah, sehingga kebijakan yang hanya menyebut salah satunya akan gagal dengan cara yang tampak seperti klien 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/backupsls pertama berhasil dan yang kedua gagal dengan Access Denied. Kebijakan yang belum diuji hanyalah dugaan.
Sekarang arahkan restic ke bucket tersebut. restic membaca kredensial S3 dari variabel lingkungan 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 kata sandi repositori. Kata sandi tersebut mengenkripsi repositori, sehingga MinIO hanya menyimpan ciphertext, dan kehilangan kata sandi berarti kehilangan cadangan. Proses yang dijalankan oleh timer systemd tidak memiliki terminal untuk menerima input, jadi atur RESTIC_PASSWORD_FILE ke file mode 600 untuk pencadangan terjadwal.
Ada satu aturan penempatan yang lebih penting daripada perintah mana pun di atas. Repositori restic pada VPS yang sama dengan data yang dilindunginya hanya melindungi Anda dari rm yang buruk, bukan dari hal lainnya. Node MinIO sebaiknya berada di mesin yang berbeda, idealnya di region yang berbeda. pencadangan restic di VPS membahas penjadwalan dan retensi sebagai pelengkap konfigurasi ini.
Mengakhiri TLS dengan nginx
MinIO berjalan di 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 ini.
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 pengaturan default menyimpan seluruh request ke file sementara terlebih dahulu. Akibatnya, object berukuran besar memerlukan ruang disk dua kali lipat. proxy_set_header Host $http_host adalah bagian yang sering terlewat: tanda tangan S3 mencakup header Host. Proxy yang menulis ulang header tersebut menyebabkan setiap request gagal dengan SignatureDoesNotMatch, meskipun access log menunjukkan request normal telah diterima.
Beri tahu MinIO nama publiknya agar link yang dibuatnya 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, karena alamat yang terikat ke 127.0.0.1 tidak dapat dijangkau dari mesin lain, apa pun pengaturan 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 tanpa persyaratan ketersediaan. Tidak ada salinan kedua di dalam deployment, sehingga durability setiap objek sama dengan durability satu disk VPS. Fitur yang mengandalkan backend terdistribusi berbasis erasure coding, termasuk replikasi bucket dan penguncian objek, ditujukan untuk deployment dengan beberapa drive. Karena itu, jangan menjanjikan kebijakan retensi yang tidak dapat diubah pada setup ini.
Ini cocok sebagai target restic pada VPS kedua di region lain, serta sebagai endpoint S3 untuk pekerjaan pengembangan dan artefak CI, ketika kehilangan bucket hanya mengharuskan Anda menjalankan ulang proses build. Ini juga masuk akal untuk upload pengguna pada aplikasi kecil, selama Anda memiliki rencana pemulihan dan benar-benar telah menguji pemulihan tersebut.
Pilih S3 terkelola ketika kontrak atau regulator mengharuskan object lock atau durability multi-region, atau ketika Anda tidak ingin menjadi orang yang menerima paged pada pukul 03:00 karena disk penuh. Build yang dibekukan adalah alasan valid lainnya. Per July 2026, binary komunitas yang telah dikompilasi sebelumnya berasal dari September 2025 dan tidak menerima perbaikan, sehingga menjalankannya berarti menerima kondisi tersebut, atau melakukan build dari source dan mengikuti perkembangan project itu sendiri.
Ada satu batasan yang perlu disebutkan karena sering muncul. Object storage bukan database. Setiap write menggantikan seluruh objek, sehingga file SQL aktif pada bucket S3 lambat dan tidak aman. Simpan database pada disk lokal dan buat backup ke dalam 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 jalurnya salah eja dalam unit. Pesan yang diakhiri permission denied berarti direktori data tidak dapat ditulisi oleh akun layanan. Karena itu, periksa apakah stat -c '%U' /var/lib/minio/data menampilkan minio-user.
minioadmin:minioadmin masih dapat login. File lingkungan tidak pernah diteruskan ke proses. Pastikan unit berisi EnvironmentFile=/etc/default/minio, jalankan sudo systemctl daemon-reload, lalu mulai ulang layanan. 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 sedang menggunakan port 9000. Cari proses tersebut dengan sudo ss -ltnp | grep :9000 sebelum Anda mengubah port MinIO.
Upload berukuran lebih dari 1 MB gagal melalui proxy. nginx mengirimkan respons 413 Request Entity Too Large dan MinIO tidak pernah menerima permintaan tersebut. Tetapkan client_max_body_size 0 di blok server.
SignatureDoesNotMatch. Kunci rahasia salah, atau sesuatu di antara klien dan MinIO menulis ulang header Host, yang tercakup dalam tanda tangan.
RequestTimeTooSkewed. Waktu pada klien atau server salah. Setiap permintaan S3 membawa stempel waktu dan ditolak jika berada di luar rentang 15 menit. Periksa timedatectl dan pastikan sinkronisasi waktu aktif.
Access Denied pada bucket yang Anda ketahui ada. Kunci tersebut dibatasi untuk bucket yang berbeda. Tampilkan izin yang sebenarnya diizinkan oleh kebijakan dengan mc admin policy info local restic-rw, lalu bandingkan nama bucket dalam baris resource.
FAQ
Apakah MinIO single-node cukup untuk pencadangan nyata?
MinIO cukup sebagai target restic yang berjalan di 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, semua objek akan hilang. Simpan target kedua di lokasi lain, lalu lakukan pemulihan dari kedua target setidaknya satu kali untuk memastikan prosesnya berfungsi.
Mengapa sha256sum -c gagal pada file checksum MinIO?
Karena label setelah hash di dalam file tersebut berisi nama release, yaitu minio.RELEASE.2025-09-07T16-13-09Z, sedangkan file yang diunduh biasanya bernama minio. sha256sum -c mencari file dengan nama yang tertulis di dalam file checksum, tetapi file tersebut tidak ditemukan. Akibatnya, No such file or directory dan WARNING: 1 listed file could not be read dilaporkan. Unduhan tersebut tidak bermasalah. Bandingkan string hash secara langsung dan abaikan labelnya karena label tersebut tidak memiliki makna keamanan.
Ke mana konsol web admin MinIO?
MinIO menghapus fitur administrasi dari konsol edisi komunitas pada Mei 2025. Antarmuka web tersebut kini hanya menyediakan penjelajah objek. Bucket dan pengguna sekarang dikelola dengan klien mc, menggunakan perintah seperti mc admin user add dan mc admin policy attach. Itulah cara yang didukung pada edisi komunitas, bukan solusi sementara. Karena itu, panduan ini melakukan semuanya dari baris perintah.
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 yang terkait. Kemudian gunakan string repositori dalam bentuk s3:https://s3.example.com/restic, dengan elemen path terakhir sebagai nama bucket. Buat bucket terlebih dahulu dengan mc mb, karena key yang dibatasi pada satu bucket tidak memiliki izin untuk membuat bucket. restic mengenkripsi semua data dengan kata sandi repositorinya sendiri sebelum mengunggahnya. Dengan demikian, MinIO menyimpan ciphertext dan tidak pernah melihat file Anda.
Apakah MinIO harus dijalankan di belakang nginx?
Anda memerlukan TLS (transport layer security) setiap kali klien tidak berada di mesin yang sama, karena kredensial S3 dan data objek dikirim di dalam request. Proxy pada port 443 dengan sertifikat dari certbot merupakan cara paling sederhana untuk mendapatkannya. Cara ini juga memisahkan pembaruan sertifikat dari MinIO. MinIO juga dapat menangani terminasi TLS sendiri jika Anda mengarahkan --certs-dir ke direktori yang berisi public.crt dan private.key. Namun, akun layanan kemudian memerlukan akses baca ke private key yang telah diperbarui. Ini menambah pekerjaan untuk hasil yang sama.