SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-08-07

Cara Pasang MinIO di VPS Ubuntu 24.04

Ketahui cara memasang MinIO pada VPS Ubuntu 24.04 untuk storan objek S3 peribadi. Panduan ini merangkumi pemasangan binari, konfigurasi systemd, dan integrasi restic.

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, July 30, 2026.

Kelebihan storan objek layan diri dengan MinIO

MinIO ialah storan objek layan diri yang menggunakan API Amazon S3. Halakan restic atau mana-mana SDK S3 ke pelayan anda sendiri, tukar satu tetapan endpoint, dan klien tidak akan dapat membezakannya. Panduan ini membina satu nod pada Ubuntu 24.04: binari yang disahkan, pengguna sistem khusus, unit systemd yang menyimpan kelayakan root di luar fail unit, dan bucket yang digunakan oleh restic untuk sandaran.

S3 (simple storage service) ialah API HTTP dan bukannya sistem fail. Anda meletakkan (PUT) objek ke dalam bucket di bawah satu key dan mendapatkannya semula (GET), tanpa penulisan separa atau penamaan semula. Alat sandaran menyukai model ini kerana objek sama ada sampai sepenuhnya atau tidak sampai langsung.

Satu nod menyimpan satu salinan data anda. Itulah pertukaran yang anda lakukan. Anda mendapat endpoint S3 yang anda kawal dengan harga sebuah VPS, dan anda juga mewarisi setiap tugas yang dahulunya dilakukan oleh penyedia awan, daripada menggantikan cakera yang rosak sehingga menampal (patch) perisian pelayan. Bahagian di penghujung panduan ini menyatakan dengan jelas bila pertukaran ini berbaloi.

Status edisi komuniti MinIO pada Julai 2026

Baca bahagian ini sebelum anda membinanya, kerana terdapat perubahan baru-baru ini. Pada Mei 2025, MinIO telah membuang ciri pentadbiran daripada konsol web dalam edisi komuniti. Apa yang tinggal dalam pelayar hanyalah pelayar objek, jadi bucket dan kunci akses kini diuruskan menggunakan klien baris perintah mc.

Kemudian pada tahun 2025, MinIO berhenti menerbitkan binari komuniti yang telah dikompilasi. README projek kini menyatakan bahawa edisi komuniti diedarkan sebagai kod sumber sahaja. URL muat turun lama masih berfungsi: setakat Julai 2026, ia menyediakan binaan pelayan RELEASE.2025-09-07T16-13-09Z dan binaan klien RELEASE.2025-08-13T08-35-41Z, dan tiada binaan komuniti yang lebih baharu muncul. Oleh itu, binari di bawah adalah asli dan ia boleh dijalankan, namun ia telah dibekukan. Pembaikan keselamatan yang diterbitkan selepas September 2025 tidak disertakan di dalamnya.

Fakta tersebut membentuk keseluruhan panduan ini. Itulah sebabnya MinIO di sini mendengar pada 127.0.0.1 dan hanya mencapai internet melalui proksi yang anda kawal. Jika anda lebih suka menjejaki pembaikan, bina daripada sumber. README vendor memberikan satu arahan, go install github.com/minio/minio@latest, yang memerlukan rantaian alat Go dan menulis binari tersebut ke ~/go/bin/minio. Pasang binari itu ke /usr/local/bin/minio dan setiap langkah lain di sini kekal tidak berubah.

Pasang binari MinIO dan sahkan muat turun

Muat turun keluaran yang ditetapkan dan checksum yang diterbitkan. Flag -f menyebabkan curl gagal jika berlaku ralat HTTP, bukannya menyimpan halaman ralat di bawah nama yang anda minta. Inilah punca pengguna akhirnya memasang halaman 404 dan tertanya-tanya mengapa ia tidak boleh dilaksanakan.

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.sha256sum

Bandingkan kedua-dua hash tersebut, dan bandingkan hash sahaja.

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 selepas hash di dalam fail tersebut ialah minio.RELEASE.2025-09-07T16-13-09Z, dan kita menyimpan muat turun tersebut sebagai minio, jadi -c mencari fail yang tidak wujud. Ia melaporkan No such file or directory dan kemudian WARNING: 1 listed file could not be read, yang kelihatan seperti muat turun yang rosak sedangkan sebenarnya tidak. Label hanyalah satu nama. Hash adalah bahagian yang membawa jaminan.

Jelaskan perkara yang dibuktikan oleh semakan ini. Binari dan hash datang daripada vendor yang sama melalui sambungan yang sama, jadi padanan membuktikan muat turun adalah lengkap dan tidak rosak atau diubah semasa transit. Ia tidak membuktikan vendor tersebut boleh dipercayai. Itu adalah masalah berbeza dan tiada arahan sha256sum yang dapat menyelesaikannya.

sudo install -o root -g root -m 755 minio /usr/local/bin/minio
minio --version

minio --version mencetak minio version RELEASE.2025-09-07T16-13-09Z diikuti dengan beberapa baris binaan. Permission denied di sini bermaksud mod tidak betul, dan command not found bermaksud /usr/local/bin tidak berada dalam PATH anda.

Cipta pengguna sistem dan direktori data

MinIO menerima muat naik daripada rangkaian, jadi ia tidak sepatutnya dijalankan sebagai root. Berikan ia akaun tanpa direktori home dan tanpa shell log masuk.

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 mencipta akaun sistem dengan UID di bawah 1000, yang mengekalkannya di luar julat yang digunakan untuk pengguna manusia. -M melangkau direktori home, kerana akaun yang tidak pernah log masuk tidak perlu menyimpan apa-apa di dalamnya. Semak hasilnya dengan id minio-user, dan dengan stat -c '%U %a' /var/lib/minio, yang sepatutnya memaparkan minio-user 750.

Direktori data mestilah boleh ditulis oleh pengguna tersebut, bukan sekadar boleh dibaca. Pada permulaan pertama, MinIO mencipta direktori .minio.sys di dalam volum untuk menyimpan konfigurasinya sendiri, jadi direktori yang dimiliki oleh root akan menyebabkan MinIO keluar semasa permulaan dengan mesej yang berakhir dengan permission denied. Peraturan yang sama terpakai untuk setiap servis yang anda jalankan dengan cara ini, dan pengguna servis dengan keistimewaan minimum pada VPS membincangkan perkara ini dengan lebih lanjut.

Letakkan kelayakan root dalam fail persekitaran

Kelayakan root membuka setiap bucket, jadi ia tidak sepatutnya berada dalam unit file yang boleh dibaca oleh semua pengguna. Cipta fail tersebut dengan mod yang betul terlebih dahulu dan tulis kandungannya kemudian, supaya kata laluan tidak terdedah dalam fail yang boleh dibaca walaupun untuk seketika.

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/minio

tee memotong fail sedia ada dan bukannya mencipta semula fail tersebut, jadi mod kekal pada 600 dan pemiliknya kekal sebagai root. Ini dilakukan dengan sengaja. systemd membaca EnvironmentFile sebagai root sebelum ia menurunkan keistimewaan kepada User=, yang bermaksud akaun servis tidak perlu membaca kelayakannya sendiri. Sebaik sahaja servis berjalan, sahkan ia dengan sudo -u minio-user cat /etc/default/minio. Perintah tersebut mesti memaparkan Permission denied.

Dua kelakuan MinIO perlu diketahui sebelum anda memulakannya. Tanpa MINIO_ROOT_USER dan tanpa MINIO_ROOT_PASSWORD dalam persekitarannya, MinIO tidak akan menolak untuk bermula. Ia bermula dengan kelayakan lalai yang didokumentasikan iaitu minioadmin:minioadmin, yang merupakan pasangan pertama yang dicuba oleh mana-mana pengimbas, dan ia kelihatan berfungsi sepenuhnya semasa melakukannya. Kata laluan di bawah 8 aksara akan ditolak sebaliknya: MinIO keluar semasa permulaan dengan ralat yang menyatakan kelayakan tidak sah, kerana kunci akses memerlukan sekurang-kurangnya 3 aksara dan kunci rahsia sekurang-kurangnya 8 aksara.

MINIO_VOLUMES ialah laluan data dan MINIO_OPTS menyimpan flag. Melakukan binding kepada 127.0.0.1 bermakna tiada apa-apa di luar VPS ini yang boleh mencapai API S3 buat masa ini, yang merupakan tetapan lalai yang betul. Anda membukanya secara sengaja kemudian, melalui proksi yang memegang sijil.

Tulis unit systemd

Cipta /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.target

Tiada - di hadapan EnvironmentFile, dan ini adalah keputusan sengaja, bukan kesilapan taip. Dengan tanda sengkang tersebut, systemd mengabaikan fail yang hilang dan tetap memulakan MinIO, jadi fail yang dipadam atau laluan yang salah eja akan menyebabkan pelayan berjalan pada minioadmin:minioadmin secara senyap. Tanpa tanda sengkang, fail yang hilang akan menyebabkan unit gagal sebelum MinIO sempat berjalan, dan journalctl -u minio akan memaparkan Failed to load environment files: No such file or directory. Unit yang enggan bermula adalah jauh lebih mudah dikesan berbanding pelayan yang menerima kata laluan lalai secara senyap.

$MINIO_VOLUMES dan $MINIO_OPTS sengaja tidak diletakkan dalam tanda petikan, kerana systemd memisahkan pemboleh ubah tanpa tanda petikan mengikut ruang putih kepada argumen yang berasingan. Begitulah cara empat perkataan dalam MINIO_OPTS menjadi empat argumen kepada minio server. LimitNOFILE=65536 meningkatkan had deskriptor fail, kerana setiap sambungan terbuka dan setiap fail data terbuka menggunakan satu deskriptor, dan nilai lalai 1024 akan habis di bawah beban kerja.

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/live

is-active sepatutnya mencetak active, dan titik akhir kesihatan (health endpoint) sepatutnya menjawab 200. journalctl -u minio -n 20 --no-pager menunjukkan alamat API yang didengar oleh pelayan. Jika unit terus dimulakan semula, systemd akan berputus asa dan mencatat Start request repeated too quickly, yang bermaksud MinIO keluar pada setiap percubaan: puncanya dicetak pada baris di atas mesej tersebut, jadi baca ke arah atas.

Untuk pengasingan yang lebih baik, tambahkan ProtectSystem=full dan ProtectHome=true ke dalam bahagian [Service]. Kedua-duanya memerlukan ruang nama lekap (mount namespaces) daripada kernel hos. Pada virtualisasi kontena yang berkongsi kernel hos, seperti OpenVZ atau LXC, ia mungkin gagal, dan unit tersebut kemudian akan melaporkan status=226/NAMESPACE. Buang kedua-dua baris tersebut dan ia akan bermula. Unit ini sendiri adalah unit biasa, dan servis dan pemasa systemd pada VPS merangkumi arahan-arahan selebihnya.

Pasang mc dan sahkan pusingan lengkap

MinIO client ialah mc. Jangan pasangnya menggunakan apt install mc. Pakej tersebut ialah Midnight Commander, iaitu pengurus fail yang tiada kaitan 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/mc

Daftarkan pelayan sebagai alias, kemudian 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.txt

mc ls sepatutnya menyenaraikan hello.txt berserta saiznya, dan mc cat sepatutnya mencetak hello object storage. Pusingan lengkap itu adalah bukti sebenar bahawa pelayan berfungsi, kerana ia membuat permintaan S3 bertandatangan yang sama seperti yang akan dibuat oleh mana-mana klien lain. mc admin info local mencetak status pelayan jika anda mahukan pengesahan kedua.

Jalankan satu lagi semakan sekarang, sementara pelayan masih kosong.

mc alias set defaultcheck http://127.0.0.1:9000 minioadmin minioadmin

Perintah ini mesti gagal. Jika ia berjaya, fail persekitaran tidak sampai ke proses tersebut dan pelayan anda sedang berjalan menggunakan kelayakan lalai. Selesaikan perkara itu sebelum sebarang perkara lain menyentuh mesin tersebut.

mc menyimpan alias dalam ~/.mc/config.json dalam bentuk teks biasa, jadi kelayakan tersebut berada dalam direktori home sesiapa sahaja yang menjalankan perintah itu. Menjalankan mc di bawah sudo meletakkan kelayakan root dalam /root/.mc/config.json. Simpan alias root pada satu akaun pentadbir dan berikan setiap aplikasi kunci masing-masing.

Mengedarkan satu objek dengan URL yang telah ditandatangani (presigned URL)

URL yang telah ditandatangani ialah pautan HTTPS biasa yang disertakan dengan tandatangan dan tempoh tamat. Sesiapa sahaja yang memegang pautan tersebut boleh mengambil objek itu tanpa memerlukan akaun atau klien.

mc share download --expire 12h local/backups/hello.txt

Output tersebut membawa X-Amz-Signature dan X-Amz-Expires dalam rentetan pertanyaan (query string). Terdapat dua perkara mengenainya yang mengejutkan pengguna. Pautan dibina daripada endpoint dalam alias yang anda gunakan, jadi alias pada 127.0.0.1 menghasilkan pautan yang hanya boleh dibuka oleh mesin ini: buat alias kedua pada nama hos awam anda untuk pautan yang ingin anda hantar. Selain itu, tiada butang untuk membatalkan pautan tersebut. Tandatangan kekal sah sehingga ia tamat tempoh, jadi tempoh tamat yang singkat adalah satu-satunya kawalan yang anda miliki. Tujuh hari adalah tempoh maksimum yang dibenarkan oleh format tandatangan S3.

Berikan restic kunci dan bucket sendiri

Kredensial root boleh membaca dan memadam setiap bucket, jadi tugasan sandaran (backup) tidak boleh memegangnya. Cipta bucket, polisi yang dihadkan kepada bucket tersebut, dan pengguna yang tidak mempunyai 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-backup

MinIO menyediakan polisi terbina dalam readwrite yang mungkin lebih ringkas, namun ia memberikan akses penuh kepada setiap bucket pada pelayan. Polisi di atas menamakan bucket tersebut dua kali dengan sengaja: sekali sebagai arn:aws:s3:::restic supaya penyenaraian bucket berfungsi, dan sekali sebagai arn:aws:s3:::restic/* untuk objek di dalamnya. Dalam S3, bucket dan objeknya adalah sumber yang berasingan, jadi polisi yang hanya menamakan salah satu daripadanya akan gagal dengan cara yang kelihatan seperti klien yang rosak.

Uji had tersebut sebelum anda mempercayainya.

mc alias set resticuser http://127.0.0.1:9000 restic-backup "$RESTIC_KEY"
mc ls resticuser/restic
mc ls resticuser/backups

ls yang pertama berjaya dan yang kedua gagal dengan Access Denied. Polisi yang belum anda uji hanyalah satu andaian.

Sekarang, halakan restic ke bucket tersebut. restic membaca kredensial S3 daripada pemboleh ubah persekitaran AWS standard, jadi tiada fail kredensial khusus restic yang terlibat.

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 snapshots

restic init meminta kata laluan repositori. Kata laluan itu menyulitkan repositori, jadi MinIO hanya menyimpan teks sifer, dan kehilangan kata laluan bermakna kehilangan sandaran. Pelaksanaan yang dimulakan oleh pemasa systemd tidak mempunyai terminal untuk menaip, jadi tetapkan RESTIC_PASSWORD_FILE kepada fail mod 600 untuk sandaran berjadual.

Satu peraturan penempatan lebih penting daripada mana-mana arahan di atas. Repositori restic pada VPS yang sama dengan data yang dilindunginya hanya melindungi anda daripada rm yang buruk dan tiada yang lain. Nod MinIO sepatutnya berada pada mesin yang berbeza, sebaik-baiknya di wilayah yang berbeza. sandaran restic pada VPS merangkumi penjadualan dan pengekalan di samping perkara ini.

Menamatkan TLS dengan nginx

MinIO berjalan pada localhost, jadi nginx bertindak sebagai permukaan awam. Dapatkan sijil terlebih dahulu seperti yang diterangkan dalam Sijil Let's Encrypt dengan certbot dan nginx, kemudian gunakan blok server 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 adalah kritikal. client_max_body_size 0 membuang had saiz badan 1 MB lalai, yang jika tidak, akan menolak sebarang muat naik yang lebih besar dengan 413 Request Entity Too Large sebelum MinIO melihat permintaan tersebut. proxy_request_buffering off menstrim muat naik secara terus, kerana tetapan lalai akan menyimpan keseluruhan permintaan ke dalam fail sementara terlebih dahulu, dan objek yang besar akan memerlukan ruang cakera dua kali ganda. proxy_set_header Host $http_host adalah tetapan yang penting: tandatangan S3 merangkumi header Host, jadi proksi yang menulis semula header tersebut akan menyebabkan setiap permintaan gagal dengan SignatureDoesNotMatch manakala log akses menunjukkan permintaan biasa sampai.

Beritahu MinIO nama awamnya juga, supaya pautan yang dijana menghala ke proksi dan bukannya ke localhost.

echo 'MINIO_SERVER_URL=https://s3.example.com' | sudo tee -a /etc/default/minio
sudo systemctl restart minio

Firewall kekal ringkas. Benarkan SSH dan HTTPS, dan jangan buat sebarang peraturan untuk port 9000 dan 9001, kerana alamat yang terikat pada 127.0.0.1 tidak boleh dicapai dari mesin lain tidak kira apa pun peraturan firewall. Asas firewall ufw pada VPS mengandungi arahan tersebut.

Bilakah MinIO nod tunggal mencukupi, dan bilakah anda memerlukan S3 sebenar

Nod tunggal di sini bermaksud satu pemacu dengan sifar pariti. Dokumentasi MinIO sendiri menyifatkan susun atur ini sesuai untuk ujian dan beban kerja kecil yang tidak mempunyai keperluan ketersediaan. Tiada salinan kedua di dalam penempatan tersebut, jadi ketahanan setiap objek adalah ketahanan satu cakera VPS. Ciri-ciri yang mengandaikan backend erasure-coded teragih, antaranya replikasi bucket dan penguncian objek, tergolong dalam penempatan berbilang pemacu, jadi jangan menjanjikan sesiapa polisi pengekalan yang tidak boleh diubah pada persediaan ini.

Ia merupakan sasaran restic yang baik pada VPS kedua di rantau lain, dan sebagai endpoint S3 untuk kerja pembangunan serta artifak CI, di mana kehilangan bucket hanya menyebabkan anda perlu membina semula dan tiada kesan lain. Ia juga munasabah untuk muat naik pengguna dalam aplikasi kecil, selagi anda memiliki pelan pemulihan dan anda benar-benar telah menguji pemulihan tersebut.

Pilih S3 terurus apabila kontrak atau pengawal selia meminta penguncian objek atau ketahanan berbilang rantau, atau apabila anda lebih rela tidak menjadi orang yang dihubungi pada jam 03:00 kerana cakera penuh. Binaan yang dibekukan adalah satu lagi sebab yang jujur. Setakat Julai 2026, binari komuniti yang dipra-kompil bermula dari September 2025 dan tidak menerima sebarang pembaikan, jadi menjalankannya bermaksud menerima keadaan itu, atau membina daripada sumber dan mengikuti perkembangan projek itu sendiri.

Satu sempadan perlu dinyatakan kerana ia sering timbul. Storan objek bukanlah pangkalan data. Setiap penulisan menggantikan keseluruhan objek, jadi fail SQL langsung pada bucket S3 adalah perlahan dan tidak selamat. Simpan pangkalan data pada cakera tempatan dan buat sandaran ke dalam bucket sebaliknya: menjalankan SQLite dalam pengeluaran pada VPS menerangkan pembahagian tersebut.

Mod kegagalan dan mesej yang akan anda lihat

Unit gagal sejurus selepas systemctl enable --now. Baca journalctl -u minio -n 30 --no-pager. Failed to load environment files: No such file or directory bermaksud /etc/default/minio tiada atau laluannya tersalah eja dalam unit tersebut. Mesej yang berakhir dengan permission denied bermaksud direktori data tidak boleh ditulis oleh akaun servis, jadi pastikan stat -c '%U' /var/lib/minio/data memaparkan minio-user.

minioadmin:minioadmin masih boleh log masuk. Fail persekitaran tidak sampai kepada proses tersebut. Sahkan unit mengandungi EnvironmentFile=/etc/default/minio, jalankan sudo systemctl daemon-reload, kemudian mulakan semula servis. MinIO membaca kelayakan root sekali sahaja semasa permulaan, jadi menyunting fail itu tanpa memulakan semula tidak akan mengubah apa-apa.

Address already in use semasa permulaan. Proses lain sedang menggunakan port 9000. Cari proses tersebut dengan sudo ss -ltnp | grep :9000 sebelum anda menukar port MinIO.

Muat naik melebihi 1 MB gagal melalui proksi. nginx menjawab 413 Request Entity Too Large dan MinIO tidak menerima permintaan tersebut. Tetapkan client_max_body_size 0 dalam blok server.

SignatureDoesNotMatch. Sama ada secret key salah, atau sesuatu di antara klien dan MinIO telah menulis semula pengepala Host, yang dilindungi oleh tandatangan tersebut.

RequestTimeTooSkewed. Jam pada klien atau pelayan tidak tepat. Setiap permintaan S3 membawa cap masa dan akan ditolak jika berada di luar tetingkap 15 minit. Semak timedatectl dan pastikan penyelarasan masa aktif.

Access Denied pada bucket yang anda tahu wujud. Kunci tersebut dihadkan kepada bucket yang berbeza. Paparkan perkara yang dibenarkan oleh polisi dengan mc admin policy info local restic-rw dan bandingkan nama bucket dalam baris sumber.

FAQ

Adakah MinIO nod tunggal mencukupi untuk sandaran sebenar?

Ia mencukupi sebagai sasaran restic yang dijalankan pada mesin berasingan daripada data yang dilindunginya. Ia tidak mencukupi jika dijadikan satu-satunya salinan anda. Penempatan pemacu tunggal tidak mempunyai pariti, jadi tiada salinan kedua di dalam MinIO, dan jika cakera VPS tersebut kehilangan data, objek akan hilang. Simpan sasaran kedua di tempat lain, dan lakukan pemulihan daripada kedua-dua lokasi sekurang-kurangnya sekali supaya anda tahu proses tersebut berfungsi.

Mengapakah sha256sum -c gagal pada fail checksum MinIO?

Ini kerana label selepas hash di dalam fail tersebut menamakan keluaran minio.RELEASE.2025-09-07T16-13-09Z, manakala fail yang anda muat turun biasanya dinamakan minio. sha256sum -c mencari fail dengan nama yang tertulis di dalam fail checksum, tidak menemuinya, lalu melaporkan No such file or directory dan WARNING: 1 listed file could not be read. Muat turun tersebut adalah baik. Bandingkan rentetan hash secara terus dan abaikan label tersebut, kerana ia tidak membawa sebarang makna keselamatan.

Ke manakah perginya konsol web pentadbir MinIO?

MinIO telah membuang ciri pentadbiran daripada konsol edisi komuniti pada Mei 2025, dan hanya meninggalkan pelayar objek dalam antara muka web. Bucket dan pengguna kini diuruskan dengan klien mc, menggunakan arahan seperti mc admin user add dan mc admin policy attach. Itu adalah laluan yang disokong dalam edisi komuniti dan bukannya penyelesaian sementara, itulah sebabnya panduan ini melakukan segala-galanya daripada baris arahan.

Bagaimanakah cara saya menghalakan restic ke MinIO sebagai backend S3?

Tetapkan AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY kepada access key MinIO dan secret-nya, kemudian gunakan rentetan repositori dalam bentuk s3:https://s3.example.com/restic, di mana elemen laluan terakhir ialah nama bucket. Cipta bucket terlebih dahulu dengan mc mb, kerana kunci yang dihadkan kepada satu bucket tidak mempunyai kebenaran untuk mencipta bucket. restic menyulitkan segala-galanya dengan kata laluan repositorinya sendiri sebelum dimuat naik, jadi MinIO menyimpan ciphertext dan tidak pernah melihat fail anda.

Adakah saya perlu menjalankan MinIO di sebalik nginx?

Anda memerlukan TLS (transport layer security) pada bila-bila masa klien tidak berada pada mesin yang sama, kerana kelayakan S3 dan data objek kedua-duanya bergerak di dalam permintaan tersebut. Proksi pada port 443 dengan sijil daripada certbot ialah cara paling mudah untuk mendapatkannya, dan ia menjauhkan pembaharuan sijil daripada MinIO. MinIO juga boleh menamatkan TLS sendiri jika anda menghalakan --certs-dir ke direktori yang menyimpan public.crt dan private.key, tetapi akaun servis kemudiannya memerlukan akses baca kepada kunci peribadi yang diperbaharui, yang merupakan kerja tambahan untuk hasil yang sama.

#minio#s3#object-storage#self-hosted#vps