Kennisbank › Objectopslag › MinIO: objectopslag met een S3-compatibele API
objectopslag starter 31 August 2026

MinIO: objectopslag met een S3-compatibele API

MinIO: objectstorage met een S3-compatibele API

MinIO draait als een serverproces dat de S3 API aanbiedt. Elke client die met S3 kan praten — de AWS CLI, `mc`, of een SDK in Python, Go of Java — kan met MinIO praten. Dat is net het punt: u bouwt geen vendor lock-in op, want de API is gestandaardiseerd.

De prijs die u betaalt, is beheer. AWS S3 regelt redundantie, monitoring en rotatie van credentials voor u. Bij MinIO bent u daar zelf verantwoordelijk voor. Zelf hosten klinkt prachtig, tot er iets omvalt op zondagavond half twaalf. Dan bent u geen klant die op de helpdesk wacht. Dan bént u de helpdesk.

Server installeren en starten

1. Download de MinIO-server

Haal het binary op van de officiële site. De download-URL bevat het versienummer, dus controleer bij een nieuwe release of er een nieuwere versie is.

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/

Het binary is zelfstandig — geen dependencies, geen packages. Dat maakt het eenvoudig te installeren, maar u moet wel zelf zorgen voor een servicemanager die het proces draaiende houdt.

2. Stel de root credentials in

MinIO heeft een root-gebruiker nodig. Zet die als environment variables, niet in een config-bestand. De server leest ze bij het opstarten.

export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=een-lang-en-willekeurig-wachtwoord

Kies een wachtwoord van minimaal 8 tekens. In productie neemt u iets van 32 tekens uit een password manager. Dit is de sleutel tot al uw data.

3. Start de server

minio server /data --address ":9000" --console-address ":9001"

De map `/data` is waar MinIO de objecten opslaat. Zorg dat die op een schijf staat met voldoende ruimte. De `--address` en `--console-address` vlaggen bepalen waar de API en de webconsole luisteren.

Als u dit commando in een terminal draait, stopt de server zodra u de terminal sluit. Voor een echte deployment gebruikt u systemd of een containerplatform. MinIO heeft een officiële systemd unit in de repository.

4. Maak een bucket aan

Een bucket is de hoogste container in objectopslag — vergelijkbaar met een schijfpartitie. Zonder bucket kunt u niets opslaan.

mc alias set local http://localhost:9000 minioadmin 'een-lang-en-willekeurig-wachtwoord'
mc mb local/testbucket

Het eerste commando registreert uw MinIO-server als `local` in de client. Het tweede maakt een bucket aan. U kunt dit ook via de webconsole doen op `http://localhost:9001`.

Client gebruiken

De MinIO Client (`mc`) is een command-line tool die werkt met elke S3-compatibele server. U kunt er niet alleen MinIO mee beheren, maar ook AWS S3, Google Cloud Storage en andere S3-implementaties.

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

Met `mc ls local` ziet u de buckets. Met `mc cp bestand.txt local/testbucket/` uploadt u een bestand. Met `mc ls --recursive local/testbucket` ziet u alles wat er in de bucket zit, inclusief objecten in pseudo-mappen.

Het voordeel van `mc` boven de AWS CLI is dat u meerdere servers in één configuratie kunt hebben. U springt met `mc ls` tussen uw lokale MinIO en AWS S3 zonder steeds credentials opnieuw in te stellen. Dat maakt het ook een handig hulpmiddel om data te migreren tussen providers.

Clustering

Eén server is geen productie. MinIO ondersteunt distributed mode, waarbij meerdere nodes samen één opslagsysteem vormen. De data wordt dan gerepliceerd over de nodes, zodat u nodes kunt verliezen zonder dataverlies.

minio server http://node1.local/data http://node2.local/data \
  http://node3.local/data http://node4.local/data

Dit start een cluster van vier nodes. MinIO gebruikt erasure coding: het splitst objecten in fragmenten en verdeelt die over de nodes. Bij vier nodes kunt u er twee verliezen en blijft alles leesbaar. De rekensom is eenvoudig: met meer nodes kunt u meer verlies opvangen, maar elke node kost onderhoud en stroom.

Een cluster opzetten is niet iets wat u in een namiddag doet. U hebt identieke hardware, een goed netwerk en monitoring nodig. Voor een eerste kennismaking is een enkele server genoeg.

Docker Buildx-cache

Een praktische toepassing: MinIO kan dienen als cache-backend voor Docker Buildx. De build-cache opslaan op S3-compatibele opslag betekent dat uw CI/CD-pijplijn de cache kan hergebruiken, ook als de runner zelf niet persistent is.

docker buildx create --driver docker-container \
  --config buildkitd.toml

In `buildkitd.toml` verwijst u naar uw MinIO-server als S3-endpoint. Docker ondersteunt dit sinds Buildx 0.8. Het werkt, maar u moet de cache wel configureren met de juiste credentials en het juiste bucket-pad. De documentatie van Buildx is hierover duidelijk.

Veelvoorkomende problemen

De server start maar de webconsole is niet bereikbaar. Controleer of u `--console-address` hebt ingesteld. Zonder die vlag kiest MinIO een willekeurige poort en logt die in de output. Als u een firewall hebt, opent u dan zowel poort 9000 als 9001.

`mc` geeft een foutmelding over toegangsgeweigerd. Uw credentials kloppen niet, of u hebt ze niet correct geëxporteerd. Controleer of `MINIO_ROOT_USER` en `MINIO_ROOT_PASSWORD` correct zijn ingesteld in de shell waar de server draait. De server leest ze enkel bij het opstarten.

De schijf is vol maar MinIO blijft schrijven. MinIO stopt niet automatisch met schrijven. U moet zelf monitoring instellen op het schijfgebruik. Een volle schijf leidt tot corrupte objecten. Dit is een van de zaken die een managed service voor u oplost.

Verificatie

Upload een testbestand en haal het weer op:

echo "test" > test.txt
mc cp test.txt local/testbucket/
mc cat local/testbucket/test.txt

Als u `test` terugziet, werkt de volledige keten: server, client, bucket en opslag. Voor een productieomgeving test u ook het herstarten van de server en controleert u of de data er nog steeds staat na een reboot.

MinIO is een goed alternatief voor AWS S3 als u uw data lokaal wilt houden of de kosten van egress wilt vermijden. Het is geen vervanging voor een backupsysteem — dat blijft uw eigen verantwoordelijkheid.

← Terug naar kennisbank
← Terug naar kennisbank