MinIO sa VPS: Sariling S3 Object Storage sa Ubuntu 24.04
I-set up ang MinIO sa isang Ubuntu 24.04 VPS gamit ang verified binary, systemd unit, mc, presigned URLs, at restic backup target na kontrolado mo.
Ano ang naibibigay sa iyo ng self-hosted object storage gamit ang MinIO
Ang MinIO ay self-hosted object storage na gumagamit ng Amazon S3 API. Ituro ang restic o anumang S3 SDK sa sarili mong server, baguhin ang isang endpoint setting, at hindi mapapansin ng client ang pagkakaiba. Gumagawa ang gabay na ito ng isang node sa Ubuntu 24.04: isang na-verify na binary, isang dedikadong system user, isang systemd unit na hindi naglalagay ng root credentials sa unit file, at isang bucket kung saan magba-back up ang restic.
Ang S3 (simple storage service) ay isang HTTP API, hindi filesystem. Nag-PUT ka ng object sa isang bucket gamit ang isang key at nag-GET ka rito, at walang partial write o rename. Angkop ang modelong ito sa mga backup tool dahil buo o hindi dumarating ang isang object.
Isang kopya lang ng data mo ang hawak ng isang node. Iyan ang kapalit na tinatanggap mo. Makakakuha ka ng S3 endpoint na kontrolado mo sa halaga ng isang VPS, ngunit ikaw rin ang gagawa ng lahat ng trabahong dating ginagawa ng cloud provider, mula sa pagpapalit ng sirang disk hanggang sa pag-patch ng server software. Malinaw na ipinapaliwanag ng seksyon malapit sa dulo kung kailan sulit ang kapalit na ito.
Kalagayan ng MinIO community edition noong July 2026
Basahin muna ang bahaging ito bago mo ito gamitin bilang batayan, dahil may mga kamakailang pagbabago. Noong May 2025, inalis ng MinIO ang mga feature para sa administration mula sa web console ng community edition. Ang natira sa browser ay object browser, kaya ang mga bucket at access key ay pinamamahalaan na gamit ang mc command line client.
Pagkaraan noong 2025, itinigil ng MinIO ang pag-publish ng mga pre-compiled na community binary. Nakasaad ngayon sa project README na source code lamang ang distribution ng community edition. Gumagana pa rin ang mga lumang download URL: noong July 2026, inihahatid ng mga ito ang server build na RELEASE.2025-09-07T16-13-09Z at client build na RELEASE.2025-08-13T08-35-41Z, at wala pang lumabas na mas bagong community build. Kaya totoo at gumagana ang binary sa ibaba, ngunit hindi na ito naa-update. Wala rito ang mga security fix na inilabas pagkatapos ng September 2025.
Ang katotohanang ito ang nagtatakda sa natitirang bahagi ng gabay na ito. Dahil dito, nakikinig ang MinIO rito sa 127.0.0.1 at kumokonekta sa internet lamang sa pamamagitan ng proxy na kontrolado mo. Kung mas gusto mong makatanggap ng mga bagong fix, mag-build mula sa source. Nagbibigay ang vendor README ng isang command, go install github.com/minio/minio@latest, na nangangailangan ng Go toolchain at nagsusulat ng binary sa ~/go/bin/minio. I-install ang binary na iyon sa /usr/local/bin/minio at hindi na kailangang baguhin ang iba pang hakbang dito.
I-install ang MinIO binary at i-verify ang download
I-download ang naka-pin na release at ang inilathalang checksum nito. Dahil sa -f flag, nagfa-fail ang curl kapag may HTTP error sa halip na i-save ang error page gamit ang pangalan na hiniling mo. Dahil dito, may mga nakakapag-install ng 404 page at nagtataka kung bakit hindi ito nage-execute.
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.sha256sumIkumpara ang dalawang hash, at ang mga hash lamang ang ikumpara.
published=$(awk '{print $1}' minio.sha256sum)
downloaded=$(sha256sum minio | awk '{print $1}')
[ "$published" = "$downloaded" ] && echo "checksum ok"Huwag gamitin ang sha256sum -c minio.sha256sum dito. Ang label na nakasulat pagkatapos ng hash sa file na iyon ay minio.RELEASE.2025-09-07T16-13-09Z, at na-save natin ang download bilang minio, kaya hinahanap ng -c ang file na hindi umiiral. Iniuulat nito ang No such file or directory at pagkatapos ay ang WARNING: 1 listed file could not be read, na mukhang sira ang download kahit hindi naman. Pangalan lamang ang label. Ang hash ang bahaging nagbibigay ng garantiya.
Linawin kung ano ang pinatutunayan ng check na ito. Galing ang binary at hash sa parehong vendor at dumaan sa parehong connection, kaya pinatutunayan ng magkatugmang hash na kumpleto ang download at hindi ito nasira o nabago habang ipinapadala. Hindi nito pinatutunayan na mapagkakatiwalaan ang vendor. Ibang problema iyon, at walang sha256sum command ang makalulutas nito.
sudo install -o root -g root -m 755 minio /usr/local/bin/minio
minio --versionNaglilimbag ang minio --version ng minio version RELEASE.2025-09-07T16-13-09Z na sinusundan ng ilang build line. Ang Permission denied dito ay nangangahulugang mali ang mode, at ang command not found ay nangangahulugang wala ang /usr/local/bin sa iyong PATH.
Gumawa ng system user at data directory
Tumatanggap ang MinIO ng mga upload mula sa network, kaya hindi ito dapat tumakbo bilang root. Bigyan ito ng account na walang home directory at walang login shell.
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/minioGumagawa ang -r ng system account na may UID na mas mababa sa 1000, kaya hindi ito napapabilang sa range na ginagamit para sa mga tao. Nilalaktawan ng -M ang home directory, dahil walang kailangang itago roon ang account na hindi kailanman nagla-login. Suriin ang resulta gamit ang id minio-user at stat -c '%U %a' /var/lib/minio, na dapat mag-print ng minio-user 750.
Dapat writable ng user na iyon ang data directory, hindi lamang readable. Sa unang pagsisimula, gumagawa ang MinIO ng .minio.sys directory sa loob ng volume upang paglagyan ng sarili nitong configuration. Kaya kapag pagmamay-ari ito ng root, lalabas ang MinIO habang nagsisimula at magpapakita ng mensaheng nagtatapos sa permission denied. Nalalapat din ang parehong tuntunin sa bawat service na patatakbuhin mo sa ganitong paraan. Tinalakay ito nang maayos sa mga service user na may least privilege sa isang VPS.
Ilagay ang root credentials sa isang environment file
Ang root credentials ay nagbibigay ng access sa bawat bucket, kaya hindi dapat ilagay ang mga ito sa unit file na maaaring basahin ng lahat. Gawin muna ang file gamit ang tamang mode, saka ito sulatan. Sa ganitong paraan, hindi kailanman nasa readable na file ang password kahit sandali.
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/minioAng tee ay nagta-truncate ng kasalukuyang file sa halip na gumawa ulit ng bago. Kaya nananatiling 600 ang mode at root ang owner. Sinasadya ito. Binabasa ng systemd ang EnvironmentFile bilang root bago nito ibaba ang privileges sa User=. Dahil dito, hindi kailangang basahin ng service account ang sarili nitong credentials. Kapag tumatakbo na ang service, patunayan ito gamit ang sudo -u minio-user cat /etc/default/minio. Dapat i-print ng command na iyon ang Permission denied.
May dalawang MinIO behavior na dapat mong malaman bago ito simulan. Kapag walang MINIO_ROOT_USER at MINIO_ROOT_PASSWORD sa environment nito, hindi tumatangging mag-start ang MinIO. Nag-start ito gamit ang documented default credentials na minioadmin:minioadmin. Ito ang unang pares na sinusubukan ng anumang scanner, at mukhang ganap na healthy ang service habang ginagamit ang mga ito. Sa halip, nire-reject ang password na wala pang 8 character. Lumalabas ang MinIO sa startup at nag-uulat na invalid ang credentials, dahil kailangan ng access key ng hindi bababa sa 3 character at ng secret key ng hindi bababa sa 8.
Ang MINIO_VOLUMES ang data path, at ang MINIO_OPTS ang naglalaman ng mga flag. Kapag nag-bind sa 127.0.0.1, walang makakaabot sa S3 API mula sa labas ng VPS na ito. Ito ang tamang default. Sinasadya mong buksan ang access sa ibang pagkakataon sa pamamagitan ng proxy na may certificate.
Isulat ang systemd unit
Gawin ang /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.targetWalang nauunang - sa EnvironmentFile, at sinadya ito. Kapag may dash, binabalewala ng systemd ang nawawalang file at sinisimulan pa rin ang MinIO. Dahil dito, ang naburang file o maling path ay tahimik na magpapatakbo ng server gamit ang minioadmin:minioadmin. Kapag walang dash, mabibigo ang unit bago pa tumakbo ang MinIO, at ipapakita ng journalctl -u minio ang Failed to load environment files: No such file or directory. Mas madaling mapansin ang unit na tumatangging magsimula kaysa sa server na tahimik na tumatanggap ng default password.
Sadyang walang quotation marks ang $MINIO_VOLUMES at $MINIO_OPTS, dahil hinahati ng systemd ang mga variable na walang quotation marks ayon sa whitespace at ginagawa itong magkakahiwalay na argumento. Sa ganitong paraan, nagiging apat na argumento para sa minio server ang apat na salita sa MINIO_OPTS. Itinataas ng LimitNOFILE=65536 ang limitasyon sa file descriptor, dahil kumokonsumo ng isang descriptor ang bawat bukas na connection at bawat bukas na data file, at nauubos sa ilalim ng load ang default na 1024.
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/liveDapat mag-print ang is-active ng active, at dapat sumagot ang health endpoint ng 200. Ipinapakita ng journalctl -u minio -n 20 --no-pager ang API address kung saan nakikinig ang server. Kung patuloy na nagre-restart ang unit, susuko ang systemd at magla-log ng Start request repeated too quickly. Ibig sabihin, lumalabas ang MinIO sa bawat pagtatangka. Naka-print ang dahilan sa mga linyang nasa itaas ng mensaheng iyon, kaya magbasa pataas.
Para sa mas mahigpit na isolation, idagdag ang ProtectSystem=full at ProtectHome=true sa seksyong [Service]. Pareho silang nangangailangan ng mount namespaces mula sa host kernel. Sa container virtualisation na nagse-share ng host kernel, gaya ng OpenVZ o LXC, maaaring mabigo ang mga ito, at iuulat ng unit ang status=226/NAMESPACE. Alisin ang dalawang linyang iyon at magsisimula ito. Ordinaryong unit ang unit mismo, at tinatalakay ng mga systemd service at timer sa isang VPS ang iba pang directive.
I-install ang mc at patunayan ang round trip
Ang MinIO client ay mc. Huwag itong i-install gamit ang apt install mc. Ang package na iyon ay Midnight Commander, isang file manager na walang kaugnayan sa 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/mcIrehistro ang server bilang alias, pagkatapos ay ilipat ang isang object dito.
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.txtDapat ilista ng mc ls ang hello.txt kasama ang laki nito, at dapat i-print ng mc cat ang hello object storage. Ang round trip na ito ang tunay na patunay na gumagana ang server, dahil isinasagawa nito ang parehong mga signed S3 request na gagawin ng lahat ng ibang client. Ipi-print ng mc admin info local ang status ng server kung gusto mo ng karagdagang beripikasyon.
Magsagawa ngayon ng isa pang pagsusuri habang wala pang laman ang box.
mc alias set defaultcheck http://127.0.0.1:9000 minioadmin minioadminDapat mabigo ang command na ito. Kung magtagumpay ito, hindi nakarating ang environment file sa process at tumatakbo ang server gamit ang default credentials. Ayusin muna ito bago may ibang maka-access sa machine.
Iniimbak ng mc ang mga alias sa ~/.mc/config.json bilang plain text, kaya nasa home directory ng taong nagpatakbo ng command ang mga credential na iyon. Kapag pinatakbo ang mc sa ilalim ng sudo, napupunta ang root credentials sa /root/.mc/config.json. Panatilihin ang root alias sa account ng isang administrator at bigyan ang bawat application ng sarili nitong key.
Magbigay ng isang object gamit ang presigned URL
Ang presigned URL ay isang karaniwang HTTPS link na may kalakip na signature at expiration. Maaaring i-fetch ng sinumang may hawak ng link ang object na iyon nang walang account at walang client.
mc share download --expire 12h local/backups/hello.txtNilalaman ng output ang X-Amz-Signature at X-Amz-Expires sa query string. May dalawang bagay tungkol dito na maaaring ikagulat. Binubuo ang link mula sa endpoint sa alias na ginamit mo, kaya ang alias sa 127.0.0.1 ay gumagawa ng link na ang machine na ito lamang ang makapagbubukas: gumawa ng isa pang alias sa iyong public hostname para sa mga link na balak mong ipadala. Wala ring revoke button. Mananatiling valid ang signature hanggang sa expiration nito, kaya short expiry lamang ang kontrol na mayroon ka. Pitong araw ang maximum na pinapahintulutan ng S3 signature format.
Bigyan ang restic ng sarili nitong key at bucket
Mababasa at mabubura ng root credentials ang bawat bucket, kaya hindi dapat hawak ng backup job ang mga ito. Gumawa ng bucket, policy na limitado sa bucket na iyon, at user na wala nang ibang access.
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-backupMay built-in na readwrite policy ang MinIO na magiging mas maikli sana ang command, pero nagbibigay ito ng buong access sa bawat bucket sa server. Sadyang dalawang beses binanggit ng policy sa itaas ang bucket: isang beses bilang arn:aws:s3:::restic para gumana ang pag-list ng bucket, at isang beses bilang arn:aws:s3:::restic/* para sa mga object sa loob nito. Sa S3, magkahiwalay na resource ang bucket at ang mga object nito, kaya mabibigo ang policy na isa lang sa mga ito ang binabanggit. Maaari itong magmukhang sira ang client.
Subukan ang limitasyon bago mo ito pagkatiwalaan.
mc alias set resticuser http://127.0.0.1:9000 restic-backup "$RESTIC_KEY"
mc ls resticuser/restic
mc ls resticuser/backupsMagtagumpay ang unang ls at mabibigo ang ikalawa gamit ang Access Denied. Ang policy na hindi mo pa nasusubukan ay hula lamang.
Ituro ngayon ang restic sa bucket. Binabasa ng restic ang S3 credentials mula sa mga standard na AWS environment variable, kaya walang restic-specific credential file na kailangan.
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 snapshotsHumihingi ang restic init ng repository password. Ine-encrypt ng password na iyon ang repository, kaya ciphertext lang ang iniimbak ng MinIO. Kapag nawala ang password, mawawala rin ang backup. Walang terminal na mapagta-type-an ang run na sinimulan ng systemd timer, kaya itakda ang RESTIC_PASSWORD_FILE sa isang mode 600 file para sa mga naka-schedule na backup.
Mas mahalaga kaysa sa alinmang command sa itaas ang isang placement rule. Ang restic repository na nasa parehong VPS ng data na pinoprotektahan nito ay makapagliligtas sa iyo mula sa isang masamang rm, ngunit wala nang iba. Dapat nasa ibang machine ang MinIO node, at mas mainam kung nasa ibang region. Sinasaklaw ng restic backups sa isang VPS ang scheduling at retention na idinadagdag sa setup na ito.
Tapusin ang TLS gamit ang nginx
Nasa localhost ang MinIO, kaya ang nginx ang public surface. I-issue muna ang certificate, gaya ng inilalarawan sa Mga Let's Encrypt certificate gamit ang certbot at nginx, pagkatapos ay gamitin ang server block na ito.
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;
}
}Mahalaga ang ilan sa mga linyang ito. Inaalis ng client_max_body_size 0 ang default na 1 MB body limit. Kung hindi ito aalisin, tatanggihan nito ang anumang upload na mas malaki rito gamit ang 413 Request Entity Too Large bago pa man matanggap ng MinIO ang request. Direktang ipinapasa ng proxy_request_buffering off ang upload. Kung hindi ito gagamitin, ise-save muna ng default ang buong request sa isang temporary file, kaya mangangailangan ang malaking object ng disk space nang dalawang beses. Ito ang mas mahirap mapansin: proxy_set_header Host $http_host. Saklaw ng S3 signature ang Host header. Kaya kapag binago ito ng proxy, mabibigo ang bawat request gamit ang SignatureDoesNotMatch, kahit ipinapakita ng access log na normal na dumating ang request.
Sabihin din sa MinIO ang public name nito, para ang mga link na ginagawa nito ay tumuro sa proxy sa halip na sa localhost.
echo 'MINIO_SERVER_URL=https://s3.example.com' | sudo tee -a /etc/default/minio
sudo systemctl restart minioMananatiling maliit ang firewall configuration. Payagan ang SSH at HTTPS. Huwag maglagay ng rule para sa ports 9000 at 9001, dahil ang address na naka-bind sa 127.0.0.1 ay hindi maaabot mula sa ibang machine, anuman ang configuration ng firewall. Nasa Mga pangunahing kaalaman sa ufw firewall sa isang VPS ang mga command.
Kailan sapat ang single-node MinIO, at kailan kailangan mo ng tunay na S3
Ang single node dito ay nangangahulugang isang drive na may zero parity. Inilalarawan ng sariling documentation ng MinIO ang layout na ito bilang angkop para sa testing at maliliit na workload na walang availability requirement. Walang pangalawang kopya sa loob ng deployment, kaya ang durability ng bawat object ay nakadepende sa durability ng disk ng isang VPS. Ang mga feature na nangangailangan ng distributed erasure-coded backend, kabilang ang bucket replication at object locking, ay para sa mga deployment na may maraming drive. Huwag kang mangako ng immutable retention policy para sa setup na ito.
Angkop ito bilang restic target sa pangalawang VPS sa ibang region, at bilang S3 endpoint para sa development work at CI artifacts, kung saan ang pagkawala ng bucket ay mangangailangan lang ng rebuild. Makatuwiran din ito para sa user uploads sa isang maliit na application, basta ikaw ang may-ari ng recovery plan at aktuwal mong nasubukan ang restore.
Pumili ng managed S3 kapag nangangailangan ang isang kontrata o regulator ng object lock o multi-region durability, o kapag ayaw mong ikaw ang makatanggap ng alert sa 03:00 dahil napuno ang disk. Ang frozen build ang isa pang malinaw na dahilan. Noong July 2026, ang pre-compiled community binary ay mula pa sa September 2025 at wala nang natatanggap na fixes. Ang pagpapatakbo nito ay nangangahulugang tinatanggap mo ang panganib na iyon, o magbu-build ka mula sa source at ikaw mismo ang susubaybay sa project.
Mahalagang linawin ang isang limitasyon dahil madalas itong lumitaw. Ang object storage ay hindi database. Pinapalitan ng bawat write ang buong object, kaya mabagal at hindi ligtas ang live SQL file sa isang S3 bucket. Panatilihin ang database sa local disk at i-back up ito sa bucket: inilalarawan ng pagpapatakbo ng SQLite sa production sa isang VPS ang paghahating ito.
Mga failure mode at mga mensaheng makikita mo
Agad na nagfa-fail ang unit pagkatapos ng systemctl enable --now. Basahin ang journalctl -u minio -n 30 --no-pager. Ibig sabihin ng Failed to load environment files: No such file or directory, nawawala ang /etc/default/minio o mali ang path nito sa unit. Ang mensaheng nagtatapos sa permission denied ay nangangahulugang hindi writable ng service account ang data directory, kaya tingnan kung ipinapakita ng stat -c '%U' /var/lib/minio/data ang minio-user.
Nakapagla-log in pa rin ang minioadmin:minioadmin. Hindi nakarating sa process ang environment file. Tiyaking naglalaman ang unit ng EnvironmentFile=/etc/default/minio, patakbuhin ang sudo systemctl daemon-reload, at pagkatapos ay i-restart ang service. Isang beses lang binabasa ng MinIO ang root credentials sa startup, kaya walang mababago kapag in-edit ang file na iyon nang walang restart.
Address already in use sa startup. May ibang process na gumagamit ng port 9000. Hanapin ito gamit ang sudo ss -ltnp | grep :9000 bago baguhin ang port ng MinIO.
Nagfa-fail sa proxy ang mga upload na lampas 1 MB. Nagbalik ang nginx ng 413 Request Entity Too Large at hindi nakita ng MinIO ang request. Itakda ang client_max_body_size 0 sa server block.
SignatureDoesNotMatch. Maaaring mali ang secret key, o may component sa pagitan ng client at MinIO na nagbago sa Host header, na kasama sa signature.
RequestTimeTooSkewed. Mali ang oras sa client o server. May timestamp ang bawat S3 request at nire-reject ito kapag lampas sa 15 minute window. Tingnan ang timedatectl at tiyaking aktibo ang time synchronisation.
Access Denied sa isang bucket na alam mong umiiral. Naka-scope ang key sa ibang bucket. I-print kung ano talaga ang pinapayagan ng policy gamit ang mc admin policy info local restic-rw at ikumpara ang pangalan ng bucket sa mga resource line.
FAQ
Sapat na ba ang single-node MinIO para sa aktuwal na backups?
Sapat ito bilang restic target na nasa hiwalay na machine mula sa data na pinoprotektahan nito. Hindi ito sapat bilang nag-iisang kopya. Ang single-drive deployment ay walang parity, kaya walang pangalawang kopya sa loob ng MinIO. Kung mawalan ng data ang disk ng VPS, mawawala ang objects. Magpanatili ng pangalawang target sa ibang lokasyon, at magsagawa ng restore mula sa parehong target nang kahit isang beses para matiyak na gumagana ang proseso.
Bakit nagfa-fail ang sha256sum -c sa checksum file ng MinIO?
Dahil ang label pagkatapos ng hash sa file na iyon ay tumutukoy sa release, minio.RELEASE.2025-09-07T16-13-09Z, samantalang karaniwang minio ang pangalan ng na-download mong file. Hinahanap ng sha256sum -c ang file gamit ang pangalang nakasulat sa checksum file. Kapag hindi nito ito makita, nag-uulat ito ng No such file or directory at WARNING: 1 listed file could not be read. Maayos ang download. Direktang paghambingin ang mga hash string at huwag pansinin ang label, dahil wala itong kahulugang pangseguridad.
Saan napunta ang MinIO admin web console?
Inalis ng MinIO ang mga feature para sa administration mula sa console ng community edition noong May 2025. Naiwan ang object browser sa web interface. Pinamamahalaan na ngayon ang buckets at users gamit ang mc client, sa pamamagitan ng mga command tulad ng mc admin user add at mc admin policy attach. Ito ang suportadong paraan sa community edition, hindi isang workaround. Kaya ginagawa ng guide na ito ang lahat mula sa command line.
Paano ko ituturo ang restic sa MinIO bilang S3 backend?
Itakda ang AWS_ACCESS_KEY_ID at AWS_SECRET_ACCESS_KEY sa MinIO access key at katumbas nitong secret. Pagkatapos, gumamit ng repository string na ganito ang anyo: s3:https://s3.example.com/restic. Ang huling path element ang pangalan ng bucket. Gawin muna ang bucket gamit ang mc mb, dahil ang key na saklaw lamang ang isang bucket ay walang permission na gumawa ng buckets. Ine-encrypt ng restic ang lahat gamit ang sarili nitong repository password bago ito i-upload. Dahil dito, ciphertext lamang ang iniimbak ng MinIO at hindi nito nakikita ang iyong mga file.
Kailangan ko bang patakbuhin ang MinIO sa likod ng nginx?
Kailangan mo ng TLS (transport layer security) kapag wala sa parehong machine ang client, dahil dumadaan sa request ang S3 credentials at object data. Ang proxy sa port 443 na may certificate mula sa certbot ang pinakasimpleng paraan para dito. Iniiwasan din nitong ang MinIO ang humawak ng certificate renewal. Maaari ring ang MinIO mismo ang mag-terminate ng TLS kung ituturo mo ang --certs-dir sa directory na naglalaman ng public.crt at private.key. Gayunman, kailangang magkaroon ng read access ang service account sa nire-new na private key. Karagdagang trabaho ito para sa kaparehong resulta.