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

MinIO: object storage met een S3-compatibele API

MinIO: object storage met een S3-compatibele API MinIO is een open source object storage-server die de Amazon S3 API implementeert, zodat je dezelfde tools en

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 het hele punt: je bouwt geen vendor lock-in op, want de API is gestandaardiseerd.

De prijs die je betaalt is beheer. AWS S3 regelt redundantie, monitoring en rotatie van credentials voor je. Bij MinIO ben je daar zelf verantwoordelijk voor. Zelf hosten klinkt prachtig, tot er iets omvalt op zondagavond half twaalf. Dan ben je geen klant die op de helpdesk wacht. Dan bén je 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 je moet wel zelf zorgen voor een service manager 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 neem je iets van 32 tekens uit een password manager. Dit is de sleutel tot al je data.

3. Start de server

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

De directory `/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 je dit commando in een terminal draait, stopt de server zodra je de terminal sluit. Voor een echte deployment gebruik je 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 object storage — vergelijkbaar met een schijfpartitie. Zonder bucket kun je niets opslaan.

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

Het eerste commando registreert je MinIO-server als `local` in de client. Het tweede maakt een bucket aan. Je 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. Je 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` zie je de buckets. Met `mc cp bestand.txt local/testbucket/` upload je een bestand. Met `mc ls --recursive local/testbucket` zie je alles wat er in de bucket zit, inclusief objecten in pseudo-mappen.

Het voordeel van `mc` boven de AWS CLI is dat je meerdere servers in één configuratie kunt hebben. Je springt met `mc ls` tussen je 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 je 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 kun je er twee verliezen en blijft alles leesbaar. De rekensom is eenvoudig: met meer nodes kun je meer verlies opvangen, maar elke node kost onderhoud en stroom.

Een cluster opzetten is niet iets wat je in een middagje doet. Je 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. Build-cache opslaan op S3-compatibele storage betekent dat je 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` verwijs je naar je MinIO-server als S3-endpoint. Docker ondersteunt dit sinds Buildx 0.8. Het werkt, maar je moet wel de cache configureren met de juiste credentials en het juiste bucket-pad. De documentatie van Buildx is hierover duidelijk.

Veelgestelde problemen

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

`mc` geeft een toegangsgewelgerd-fout. Je credentials kloppen niet, of je hebt ze niet goed 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 alleen bij het opstarten.

De schijf is vol maar MinIO blijft schrijven. MinIO stopt niet automatisch met schrijven. Je moet zelf monitoring instellen op disk-gebruik. Een volle schijf leidt tot corrupte objecten. Dit is een van de dingen die een managed service voor je 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 je `test` terugziet, werkt de hele keten: server, client, bucket en storage. Voor een productieomgeving test je ook het herstarten van de server en controleer je of de data er nog staat na een reboot.

MinIO is een goed alternatief voor AWS S3 als je data lokaal wilt houden of de kosten van egress wilt vermijden. Het is geen vervanging voor een backupsysteem — dat ben je zelf nog steeds verschuldigd.

← Terug naar kennisbank
← Terug naar kennisbank