Was ist MinIO?

MinIO ist ein hochperformanter Objektspeicher, der die S3-API von Amazon Web Services vollständig kompatibel implementiert. Das bedeutet: Jede Applikation, die S3 unterstützt (und das sind heutzutage fast alle), funktioniert ohne Code-Änderung mit MinIO.

Ich nutze MinIO auf typoniels.dev als Storage-Backend für Strapi (CMS-Medien) und Loki (Log-Archivierung).

Warum nicht einfach AWS S3?

AWS S3 ist hervorragend – aber:

  • Kosten: Bei intensiver Nutzung können S3-Kosten schnell steigen
  • Datenschutz: Daten liegen auf US-Servern (DSGVO-Grauzone)
  • Vendor Lock-in: Abhängigkeit von einem einzigen Anbieter
  • Latenz: Für europäische Nutzer kann Frankfurt oder Dublin trotzdem träge sein

Mit MinIO auf eigenem Server: volle Kontrolle, keine Transferkosten, DSGVO-konform.

MinIO aufsetzen in 5 Minuten

Docker Compose (einfachster Einstieg)

version: '3'
services:
  minio:
    image: minio/minio:latest
    command: server /data --console-address ":9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: supersecretpassword
    ports:
      - "9000:9000"  # S3 API
      - "9001:9001"  # Web Console
    volumes:
      - ./minio-data:/data
docker compose up -d

Fertig. Die Web-Console ist unter http://localhost:9001 erreichbar.

Kubernetes mit Helm

helm repo add minio https://charts.min.io/
helm install minio minio/minio   --set rootUser=admin   --set rootPassword=supersecretpassword   --set persistence.size=50Gi

Integration in bestehende Projekte

Mit Strapi (als Media Provider)

Strapi v5 unterstützt S3-kompatible Anbieter nativ. In der Strapi-Konfiguration:

// config/plugins.js
module.exports = {
  upload: {
    config: {
      provider: 'aws-s3',
      providerOptions: {
        accessKeyId: process.env.AWS_ACCESS_KEY_ID,
        secretAccessKey: process.env.AWS_ACCESS_SECRET,
        endpoint: 'https://minio.deine-domain.de',
        params: { Bucket: 'strapi-media' },
        s3ForcePathStyle: true, // Wichtig für MinIO!
      },
    },
  },
};

Mit AWS CLI

aws s3 ls s3://mein-bucket   --endpoint-url https://minio.deine-domain.de

Performance und Grenzen

MinIO ist für Single-Node-Setups sehr schnell – auf normaler SSD erreicht es problemlos mehrere GB/s Durchsatz. Für Multi-Node distributed Mode skaliert MinIO linear mit der Anzahl der Nodes.

Grenzen beachten:

  • Erasure Coding (Redundanz) braucht mindestens 4 Nodes
  • Single-Node: Kein Redundanzschutz (Backup trotzdem pflicht!)
  • Keine automatischen Lifecycle-Policies in der kostenlosen Version

Mein Fazit

MinIO ist meine erste Empfehlung für alle, die S3 selbst hosten wollen. Die S3-Kompatibilität ist hervorragend, die Performance überraschend gut, und der Betrieb ist unkompliziert.

Wer bereits eine S3-Infrastruktur hat, kann mit einem endpoint-Parameter nahtlos wechseln. Wer noch keine Objekt-Storage-Infrastruktur hat: MinIO ist der einfachste Einstieg.

Kombiniert mit einer Backup-Strategie (z.B. tägliches Sync in ein Off-Site-Bucket) ist MinIO eine vollwertige S3-Alternative für Self-Hosted-Projekte.