MinIO sa VPS: Sariling S3 Object Storage sa Ubuntu 24.04
Magpatakbo ng MinIO sa isang Ubuntu 24.04 VPS: verified binary, systemd unit, mc basics, presigned URLs, at restic backup target na kontrolado mo.
Ano ang makukuha mo sa 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 verified binary, isang dedicated 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. Naglalagay ka ng object sa isang bucket gamit ang isang key at kinukuha mo ito gamit ang GET. Walang partial write at walang rename. Ang modelong ito ay angkop sa mga backup tool dahil alinman sa buo itong dumating o hindi ito dumating.
Isang copy lang ng data ang hawak ng isang node. Iyan ang trade-off na pinipili mo. Makakakuha ka ng S3 endpoint na kontrolado mo sa halaga ng isang VPS, ngunit ikaw rin ang sasagot sa lahat ng gawaing dating pinangangasiwaan ng cloud provider, mula sa pagpapalit ng failed disk hanggang sa pag-patch ng server software. Malinaw na ipinapaliwanag ng seksyon malapit sa dulo kung kailan sulit ang trade-off na ito.
Ang estado ng MinIO community edition noong July 2026
Basahin muna ang bahaging ito bago ka magpatuloy, dahil kamakailan itong nagbago. Noong May 2025, inalis ng MinIO ang mga feature para sa administration mula sa web console ng community edition. Ang natitira sa browser ay isang object browser, kaya sa halip, ang mga bucket at access key ay mina-manage gamit ang mc command line client.
Kalaunan noong 2025, itinigil ng MinIO ang pag-publish ng mga pre-compiled na community binary. Ayon sa README ng project, source code lamang ang distribution ng community edition. Gumagana pa rin ang mga mas lumang download URL: noong July 2026, nagsisilbi ang mga ito ng 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. Totoo at gumagana ang binary sa ibaba, pero frozen na ito. Wala rito ang mga security fix na inilabas pagkatapos ng September 2025.
Ang isang fact na ito ang nagtatakda sa iba pang bahagi ng guide na ito. Ito ang dahilan kung bakit nakikinig ang MinIO dito sa 127.0.0.1 at ina-access lamang ang internet sa pamamagitan ng proxy na kontrolado mo. Kung mas gusto mong masundan ang mga bagong fix, mag-build mula sa source. May isang command na ibinigay sa vendor README, ang 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; 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 published checksum nito. Ginagawa ng -f flag na mag-fail ang curl kapag may HTTP error, sa halip na i-save ang error page gamit ang filename na hinihingi mo. Dahil dito, may mga nakaka-install ng 404 page at nagtataka kung bakit hindi ito ma-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.sha256sumI-compare ang dalawang hash, at ang hash lamang ang i-compare.
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 loob ng file ay minio.RELEASE.2025-09-07T16-13-09Z, samantalang minio ang ginamit nating filename sa download. Kaya naghahanap ang -c ng file na hindi umiiral. Iniuulat nito ang No such file or directory at pagkatapos ay WARNING: 1 listed file could not be read, na maaaring magmukhang corrupted ang download kahit hindi naman. Pangalan lamang ang label. Ang hash ang bahaging nagbibigay ng garantiya.
Maging malinaw sa saklaw ng check na ito. Galing sa iisang vendor at dumaan sa iisang connection ang binary at hash, kaya pinatutunayan ng magkaparehong hash na kumpleto ang download at hindi ito nasira o nabago habang ipinapadala. Hindi nito pinatutunayang 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 --versionIni-print ng minio --version ang 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 uploads mula sa network, kaya hindi ito dapat patakbuhin 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 user. 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 gamit ang 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 para paglagyan ng sarili nitong configuration. Kaya kapag root ang may-ari ng directory, lumalabas ang MinIO sa startup na may mensaheng nagtatapos sa permission denied. Nalalapat din ang parehong tuntunin sa bawat service na patatakbuhin mo sa ganitong paraan. Maayos itong ipinapaliwanag sa mga service user na may least privilege sa isang VPS.
Ilagay ang root credentials sa isang environment file
Binubuksan ng root credentials ang lahat ng bucket, kaya hindi dapat ilagay ang mga ito sa unit file, na nababasa ng lahat. Gawin muna ang file gamit ang tamang mode, saka ito sulatan. Sa ganitong paraan, hindi kailanman nasa file na nababasa ang password kahit saglit.
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 ay nagta-truncate ng kasalukuyang file sa halip na gumawa ulit ng file, 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=. Ibig sabihin, 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.
Mahalagang malaman ang dalawang behavior ng MinIO bago mo ito simulan. Kapag walang MINIO_ROOT_USER at walang MINIO_ROOT_PASSWORD sa environment nito, hindi tumatangging magsimula ang MinIO. Nagsisimula ito gamit ang documented default credentials na minioadmin:minioadmin. Ito ang unang pares na sinusubukan ng anumang scanner, at mukhang ganap na maayos ang service habang ginagamit ang mga ito. Sa halip, nirereject ang password na wala pang 8 character. Lumalabas ang MinIO sa startup na may error na invalid ang credentials, dahil kailangan ng access key ng hindi bababa sa 3 character at ng secret key ng hindi bababa sa 8.
MINIO_VOLUMES ang data path, at nasa MINIO_OPTS ang mga flag. Kapag nag-bind sa 127.0.0.1, walang makakaabot sa S3 API mula sa labas ng VPS. Ito ang tamang default. Sinasadya mong buksan ang access dito sa ibang pagkakataon, sa pamamagitan ng proxy na may certificate.
Isulat ang systemd unit
Gumawa ng /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 iyon. 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 sa minioadmin:minioadmin. Kapag walang dash, magfa-fail ang unit kapag nawawala ang file 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 server na tahimik na tumatanggap ng default password.
Sadyang hindi naka-quote ang $MINIO_VOLUMES at $MINIO_OPTS, dahil hinahati ng systemd ang mga unquoted variable sa whitespace at ginagawang magkakahiwalay na argument. Ganito nagiging apat na argument para sa minio server ang apat na salita sa MINIO_OPTS. Itinataas ng LimitNOFILE=65536 ang file descriptor limit, 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 na pinakikinggan ng 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 gumagamit ng shared host kernel, gaya ng OpenVZ o LXC, maaaring mag-fail ang mga ito, at iuulat ng unit ang status=226/NAMESPACE. Alisin ang dalawang linyang iyon at magsisimula ito. Ordinaryong unit ang mismong unit, at tinatalakay ng systemd services at timers sa isang VPS ang iba pang directives.
Mag-install ng 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/mcI-register ang server bilang alias, pagkatapos ay ilipat ang isang object sa pamamagitan nito.
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 size 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 ginagawa nito ang parehong signed S3 requests na gagawin ng iba pang client. Ini-print ng mc admin info local ang server status kung gusto mo ng karagdagang verification.
Magsagawa ngayon ng isa pang check habang wala pang laman ang server.
mc alias set defaultcheck http://127.0.0.1:9000 minioadmin minioadminDapat mag-fail ang command na ito. Kung magtagumpay ito, hindi umabot sa process ang environment file at tumatakbo ang server gamit ang default credentials. Ayusin muna ito bago magkaroon ng ibang access ang machine.
Ini-store ng mc ang mga alias sa ~/.mc/config.json bilang plain text, kaya napupunta ang mga credential na iyon sa home directory ng user na nagpatakbo ng command. Kapag pinatakbo ang mc sa ilalim ng sudo, napupunta ang root credentials sa /root/.mc/config.json. Panatilihin ang root alias sa isang administrator account at bigyan ang bawat application ng sarili nitong key.
Magbahagi 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 client.
mc share download --expire 12h local/backups/hello.txtNasa query string ng output ang X-Amz-Signature at X-Amz-Expires. May dalawang bagay tungkol dito na kadalasang ikinagugulat ng mga tao. Binubuo ang link mula sa endpoint sa alias na ginamit mo, kaya ang alias sa 127.0.0.1 ay gumagawa ng link na mabubuksan lamang ng machine na ito: gumawa ng isa pang alias sa public hostname para sa mga link na balak mong ipadala. Wala ring revoke button. Mananatiling valid ang signature hanggang sa expiration nito, kaya maikling expiration lamang ang kontrol na mayroon ka. Pitong araw ang maximum na pinapahintulutan ng S3 signature format.
Bigyan ang restic ng sariling key at bucket
Maaaring basahin at i-delete ng root credentials ang bawat bucket, kaya hindi dapat gamitin ng backup job ang mga ito. Gumawa ng bucket, policy na nakalaan lamang sa bucket na iyon, at user na walang 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 magpapabawas sana ng isang command, ngunit nagbibigay ito ng full access sa bawat bucket sa server. Sadyang dalawang beses binabanggit ng policy sa itaas ang bucket: una bilang arn:aws:s3:::restic upang gumana ang pag-lista sa bucket, at muli 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 lamang sa mga ito ang binabanggit. Maaari itong magmukhang sira ang client.
I-test ang limit 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/backupsTagumpay ang unang ls at nabigo ang pangalawa gamit ang Access Denied. Ang policy na hindi mo pa na-test ay hula lamang.
Ituro ngayon ang restic sa bucket. Binabasa ng restic ang S3 credentials mula sa standard AWS environment variables, 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. Ini-encrypt ng password na ito ang repository, kaya ciphertext lamang 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 scheduled backups.
Mas mahalaga kaysa sa alinmang command sa itaas ang isang placement rule. Kung nasa parehong VPS ang restic repository at ang data na pinoprotektahan nito, mapoprotektahan ka lamang nito mula sa masamang rm. Wala na itong ibang proteksyon. 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 batay dito.
Terminate TLS with nginx
MinIO sits on localhost, so nginx is the public surface. Issue the certificate first, as described in Let's Encrypt certificates with certbot and nginx, then use this server block.
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;
}
}Several of those lines are load-bearing. client_max_body_size 0 removes the default 1 MB body limit, which otherwise rejects any larger upload with 413 Request Entity Too Large before MinIO sees the request at all. proxy_request_buffering off streams the upload straight through, because the default spools the whole request into a temporary file first, and a large object then needs disk space twice over. proxy_set_header Host $http_host is the subtle one: an S3 signature covers the Host header, so a proxy that rewrites it makes every request fail with SignatureDoesNotMatch while the access log shows a normal request arriving.
Tell MinIO its public name as well, so the links it generates point at the proxy rather than at localhost.
echo 'MINIO_SERVER_URL=https://s3.example.com' | sudo tee -a /etc/default/minio
sudo systemctl restart minioThe firewall stays small. Allow SSH and HTTPS, and leave ports 9000 and 9001 with no rule at all, because an address bound to 127.0.0.1 is unreachable from another machine whatever the firewall says. ufw firewall basics on a VPS has the commands.
Kailan sapat ang single-node MinIO, at kailan dapat gumamit ng totoong S3
Ang ibig sabihin ng single node dito ay isang drive na walang 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 iisang VPS disk. 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. Kaya huwag 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 nangangahulugan lamang ng rebuild at wala nang iba. Maaari rin itong gamitin 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 hinihingi ng isang contract o regulator ang object lock o multi-region durability, o kapag ayaw mong ikaw ang makatanggap ng page sa 03:00 dahil napuno ang isang disk. Ang frozen build ang isa pang makatotohanang 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 kalagayang iyon, o nagbu-build ka mula sa source at ikaw mismo ang sumusubaybay sa project.
Mahalagang banggitin ang isang boundary dahil madalas itong lumitaw. Hindi database ang object storage. Pinapalitan ng bawat write ang buong object, kaya mabagal at hindi ligtas ang paglalagay ng 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
Nagfa-fail ang unit kaagad pagkatapos ng systemctl enable --now. Basahin ang journalctl -u minio -n 30 --no-pager. Ang Failed to load environment files: No such file or directory ay nangangahulugang 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 tiyaking ang stat -c '%U' /var/lib/minio/data ay nagpi-print ng minio-user.
Naka-log in pa rin ang minioadmin:minioadmin. Hindi nakarating sa process ang environment file. Tiyaking may EnvironmentFile=/etc/default/minio ang unit, 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 hindi nagre-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 ang mga upload na lampas 1 MB sa proxy. 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 bahagi sa pagitan ng client at MinIO na nag-rewrite 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. Suriin 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 pinapahintulutan 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 totoong backups?
Sapat ito bilang restic target na tumatakbo sa hiwalay na machine mula sa data na pinoprotektahan nito. Hindi ito sapat bilang nag-iisa mong kopya. Walang parity ang single-drive deployment, kaya walang pangalawang kopya sa loob ng MinIO. Kung mawalan ng data ang disk ng VPS, mawawala ang mga object. Magpanatili ng pangalawang target sa ibang lokasyon, at mag-restore mula sa dalawang target kahit isang beses upang matiyak na gumagana ang proseso.
Bakit nagfa-fail ang sha256sum -c sa checksum file ng MinIO?
Dahil tinutukoy ng label pagkatapos ng hash sa file na iyon ang release, minio.RELEASE.2025-09-07T16-13-09Z, samantalang karaniwang minio ang pangalan ng na-download mong file. Hinahanap ng sha256sum -c ang file na may pangalang nakasulat sa checksum file. Kapag hindi ito makita, iniuulat nito ang 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 security meaning.
Saan napunta ang admin web console ng MinIO?
Inalis ng MinIO ang mga administration feature mula sa console ng community edition noong May 2025. Naiwan ang object browser sa web interface. Pinamamahalaan na ngayon ang buckets at user gamit ang mc client, gamit ang mga command gaya 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 may anyong s3:https://s3.example.com/restic, kung saan ang huling path element ang pangalan ng bucket. Gawin muna ang bucket gamit ang mc mb. Walang permission ang key na naka-scope sa isang bucket na gumawa ng bucket. Ine-encrypt ng restic ang lahat gamit ang sarili nitong repository password bago ang upload. Kaya ciphertext 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 iisang machine ang client at MinIO. Parehong dumadaan sa request ang S3 credentials at object data. Ang proxy sa port 443 na may certificate mula sa certbot ang pinakasimpleng paraan para maisagawa ito. Inilalayo rin nito sa MinIO ang 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 ni-renew na private key. Dagdag na trabaho ito para sa parehong resulta.