Jinsi ya Kuendesha MinIO kwenye VPS ya Ubuntu 24.04
Jifunze kuendesha MinIO kwenye VPS moja ya Ubuntu 24.04: sakinisha binary iliyothibitishwa, sanidi systemd, tumia mc na restic, na tengeneza presigned URLs.
Unapata nini kwa hifadhi ya vitu inayojisimamiwa kwa MinIO
MinIO ni hifadhi ya vitu inayojisimamiwa ambayo hutumia API ya Amazon S3. Elekeza restic au SDK yoyote ya S3 kwenye seva yako, badilisha mpangilio mmoja wa endpoint, na mteja hataweza kutofautisha. Mwongozo huu huunda nodi moja kwenye Ubuntu 24.04: binary iliyothibitishwa, mtumiaji maalumu wa mfumo, kitengo cha systemd kinachoweka kitambulisho cha root nje ya faili ya kitengo, na bucket ambayo restic hutumia kuhifadhi nakala.
S3 (huduma rahisi ya hifadhi) ni API ya HTTP, si mfumo wa faili. Unaweka kitu kwenye bucket kwa kutumia key, kisha unakipata tena, na hakuna uandishi wa sehemu wala kubadilisha jina. Zana za kuhifadhi nakala hupendelea muundo huo kwa sababu kitu huwasili kikiwa kamili au hakifiki kabisa.
Nodi moja huhifadhi nakala moja ya data yako. Huo ndio mabadilishano unayokubali. Unapata endpoint ya S3 unayoidhibiti kwa gharama ya VPS, na pia unachukua kila jukumu ambalo mtoa huduma wa wingu alikuwa akifanya, kuanzia kubadilisha diski iliyoharibika hadi kusasisha programu ya seva. Sehemu iliyo karibu na mwisho inaeleza wazi wakati mabadilishano hayo yanafaa.
Hali ya toleo la MinIO la jamii mnamo Julai 2026
Soma sehemu hii kabla ya kujenga mfumo unaotegemea MinIO, kwa sababu hali ilibadilika hivi karibuni. Mnamo Mei 2025, MinIO iliondoa vipengele vya usimamizi kwenye kiweko cha wavuti katika toleo la jamii. Kinachobaki kwenye kivinjari ni kivinjari cha objekti. Kwa hiyo, ndoo na funguo za ufikiaji husimamiwa kwa kutumia mteja wa mstari wa amri mc.
Baadaye mwaka wa 2025, MinIO iliacha kuchapisha jozi za programu za jamii zilizokusanywa mapema. README ya mradi sasa inasema kuwa toleo la jamii linasambazwa kama msimbo chanzo pekee. URL za zamani za kupakua bado zinafanya kazi. Kufikia Julai 2026, zinatoa ujenzi wa seva RELEASE.2025-09-07T16-13-09Z na ujenzi wa mteja RELEASE.2025-08-13T08-35-41Z. Hakuna ujenzi mpya zaidi wa jamii ulioonekana. Kwa hiyo, jozi ya programu iliyo hapa ni halisi na inafanya kazi, lakini imegandishwa. Marekebisho ya usalama yaliyochapishwa baada ya Septemba 2025 hayamo ndani yake.
Jambo hilo moja linaathiri mwongozo huu wote. Ndilo linalofanya MinIO hapa isikilize kwenye 127.0.0.1 na ifikie intaneti kupitia proksi unayoidhibiti pekee. Ikiwa ungependa kufuatilia marekebisho, jenga kutoka kwenye msimbo chanzo. README ya muuzaji inatoa amri moja, go install github.com/minio/minio@latest. Amri hiyo inahitaji zana za Go na huandika jozi ya programu kwenye ~/go/bin/minio. Sakinisha jozi hiyo ya programu kwenye /usr/local/bin/minio, kisha hatua nyingine zote hapa zitabaki zilezile.
Sakinisha binary ya MinIO na uthibitishe upakuaji
Pakua toleo lililobainishwa pamoja na checksum yake iliyochapishwa. Bendera ya -f hufanya curl ishindwe inapopata hitilafu ya HTTP, badala ya kuhifadhi ukurasa wa hitilafu kwa jina uliloomba. Hivyo ndivyo watu huishia kusakinisha ukurasa wa 404 na kushangaa kwa nini hauwezi kutekelezwa.
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.sha256sumLinganisha heshi hizo mbili, na linganisha heshi pekee.
published=$(awk '{print $1}' minio.sha256sum)
downloaded=$(sha256sum minio | awk '{print $1}')
[ "$published" = "$downloaded" ] && echo "checksum ok"Usitumie sha256sum -c minio.sha256sum hapa. Jina lililoandikwa baada ya heshi ndani ya faili hilo ni minio.RELEASE.2025-09-07T16-13-09Z, na tulihifadhi upakuaji kama minio. Kwa hiyo, -c hutafuta faili ambalo halipo. Huripoti No such file or directory kisha WARNING: 1 listed file could not be read, hali inayoweza kuonekana kama upakuaji ulioharibika, ingawa si hivyo. Jina hilo ni lebo tu. Heshi ndiyo sehemu yenye dhamana.
Elewa wazi kile ambacho ukaguzi huu unathibitisha. Binary na heshi zimetoka kwa muuzaji yuleyule kupitia muunganisho uleule. Kwa hiyo, ulinganifu unathibitisha kwamba upakuaji umekamilika na haukuharibika wala kubadilishwa wakati wa uhamishaji. Hauthibitishi kwamba muuzaji anaaminika. Hilo ni suala tofauti, na hakuna amri ya sha256sum inayoweza kulitatua.
sudo install -o root -g root -m 755 minio /usr/local/bin/minio
minio --versionminio --version huchapisha minio version RELEASE.2025-09-07T16-13-09Z ikifuatiwa na mistari michache ya ujenzi. Permission denied hapa inamaanisha kuwa mode si sahihi, na command not found inamaanisha kuwa /usr/local/bin haipo kwenye PATH yako.
Unda mtumiaji wa mfumo na saraka ya data
MinIO hupokea upakiaji kutoka kwenye mtandao, kwa hiyo haipaswi kuendeshwa kama root. Ipe akaunti isiyo na saraka ya nyumbani na isiyo na shell ya kuingia.
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 huunda akaunti ya mfumo yenye UID iliyo chini ya 1000, hivyo akaunti hiyo haingii katika anuwai inayotumiwa na watu. -M huruka kuunda saraka ya nyumbani, kwa sababu akaunti ambayo haiingii kamwe haina chochote cha kuhifadhi humo. Kagua matokeo kwa id minio-user, na kwa stat -c '%U %a' /var/lib/minio, ambayo inapaswa kuchapisha minio-user 750.
Saraka ya data lazima iweze kuandikwa na mtumiaji huyo, si kusomeka tu. MinIO inapozinduliwa kwa mara ya kwanza huunda saraka ya .minio.sys ndani ya volume ili kuhifadhi usanidi wake. Kwa hiyo, saraka inayomilikiwa na root husababisha MinIO kutoka wakati wa kuanza ikiwa na ujumbe unaoishia kwa permission denied. Kanuni hiyo inatumika pia kwa kila huduma unayoendesha kwa njia hii, na watumiaji wa huduma wenye ruhusa chache kwenye VPS inaeleza jambo hilo kikamilifu.
Weka vitambulisho vya root katika faili la mazingira
Vitambulisho vya root vinafungua kila bucket, kwa hiyo havipaswi kuwekwa katika faili la unit, ambalo linaweza kusomwa na kila mtumiaji. Unda faili hilo kwa mode sahihi kwanza, kisha liandikie. Hivyo, nenosiri halitakuwa katika faili linaloweza kusomwa hata kwa muda mfupi.
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 hukata yaliyomo katika faili lililopo badala ya kuliumba upya, kwa hiyo mode hubaki 600 na mmiliki hubaki root. Hilo limekusudiwa. systemd husoma EnvironmentFile kama root kabla ya kushusha ruhusa hadi User=, kwa hiyo akaunti ya huduma haihitaji kamwe kusoma vitambulisho vyake yenyewe. Huduma ikishaendesha, thibitisha hilo kwa sudo -u minio-user cat /etc/default/minio. Amri hiyo lazima ichapishe Permission denied.
Tabia mbili za MinIO zinafaa kujulikana kabla ya kuiendesha. Bila MINIO_ROOT_USER na MINIO_ROOT_PASSWORD katika mazingira yake, MinIO haikatai kuanza. Huanzisha huduma kwa vitambulisho chaguo-msingi vilivyoandikwa katika nyaraka, minioadmin:minioadmin, ambavyo ni jozi ya kwanza ambayo kichanganuzi chochote hujaribu, na huonekana kuwa na afya kabisa inapoendelea hivyo. Nenosiri lenye vibambo chini ya 8 hukataliwa badala yake: MinIO hutoka wakati wa kuanza ikiwa na hitilafu inayosema vitambulisho si sahihi, kwa sababu access key inahitaji angalau vibambo 3 na secret key angalau vibambo 8.
MINIO_VOLUMES ni njia ya data, na MINIO_OPTS huhifadhi flags. Kufunga kwenye 127.0.0.1 kunamaanisha kuwa hakuna kitu nje ya VPS hii kinachoweza kufikia S3 API bado, ambao ndio mpangilio chaguo-msingi unaofaa. Utaifungua baadaye kwa makusudi, kupitia proxy iliyo na certificate.
Andika kitengo cha systemd
Unda /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.targetHakuna - mwanzoni mwa EnvironmentFile, na hilo ni uamuzi, si kosa la kuandika. Ikiwa alama ya kistari ipo, systemd hupuuza faili inayokosekana na kuanzisha MinIO hata hivyo. Kwa hiyo, faili iliyofutwa au njia iliyoandikwa vibaya inaweza kukupa bila taarifa server inayotumia minioadmin:minioadmin. Bila kistari, faili inayokosekana husababisha kitengo kishindwe kabla MinIO haijawahi kuendeshwa, na journalctl -u minio huonyesha Failed to load environment files: No such file or directory. Kitengo kinachokataa kuanza ni rahisi zaidi kutambua kuliko server inayokubali kimya kimya nenosiri la msingi.
$MINIO_VOLUMES na $MINIO_OPTS hazijawekwa ndani ya alama za kunukuu kwa makusudi, kwa sababu systemd hugawanya vigezo visivyo katika alama za kunukuu kwa kutumia nafasi nyeupe na kuvifanya hoja tofauti. Hivyo maneno manne katika MINIO_OPTS huwa hoja nne za minio server. LimitNOFILE=65536 huongeza kikomo cha file descriptors, kwa sababu kila muunganisho ulio wazi na kila faili la data lililo wazi hutumia descriptor moja, na kikomo chaguo-msingi cha 1024 hujaa wakati wa mzigo mkubwa.
sudo systemctl daemon-reload
sudo systemctl enable --now minio
systemctl is-active minio
curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:9000/minio/health/liveis-active inapaswa kuchapisha active, na endpoint ya afya inapaswa kujibu 200. journalctl -u minio -n 20 --no-pager huonyesha anwani ya API ambayo server inasikiliza. Ikiwa kitengo kinaendelea kuanzishwa upya, systemd hukata tamaa na kuandika Start request repeated too quickly kwenye logi. Hii inamaanisha MinIO hutoka kila inapojaribu kuanza. Sababu huandikwa kwenye mistari iliyo juu ya ujumbe huo, kwa hiyo soma kuelekea juu.
Kwa utenganishaji zaidi, ongeza ProtectSystem=full na ProtectHome=true kwenye sehemu ya [Service]. Vyote vinahitaji mount namespaces kutoka kernel ya host. Kwenye uvirtualishaji wa kontena unaoshiriki kernel ya host, kama OpenVZ au LXC, vinaweza kushindwa, na kitengo huonyesha status=226/NAMESPACE. Ondoa mistari hiyo miwili, kisha huanza. Kitengo chenyewe ni kitengo cha kawaida, na huduma na vipima muda vya systemd kwenye VPS kinaeleza maagizo mengine.
Sakinisha mc na uthibitishe uhamishaji wa kwenda na kurudi
Mteja wa MinIO ni mc. Usiusakinishe kwa kutumia apt install mc. Kifurushi hicho ni Midnight Commander, kidhibiti faili kisichohusiana na 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/mcSajili seva kama lakabu, kisha hamisha kitu kupitia seva hiyo.
MINIO_PASS=$(sudo sed -n 's/^MINIO_ROOT_PASSWORD=//p' /etc/default/minio)
mc alias set local http://127.0.0.1:9000 minio-root "$MINIO_PASS"
mc mb local/backups
echo "hello object storage" > /tmp/hello.txt
mc cp /tmp/hello.txt local/backups/hello.txt
mc ls local/backups
mc cat local/backups/hello.txtmc ls inapaswa kuorodhesha hello.txt pamoja na ukubwa wake, na mc cat inapaswa kuchapisha hello object storage. Uhamishaji huo wa kwenda na kurudi ndio uthibitisho halisi kwamba seva inafanya kazi, kwa sababu unatuma maombi yale yale yaliyotiwa sahihi ya S3 ambayo kila mteja mwingine atatuma. mc admin info local huchapisha hali ya seva ikiwa unataka uthibitisho wa ziada.
Fanya ukaguzi mmoja zaidi sasa, wakati seva bado haina kitu.
mc alias set defaultcheck http://127.0.0.1:9000 minioadmin minioadminAmri hii lazima ishindwe. Ikiwa itafaulu, faili ya mazingira haikufikia mchakato, na seva yako inatumia vitambulisho chaguo-msingi. Rekebisha hilo kabla kitu kingine chochote hakijafikia mashine.
mc huhifadhi lakabu katika ~/.mc/config.json kama maandishi wazi, kwa hiyo vitambulisho hivyo hubaki katika saraka ya nyumbani ya mtumiaji aliyeendesha amri hiyo. Kuendesha mc kwa kutumia sudo huweka vitambulisho vya root katika /root/.mc/config.json. Hifadhi lakabu ya root kwenye akaunti moja ya msimamizi, na upe kila programu ufunguo wake.
Toa kitu kimoja kwa URL iliyotiwa sahihi awali
URL iliyotiwa sahihi awali ni kiungo cha kawaida cha HTTPS kilicho na sahihi na muda wa kuisha. Mtu yeyote aliye na kiungo hicho anaweza kupakua kitu hicho kimoja bila akaunti na bila client.
mc share download --expire 12h local/backups/hello.txtMatokeo yana X-Amz-Signature na X-Amz-Expires katika mfuatano wa hoja. Kuna mambo mawili kuhusu URL hii yanayowashangaza watu. Kiungo huundwa kwa kutumia endpoint iliyo katika alias uliyotumia. Kwa hiyo, alias kwenye 127.0.0.1 huunda kiungo ambacho kinaweza kufunguliwa na mashine hii pekee. Tengeneza alias ya pili kwenye hostname yako ya umma kwa ajili ya viungo unavyokusudia kutuma. Pia hakuna kitufe cha kubatilisha. Sahihi itaendelea kuwa halali hadi muda wake wa kuisha, kwa hiyo muda mfupi wa kuisha ndio udhibiti pekee ulio nao. Siku saba ndio muda wa juu unaoruhusiwa na umbizo la sahihi la S3.
Mpe restic ufunguo na bucket yake
Vitambulisho vya root vinaweza kusoma na kufuta kila bucket, kwa hiyo kazi ya kuhifadhi nakala haipaswi kuvitumia. Unda bucket, sera inayohusu bucket hiyo pekee, na mtumiaji ambaye hapati ruhusa nyingine.
mc mb local/restic
cat > /tmp/restic-rw.json <<'EOF'
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::restic"]
},
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
"Resource": ["arn:aws:s3:::restic/*"]
}
]
}
EOF
RESTIC_KEY=$(openssl rand -base64 24)
mc admin policy create local restic-rw /tmp/restic-rw.json
mc admin user add local restic-backup "$RESTIC_KEY"
mc admin policy attach local restic-rw --user restic-backupMinIO inakuja na sera iliyojengwa ndani ya readwrite ambayo ingehitaji amri moja chache, na inatoa ufikiaji kamili kwa kila bucket kwenye seva. Sera iliyo hapo juu inataja bucket mara mbili kwa makusudi: mara moja kama arn:aws:s3:::restic ili kuorodhesha bucket kuwezekane, na mara nyingine kama arn:aws:s3:::restic/* kwa vitu vilivyo ndani yake. Katika S3, bucket na vitu vyake ni rasilimali tofauti, kwa hiyo sera inayotaja moja tu kati yao inashindwa kwa namna inayoonekana kana kwamba mteja umeharibika.
Jaribu kikomo kabla ya kukitegemea.
mc alias set resticuser http://127.0.0.1:9000 restic-backup "$RESTIC_KEY"
mc ls resticuser/restic
mc ls resticuser/backupsls ya kwanza inafanikiwa, na ya pili inashindwa kwa kutumia Access Denied. Sera ambayo hujaijaribu ni makisio tu.
Sasa elekeza restic kwenye bucket. restic husoma vitambulisho vya S3 kutoka kwenye vigeu vya kawaida vya mazingira vya AWS, kwa hiyo hakuna faili maalumu ya vitambulisho vya restic.
sudo apt install -y restic
export AWS_ACCESS_KEY_ID=restic-backup
export AWS_SECRET_ACCESS_KEY="$RESTIC_KEY"
restic -r s3:http://127.0.0.1:9000/restic init
restic -r s3:http://127.0.0.1:9000/restic backup /etc
restic -r s3:http://127.0.0.1:9000/restic snapshotsrestic init huomba nenosiri la hifadhi. Nenosiri hilo husimba hifadhi kwa njia fiche, kwa hiyo MinIO huhifadhi data iliyosimbwa tu, na kupoteza nenosiri kunamaanisha kupoteza nakala ya kuhifadhi. Kazi iliyoanzishwa na kipima muda cha systemd haina terminal ya kuingiza nenosiri, kwa hiyo weka RESTIC_PASSWORD_FILE iwe faili yenye mode 600 kwa nakala za kuhifadhi zilizopangwa.
Kanuni moja ya uwekaji ni muhimu zaidi kuliko amri yoyote iliyo hapo juu. Hifadhi ya restic iliyo kwenye VPS ileile na data inayolinda hukulinda dhidi ya rm mbaya tu, na si dhidi ya jambo lingine. Nodi ya MinIO inapaswa kuwa kwenye mashine tofauti, ikiwezekana katika eneo tofauti. nakala za restic kwenye VPS inaeleza upangaji wa ratiba na uhifadhi wa matoleo kwa msingi wa usanidi huu.
Kusitisha TLS kwa nginx
MinIO inaendeshwa kwenye localhost, kwa hiyo nginx ndiyo sehemu inayoonekana hadharani. Toa cheti kwanza, kama ilivyoelezwa katika Vyeti vya Let's Encrypt kwa certbot na nginx, kisha tumia server block hii.
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;
}
}Baadhi ya mistari hiyo ni muhimu kwa uendeshaji. client_max_body_size 0 huondoa kikomo chaguo-msingi cha ukubwa wa mwili wa 1 MB. Bila hivyo, upakiaji wowote mkubwa zaidi hukataliwa kwa 413 Request Entity Too Large kabla MinIO haijapokea ombi hilo. proxy_request_buffering off hupitisha upakiaji moja kwa moja, kwa sababu mipangilio chaguo-msingi huhifadhi ombi lote katika faili ya muda kwanza. Hivyo, object kubwa huhitaji nafasi ya diski mara mbili. proxy_set_header Host $http_host ndiyo sehemu yenye changamoto: Sahihi ya S3 hujumuisha kichwa cha Host. Kwa hiyo, proxy ikibadilisha kichwa hicho, kila ombi hushindwa kwa SignatureDoesNotMatch, ingawa access log inaonyesha ombi la kawaida limewasili.
Iambie MinIO jina lake la umma pia, ili viungo inavyotengeneza vielekee kwenye proxy badala ya localhost.
echo 'MINIO_SERVER_URL=https://s3.example.com' | sudo tee -a /etc/default/minio
sudo systemctl restart minioFirewall inaweza kubaki na sheria chache. Ruhusu SSH na HTTPS, na usiweke sheria yoyote kwa ports 9000 na 9001. Hii ni kwa sababu anwani iliyofungamanishwa na 127.0.0.1 haiwezi kufikiwa kutoka kwenye mashine nyingine, bila kujali firewall imewekwa vipi. Misingi ya ufw firewall kwenye VPS ina commands.
Wakati MinIO ya nodi moja inatosha, na wakati unahitaji S3 halisi
Nodi moja hapa inamaanisha diski moja bila parity kabisa. Nyaraka rasmi za MinIO zinaeleza kuwa mpangilio huu unafaa kwa majaribio na mzigo mdogo usiohitaji upatikanaji wa huduma. Hakuna nakala ya pili ndani ya deployment, kwa hiyo uimara wa kila object unategemea uimara wa diski moja ya VPS. Vipengele vinavyohitaji backend iliyosambazwa yenye erasure coding, kutia ndani replication ya bucket na object locking, ni vya deployments zenye diski nyingi. Kwa hiyo, usimuahidi mtu sera ya retention isiyoweza kubadilishwa kwenye mpangilio huu.
Unaufaa kama target ya restic kwenye VPS ya pili iliyo katika region nyingine, na kama endpoint ya S3 kwa kazi za uendelezaji na artifacts za CI, ambapo kupoteza bucket kunahitaji tu kuijenga upya. Pia unafaa kwa uploads za watumiaji katika application ndogo, mradi unamiliki mpango wa recovery na umefanya jaribio halisi la restore.
Chagua S3 inayosimamiwa wakati mkataba au mdhibiti anahitaji object lock au uimara katika regions nyingi, au wakati hutaki kuwa mtu anayepigiwa pager saa 03:00 kwa sababu diski imejaa. Build iliyogandishwa ni sababu nyingine ya msingi. Kufikia July 2026, binary ya community iliyotanguliwa kuundwa ilitoka September 2025 na haipokei marekebisho, kwa hiyo kuiendesha kunamaanisha kukubali hali hiyo, au kujenga kutoka source na kuendelea kufuatilia mradi mwenyewe.
Kuna mpaka mmoja unaofaa kutajwa kwa sababu hujitokeza mara nyingi. Object storage si database. Kila write hubadilisha object nzima, kwa hiyo file ya SQL inayotumika moja kwa moja kwenye bucket ya S3 huwa polepole na si salama. Weka database kwenye diski ya ndani na uifanyie backup kwenye bucket badala yake: kuendesha SQLite production kwenye VPS inaeleza mgawanyo huo.
Hali za kushindwa na ujumbe utakaouona
Kitengo kinashindwa mara tu baada ya systemctl enable --now. Soma journalctl -u minio -n 30 --no-pager. Failed to load environment files: No such file or directory inamaanisha kuwa /etc/default/minio haipo au njia yake imeandikwa vibaya kwenye kitengo. Ujumbe unaoishia kwa permission denied unamaanisha kuwa saraka ya data haiwezi kuandikiwa na akaunti ya huduma. Kwa hiyo, hakikisha kuwa stat -c '%U' /var/lib/minio/data inachapisha minio-user.
minioadmin:minioadmin bado inaingia. Faili ya mazingira haikufikia mchakato. Thibitisha kuwa kitengo kina EnvironmentFile=/etc/default/minio, endesha sudo systemctl daemon-reload, kisha uwashe upya huduma. MinIO husoma vitambulisho vyake vya root mara moja wakati wa kuanzisha. Kwa hiyo, kuhariri faili hiyo bila kuwasha upya hakubadili chochote.
Address already in use wakati wa kuanzisha. Mchakato mwingine unatumia port 9000. Utafute kwa sudo ss -ltnp | grep :9000 kabla ya kubadilisha port ya MinIO.
Upakiaji unaozidi 1 MB unashindwa kupitia proksi. nginx ilijibu 413 Request Entity Too Large na MinIO haikuona ombi. Weka client_max_body_size 0 katika kizuizi cha server.
SignatureDoesNotMatch. Aidha secret key si sahihi, au kitu kati ya mteja na MinIO kilibadilisha kichwa cha Host, ambacho kinajumuishwa kwenye sahihi.
RequestTimeTooSkewed. Saa ya mteja au seva si sahihi. Kila ombi la S3 hubeba muhuri wa muda na hukataliwa likiwa nje ya kipindi cha dakika 15. Kagua timedatectl na uthibitishe kuwa ulandanishi wa muda unatumika.
Access Denied kwenye bucket unayojua ipo. Key imewekewa upeo wa bucket tofauti. Chapisha kile ambacho sera inaruhusu kwa kutumia mc admin policy info local restic-rw, kisha linganisha jina la bucket katika mistari ya rasilimali.
FAQ
Je, MinIO ya nodi moja inatosha kwa nakala halisi za chelezo?
Inatosha kama lengwa la restic linaloendesha kwenye mashine tofauti na data inayolindwa. Haitoshi kuwa nakala yako pekee. Usambazaji unaotumia diski moja hauna parity kabisa, kwa hiyo hakuna nakala ya pili ndani ya MinIO. Ikiwa diski ya VPS hiyo itapoteza data, objects zitapotea. Weka lengwa la pili mahali pengine, kisha urejeshe data kutoka kwenye lengwa zote angalau mara moja ili kuthibitisha kuwa mchakato unafanya kazi.
Kwa nini sha256sum -c inashindwa kwenye faili la checksum la MinIO?
Kwa sababu lebo iliyo baada ya hash ndani ya faili hilo inataja release, minio.RELEASE.2025-09-07T16-13-09Z, huku faili uliyopakua kwa kawaida ikiitwa minio. sha256sum -c hutafuta faili lenye jina lililoandikwa ndani ya faili la checksum, halilipati, kisha huripoti No such file or directory na WARNING: 1 listed file could not be read. Upakuaji uko sawa. Linganisha mifuatano ya hash moja kwa moja na upuuze lebo hiyo, kwa kuwa haina maana ya usalama.
Dashibodi ya wavuti ya msimamizi wa MinIO ilienda wapi?
MinIO iliondoa vipengele vya usimamizi kutoka kwenye dashibodi ya community edition mwezi wa May 2025, na kuacha kivinjari cha objects kwenye kiolesura cha wavuti. Buckets na users sasa zinasimamiwa kwa mteja wa mc, kwa kutumia amri kama mc admin user add na mc admin policy attach. Hiyo ndiyo njia inayoungwa mkono katika community edition, si workaround. Ndiyo sababu mwongozo huu unafanya kila kitu kutoka kwenye mstari wa amri.
Ninaelekezaje restic kwenye MinIO kama backend ya S3?
Weka AWS_ACCESS_KEY_ID na AWS_SECRET_ACCESS_KEY ziwe access key ya MinIO na siri yake, kisha tumia mfuatano wa repository wa muundo s3:https://s3.example.com/restic, ambapo kipengele cha mwisho cha njia ni jina la bucket. Unda bucket kwanza kwa mc mb, kwa sababu key iliyowekewa mipaka ya bucket moja haina ruhusa ya kuunda buckets. restic husimba kila kitu kwa password yake ya repository kabla ya kupakia data, kwa hiyo MinIO huhifadhi ciphertext na haioni kamwe faili zako.
Je, lazima niendeshe MinIO nyuma ya nginx?
Unahitaji TLS (usalama wa safu ya usafirishaji) kila client inapokuwa kwenye mashine tofauti, kwa sababu S3 credentials na data ya objects husafirishwa ndani ya request. Proxy kwenye port 443 yenye certificate kutoka certbot ndiyo njia rahisi zaidi ya kufanya hivyo, na huweka usasishaji wa certificate mbali na MinIO. MinIO pia inaweza kusitisha TLS yenyewe ikiwa utaelekeza --certs-dir kwenye directory iliyo na public.crt na private.key, lakini service account itahitaji ruhusa ya kusoma private key iliyosasishwa. Hilo linaongeza kazi huku likitoa matokeo yaleyale.