3.2 KiB
3.2 KiB
MinIO (S3 Object Storage) Setup
MinIO wird als lokaler S3-kompatibler Object Storage in Kubernetes betrieben. Es dient als Speicherziel für Anwendungen wie Outline, Backups und Medien-Uploads.
1. Architektur & Storage
MinIO läuft als einzelner Pod (Deployment mit Replicas=1) und nutzt einen Kubernetes PersistentVolumeClaim (PVC).
- PVC Größe: 50Gi (Initial)
- Storage Class:
local-path(Standard K3s) - Physischer Speicher: Die Daten landen auf der VM (
vm-k3s-master-400) im Verzeichnis/var/lib/rancher/k3s/storage/.
Erweiterung (Proxmox)
Wenn der Speicherplatz der VM zur Neige geht:
- In Proxmox die VM-Disk vergrößern (oder eine zweite Disk hinzufügen).
- Im Linux-Gast (
vm-k3s-master-400) das Dateisystem erweitern (resize2fs). - Die Daten für MinIO wachsen automatisch mit dem verfügbaren Platz auf der Partition.
2. Vault Secrets
MinIO benötigt einen Root User und ein Passwort. Diese werden in Vault gespeichert.
Pfad: secret/apps/minio
| Key | Value | Beschreibung |
|---|---|---|
root_user |
admin |
Der Benutzername für den Admin-Login. |
root_password |
... |
Ein starkes, generiertes Passwort. |
Vault Setup Befehle
# 1. Passwort generieren
MINIO_PW=$(openssl rand -base64 24)
# 2. In Vault schreiben
vault kv put secret/apps/minio root_user="admin" root_password="$MINIO_PW"
3. Zugriff
Das System stellt zwei Domains bereit:
- Console (Web UI):
https://minio.apps.k3s.stabify.de- Hier loggst du dich ein, erstellst Buckets, User und Access Keys.
- S3 API:
https://s3.apps.k3s.stabify.de- Diesen Endpunkt tragen Applikationen (wie Outline) als "S3 Endpoint" ein.
4. Bucket Naming Convention 🪣
Damit wir im Chaos nicht untergehen, nutzen wir folgende Struktur für Bucket-Namen:
[app-name]-[environment]-[purpose]
- app-name: Name der Anwendung (z.B.
outline,authentik,gitlab). - environment:
prod(Produktion) oderdev(Entwicklung). - purpose: Optional, was drin ist (z.B.
media,backups,logs).
Beispiele
| Bucket Name | Verwendung |
|---|---|
outline-prod-media |
Bilder und Uploads für das Wiki (Outline). |
authentik-prod-static |
Statische Assets oder Uploads für Authentik. |
postgres-prod-backups |
Datenbank-Dumps (z.B. via Wal-G oder Scripts). |
loki-prod-logs |
Log-Speicher für Loki (falls verwendet). |
5. Verwendung in Apps (z.B. Outline)
Um MinIO in einer App zu nutzen:
- Logge dich in die MinIO Console ein.
- Erstelle einen Bucket (z.B.
outline-storage). - Setze den Bucket auf Public (wenn nötig) oder konfiguriere eine Policy.
- Empfehlung für Outline: Bucket Access Policy auf
customundReadOnlyfür*(Anonymous), damit Bilder im Wiki öffentlich sichtbar sind (wenn gewünscht), oder besser: Nutze Presigned URLs.
- Empfehlung für Outline: Bucket Access Policy auf
- Erstelle einen Service Account (Access Key & Secret Key).
- Konfiguriere die App mit:
- Endpoint:
https://s3.apps.k3s.stabify.de - Region:
eu-central-1(oder was du eingestellt hast, MinIO ist das meist egal, Standard ist oftus-east-1). - Access Key: (aus Service Account)
- Secret Key: (aus Service Account)
- Bucket:
outline-storage
- Endpoint: