SSD Nodes Learn RAM 8GB — $66/tahun
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-08-01

Cara Pasang MinIO pada VPS Ubuntu 24.04

Pasang MinIO pada satu VPS Ubuntu 24.04 dengan binari disahkan, unit systemd, arahan mc, URL presigned dan sasaran sandaran restic melalui API S3.

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

Apa yang diberikan oleh storan objek dihoskan sendiri dengan MinIO

MinIO ialah storan objek dihoskan sendiri yang menyokong API Amazon S3. Halakan restic atau mana-mana SDK S3 ke pelayan anda sendiri, ubah satu tetapan endpoint, dan klien tidak dapat membezakan kedua-duanya. Panduan ini membina satu nod pada Ubuntu 24.04: binari yang disahkan, pengguna sistem khusus, unit systemd yang menyimpan bukti kelayakan root di luar fail unit, dan bucket yang digunakan oleh restic untuk membuat sandaran.

S3 (perkhidmatan storan ringkas) ialah API HTTP, bukan sistem fail. Anda PUT objek ke dalam bucket menggunakan key dan GET objek itu semula. Tiada penulisan separa dan tiada penamaan semula. Alat sandaran sesuai dengan model ini kerana objek sama ada tiba sepenuhnya atau tidak tiba langsung.

Satu nod menyimpan satu salinan data anda. Itulah pertukaran yang anda pilih. Anda mendapat endpoint S3 yang dikawal sendiri dengan kos sebuah VPS. Pada masa yang sama, anda mengambil alih semua tugas yang sebelum ini dilakukan oleh pembekal awan, daripada menggantikan cakera yang gagal hingga menampal perisian pelayan. Bahagian berhampiran akhir menerangkan dengan jelas bila pertukaran ini merupakan pilihan yang baik.

Keadaan edisi komuniti MinIO pada Julai 2026

Baca bahagian ini sebelum anda membina sistem berdasarkan panduan ini kerana keadaannya baru-baru ini berubah. Pada Mei 2025, MinIO mengalih keluar ciri pentadbiran daripada konsol web dalam edisi komuniti. Yang kekal dalam pelayar ialah pelayar objek. Oleh itu, bucket dan kunci akses diurus dengan klien baris perintah mc.

Kemudian pada 2025, MinIO berhenti menerbitkan binari komuniti yang telah diprakompil. README projek kini menyatakan bahawa edisi komuniti diedarkan sebagai kod sumber sahaja. URL muat turun lama masih berfungsi. Setakat Julai 2026, URL tersebut menyediakan binaan pelayan RELEASE.2025-09-07T16-13-09Z dan binaan klien RELEASE.2025-08-13T08-35-41Z. Tiada binaan komuniti yang lebih baharu diterbitkan. Oleh itu, binari di bawah adalah nyata dan boleh dijalankan, tetapi tidak berubah. Pembaikan keselamatan yang diterbitkan selepas September 2025 tidak disertakan.

Fakta itu menentukan bahagian lain dalam panduan ini. Itulah sebabnya MinIO di sini mendengar pada 127.0.0.1 dan hanya mencapai internet melalui proksi yang anda kawal. Jika anda mahu mengikuti pembaikan terkini, bina daripada kod sumber. README vendor memberikan satu perintah, go install github.com/minio/minio@latest, yang memerlukan rantaian alat Go dan menulis binari ke ~/go/bin/minio. Pasang binari itu ke /usr/local/bin/minio. Semua langkah lain di sini kekal sama.

Pasang binari MinIO dan sahkan muat turun

Muat turun keluaran yang ditetapkan dan checksum yang diterbitkan. Bendera -f menyebabkan curl gagal apabila berlaku ralat HTTP, dan bukannya menyimpan halaman ralat menggunakan nama yang anda minta. Jika tidak, anda mungkin memasang halaman 404 lalu tertanya-tanya sebab halaman itu tidak dapat 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 dalam fail itu ialah minio.RELEASE.2025-09-07T16-13-09Z, manakala kami menyimpan muat turun sebagai minio. Oleh itu, -c mencari fail yang tidak wujud. Perintah itu melaporkan No such file or directory kemudian WARNING: 1 listed file could not be read, yang kelihatan seperti muat turun rosak tetapi sebenarnya tidak. Label itu hanya nama. Hash ialah bahagian yang memberikan jaminan.

Jelaskan perkara yang dibuktikan oleh pemeriksaan ini. Binari dan hash datang daripada vendor yang sama melalui sambungan yang sama. Oleh itu, padanan membuktikan muat turun lengkap dan tidak rosak atau diubah semasa penghantaran. Padanan itu tidak membuktikan bahawa vendor boleh dipercayai. Itu ialah masalah berbeza, dan tiada perintah sha256sum 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 beberapa baris binaan. Permission denied di sini bermaksud modnya salah, manakala command not found bermaksud /usr/local/bin tiada dalam PATH anda.

Cipta pengguna sistem dan direktori data

MinIO menerima muat naik daripada rangkaian, jadi MinIO tidak patut dijalankan sebagai root. Berikan MinIO akaun tanpa direktori rumah 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, supaya akaun itu tidak berada dalam julat yang digunakan untuk pengguna biasa. -M tidak mencipta direktori rumah kerana akaun yang tidak pernah log masuk tidak memerlukan direktori tersebut. Semak hasilnya dengan id minio-user dan stat -c '%U %a' /var/lib/minio, yang sepatutnya mencetak minio-user 750.

Direktori data mesti boleh ditulis oleh pengguna tersebut, bukan sekadar boleh dibaca. Pada permulaan pertama, MinIO mencipta direktori .minio.sys di dalam volum untuk menyimpan konfigurasinya sendiri. Oleh itu, direktori yang dimiliki root menyebabkan MinIO keluar semasa permulaan dengan mesej yang berakhir dengan permission denied. Peraturan yang sama terpakai pada setiap perkhidmatan yang anda jalankan dengan cara ini. pengguna perkhidmatan dengan keistimewaan minimum pada VPS menerangkannya dengan lengkap.

Letakkan kelayakan root dalam fail persekitaran

Kelayakan root memberikan akses kepada setiap bucket. Oleh itu, kelayakan ini tidak sepatutnya diletakkan dalam fail unit yang boleh dibaca oleh semua pengguna. Cipta fail dengan mod yang betul dahulu, kemudian tulis kandungan ke dalamnya. Dengan cara ini, kata laluan tidak pernah berada 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 kandungan fail sedia ada dan bukannya menciptanya semula. Oleh itu, mod kekal 600 dan pemilik kekal root. Ini memang disengajakan. systemd membaca EnvironmentFile sebagai root sebelum menurunkan keistimewaan kepada User=. Ini bermakna akaun perkhidmatan tidak perlu membaca kelayakannya sendiri. Selepas perkhidmatan berjalan, sahkan keadaan ini dengan sudo -u minio-user cat /etc/default/minio. Perintah itu mesti mencetak Permission denied.

Dua tingkah laku MinIO perlu diketahui sebelum anda memulakannya. Tanpa MINIO_ROOT_USER dan MINIO_ROOT_PASSWORD dalam persekitarannya, MinIO tidak menolak untuk dimulakan. MinIO bermula dengan kelayakan lalai yang didokumenkan, iaitu minioadmin:minioadmin. Ini ialah pasangan kelayakan pertama yang akan dicuba oleh mana-mana pengimbas, dan MinIO kelihatan berfungsi sepenuhnya ketika menggunakannya. Kata laluan yang mempunyai kurang daripada 8 aksara pula ditolak. MinIO keluar semasa permulaan dengan ralat yang menyatakan kelayakan tidak sah kerana access key memerlukan sekurang-kurangnya 3 aksara dan secret key memerlukan sekurang-kurangnya 8 aksara.

MINIO_VOLUMES ialah laluan data, manakala MINIO_OPTS menyimpan flag. Binding kepada 127.0.0.1 bermakna tiada apa-apa dari luar VPS ini boleh mencapai API S3 buat masa ini. Ini ialah tetapan lalai yang betul. Anda boleh membukanya dengan 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 awalan - pada EnvironmentFile, dan ini dibuat dengan sengaja, bukan kerana kesilapan menaip. Dengan tanda sengkang itu, systemd mengabaikan fail yang tiada dan memulakan MinIO juga. Oleh itu, fail yang dipadam atau laluan yang tersalah eja boleh menyebabkan pelayan berjalan secara senyap menggunakan minioadmin:minioadmin. Tanpa tanda sengkang itu, fail yang tiada menyebabkan unit gagal sebelum MinIO dijalankan, dan journalctl -u minio memaparkan Failed to load environment files: No such file or directory. Unit yang enggan dimulakan lebih mudah dikesan berbanding pelayan yang secara senyap menerima kata laluan lalai.

$MINIO_VOLUMES dan $MINIO_OPTS tidak diletakkan dalam tanda petikan dengan sengaja, kerana systemd memisahkan pemboleh ubah yang tidak dipetik berdasarkan ruang kosong kepada argumen berasingan. Dengan cara itu, 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. Nilai lalai 1024 akan habis digunakan apabila 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/live

is-active sepatutnya memaparkan active, dan endpoint kesihatan sepatutnya memberikan jawapan 200. journalctl -u minio -n 20 --no-pager memaparkan alamat API yang digunakan pelayan untuk mendengar. Jika unit terus dimulakan semula, systemd akan berhenti mencuba dan merekodkan Start request repeated too quickly. Ini bermaksud MinIO keluar pada setiap percubaan. Sebabnya dipaparkan pada baris sebelum mesej tersebut, jadi baca ke atas.

Untuk pengasingan yang lebih baik, tambah ProtectSystem=full dan ProtectHome=true pada bahagian [Service]. Kedua-duanya memerlukan ruang nama mount daripada kernel hos. Dalam virtualisasi kontena yang berkongsi kernel hos, seperti OpenVZ atau LXC, kedua-duanya boleh gagal dan unit itu akan melaporkan status=226/NAMESPACE. Buang kedua-dua baris tersebut supaya unit boleh dimulakan. Unit itu sendiri ialah unit biasa, dan perkhidmatan serta pemasa systemd pada VPS menerangkan arahan yang selebihnya.

mc pemasangan dan buktikan perjalanan pergi balik

Klien MinIO ialah mc. Jangan pasangnya dengan apt install mc. Pakej itu ialah Midnight Commander, iaitu pengurus fail yang tidak berkaitan 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 bersama saiznya, dan mc cat sepatutnya mencetak hello object storage. Perjalanan pergi balik itu membuktikan pelayan benar-benar berfungsi kerana proses tersebut membuat permintaan S3 yang ditandatangani sama seperti yang akan dibuat oleh setiap klien lain. mc admin info local mencetak status pelayan jika anda mahukan pengesahan tambahan.

Jalankan satu lagi pemeriksaan sekarang, ketika pelayan masih kosong.

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

Perintah ini mesti gagal. Jika perintah ini berjaya, fail persekitaran tidak pernah sampai kepada proses tersebut dan pelayan anda berjalan menggunakan kelayakan lalai. Baiki perkara itu sebelum apa-apa lagi mengakses mesin ini.

mc menyimpan alias dalam ~/.mc/config.json sebagai teks biasa. Oleh itu, kelayakan tersebut berada dalam direktori utama pengguna 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 kuncinya sendiri.

Berikan satu objek dengan URL pratandatangan

URL pratandatangan ialah pautan HTTPS biasa yang disertakan tandatangan dan tempoh luput. Sesiapa yang memiliki pautan itu boleh mendapatkan satu objek tersebut tanpa akaun dan tanpa klien.

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

Output tersebut mengandungi X-Amz-Signature dan X-Amz-Expires dalam rentetan pertanyaan. Terdapat dua perkara yang sering mengejutkan pengguna. Pautan itu dibina daripada endpoint dalam alias yang anda gunakan. Oleh itu, 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 membatalkannya. Tandatangan kekal sah sehingga tamat tempoh. Oleh itu, tempoh luput yang singkat ialah satu-satunya kawalan yang anda ada. Tujuh hari ialah tempoh maksimum yang dibenarkan oleh format tandatangan S3.

Berikan restic kunci dan bucket khusus

Kredensial root boleh membaca dan memadamkan setiap bucket, jadi tugas sandaran tidak boleh menggunakannya. Cipta satu bucket, satu dasar yang terhad kepada bucket itu, dan seorang pengguna yang tidak mendapat 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 dasar terbina dalam readwrite yang boleh mengurangkan satu arahan, tetapi dasar itu memberikan akses penuh kepada setiap bucket pada pelayan. Dasar di atas menamakan bucket itu 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 ialah sumber yang berasingan. Oleh itu, dasar 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 pertama berjaya dan yang kedua gagal dengan Access Denied. Dasar yang belum diuji hanyalah andaian.

Sekarang halakan restic ke bucket tersebut. restic membaca kelayakan S3 daripada pemboleh ubah persekitaran AWS standard, jadi tiada fail kelayakan khusus restic 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 snapshots

restic init meminta kata laluan repositori. Kata laluan itu menyulitkan repositori, jadi MinIO hanya menyimpan teks sifir, dan kehilangan kata laluan bermakna sandaran turut hilang. Tugas yang dimulakan oleh pemasa systemd tidak mempunyai terminal untuk menerima input, jadi tetapkan RESTIC_PASSWORD_FILE kepada fail dengan 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 bukan daripada perkara lain. Nod MinIO hendaklah berada pada mesin yang berbeza, sebaik-baiknya di rantau yang berbeza. sandaran restic pada VPS menerangkan penjadualan dan pengekalan berdasarkan konfigurasi ini.

Tamatkan TLS dengan nginx

MinIO berada pada localhost, jadi nginx ialah permukaan awam. Keluarkan sijil terlebih dahulu, seperti yang diterangkan dalam Sijil Let's Encrypt dengan certbot dan nginx, kemudian gunakan blok pelayan 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 ini penting untuk operasi. client_max_body_size 0 mengalih keluar had badan lalai sebanyak 1 MB. Tanpa tetapan ini, sebarang muat naik yang lebih besar akan ditolak dengan 413 Request Entity Too Large sebelum MinIO menerima permintaan tersebut. proxy_request_buffering off menstrim muat naik terus, kerana tetapan lalai menyimpan keseluruhan permintaan dalam fail sementara terlebih dahulu. Oleh itu, objek besar memerlukan ruang cakera dua kali ganda. proxy_set_header Host $http_host ialah tetapan yang lebih sukar dikesan: tandatangan S3 merangkumi pengepala Host. Jadi, proksi yang menulis semula pengepala itu menyebabkan setiap permintaan gagal dengan SignatureDoesNotMatch, walaupun log akses menunjukkan permintaan biasa telah diterima.

Beritahu MinIO nama awamnya juga, supaya pautan yang dijananya menghala ke proksi, bukan ke localhost.

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

Konfigurasi tembok api kekal ringkas. Benarkan SSH dan HTTPS. Jangan tetapkan sebarang peraturan untuk port 9000 dan 9001, kerana alamat yang diikat pada 127.0.0.1 tidak boleh dicapai dari mesin lain, tanpa mengira konfigurasi tembok api. Asas tembok api ufw pada VPS mengandungi arahan tersebut.

Bila MinIO satu nod mencukupi dan bila anda memerlukan S3 sebenar

Satu nod di sini bermaksud satu pemacu tanpa pariti. Dokumentasi MinIO sendiri menerangkan bahawa susun atur ini sesuai untuk pengujian dan beban kerja kecil tanpa keperluan ketersediaan. Tiada salinan kedua dalam deployment ini, jadi ketahanan setiap objek bergantung pada ketahanan satu cakera VPS. Ciri yang mengandaikan backend teragih berkod pemadaman, termasuk replikasi bucket dan penguncian objek, adalah untuk deployment dengan berbilang pemacu. Oleh itu, jangan menjanjikan sesiapa dasar pengekalan tidak boleh ubah pada persediaan ini.

Ia sesuai sebagai sasaran restic pada VPS kedua di rantau lain, dan sebagai endpoint S3 untuk kerja pembangunan serta artifak CI, apabila kehilangan bucket hanya memerlukan anda membinanya semula tanpa kesan lain. Ia juga munasabah untuk muat naik pengguna dalam aplikasi kecil, selagi anda memiliki pelan pemulihan dan benar-benar telah menguji pemulihan sandaran.

Pilih S3 terurus apabila kontrak atau pengawal selia memerlukan penguncian objek atau ketahanan merentas berbilang rantau, atau apabila anda tidak mahu menjadi orang yang menerima halaman pada 03:00 kerana cakera telah penuh. Binaan yang dibekukan ialah satu lagi sebab yang jelas. Setakat July 2026, binari komuniti prapenyusunan bertarikh September 2025 dan tidak menerima pembaikan. Oleh itu, menjalankannya bermaksud menerima keadaan tersebut, atau membinanya daripada kod sumber dan mengikuti perkembangan projek itu sendiri.

Satu batasan wajar dinyatakan kerana perkara ini sering timbul. Penyimpanan objek bukan pangkalan data. Setiap penulisan menggantikan keseluruhan objek, jadi fail SQL aktif dalam bucket S3 adalah perlahan dan tidak selamat. Simpan pangkalan data pada cakera setempat dan sandarkannya ke dalam bucket: menjalankan SQLite dalam pengeluaran pada VPS menerangkan pemisahan tersebut.

Mod kegagalan dan mesej yang akan dipaparkan

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 perkhidmatan. Oleh itu, semak bahawa stat -c '%U' /var/lib/minio/data memaparkan minio-user.

minioadmin:minioadmin masih boleh log masuk. Fail persekitaran tidak pernah sampai kepada proses tersebut. Pastikan unit mengandungi EnvironmentFile=/etc/default/minio, jalankan sudo systemctl daemon-reload, kemudian mulakan semula perkhidmatan. MinIO membaca bukti kelayakan root sekali sahaja semasa permulaan. Oleh itu, mengedit fail tersebut tanpa memulakan semula perkhidmatan tidak 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 mengubah port MinIO.

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

SignatureDoesNotMatch. Sama ada kunci rahsia salah, atau sesuatu di antara klien dengan MinIO telah menulis semula pengepala Host, yang diliputi oleh tandatangan.

RequestTimeTooSkewed. Jam pada klien atau pelayan tidak tepat. Setiap permintaan S3 membawa cap masa dan akan ditolak jika berada di luar tempoh 15 minit. Semak timedatectl dan sahkan bahawa penyegerakan masa aktif.

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

FAQ

Adakah MinIO nod tunggal memadai untuk sandaran sebenar?

Ia memadai sebagai sasaran restic yang dijalankan pada mesin berasingan daripada data yang dilindunginya. Namun, ia tidak memadai sebagai satu-satunya salinan. Penggunaan satu pemacu mempunyai sifar pariti. Oleh itu, tiada salinan kedua dalam MinIO. Jika cakera VPS itu kehilangan data, objek tersebut akan hilang. Simpan sasaran kedua di lokasi lain. Lakukan pemulihan daripada kedua-dua sasaran sekurang-kurangnya sekali supaya anda tahu proses tersebut berfungsi.

Mengapakah sha256sum -c gagal pada fail checksum MinIO?

Label selepas cincangan dalam fail tersebut menamakan keluaran, minio.RELEASE.2025-09-07T16-13-09Z, manakala fail yang dimuat turun biasanya dinamakan minio. sha256sum -c mencari fail dengan nama yang ditulis dalam fail checksum, tetapi tidak menemuinya. Kemudian, sha256sum -c melaporkan No such file or directory dan WARNING: 1 listed file could not be read. Muat turun tersebut tidak bermasalah. Bandingkan rentetan cincangan secara terus dan abaikan label itu kerana label tersebut tidak mempunyai makna keselamatan.

Ke manakah perginya konsol web pentadbiran MinIO?

MinIO mengalih keluar ciri pentadbiran daripada konsol edisi komuniti pada Mei 2025. Antara muka web itu kini hanya menyediakan pelayar objek. Bucket dan pengguna kini diuruskan dengan klien mc menggunakan perintah seperti mc admin user add dan mc admin policy attach. Itulah kaedah yang disokong dalam edisi komuniti, bukan penyelesaian sementara. Oleh itu, panduan ini melaksanakan semuanya daripada baris perintah.

Bagaimanakah saya mengarahkan restic menggunakan MinIO sebagai backend S3?

Tetapkan AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY kepada kunci akses MinIO dan rahsianya. Kemudian, gunakan rentetan repositori dalam bentuk s3:https://s3.example.com/restic, dengan elemen laluan terakhir sebagai nama bucket. Cipta bucket terlebih dahulu dengan mc mb kerana kunci yang terhad kepada satu bucket tidak mempunyai kebenaran untuk mencipta bucket. restic menyulitkan semuanya menggunakan kata laluan repositorinya sendiri sebelum muat naik. Oleh itu, MinIO menyimpan teks sifer dan tidak pernah melihat fail anda.

Adakah saya perlu menjalankan MinIO di belakang nginx?

Anda memerlukan TLS (keselamatan lapisan pengangkutan) apabila klien tidak berada pada mesin yang sama. Kelayakan S3 dan data objek kedua-duanya dihantar dalam permintaan. Proksi pada port 443 dengan sijil daripada certbot ialah cara paling mudah untuk mendapatkannya. Kaedah ini juga mengasingkan pembaharuan sijil daripada MinIO. MinIO juga boleh menamatkan TLS sendiri jika anda mengarahkan --certs-dir kepada direktori yang mengandungi public.crt dan private.key. Namun, akaun perkhidmatan perlu mempunyai akses baca kepada kunci peribadi yang diperbaharui. Ini memerlukan kerja tambahan untuk mendapatkan hasil yang sama.

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