Amazon S3 ist praktisch, solange die Rechnung für den Datentransfer nicht ins Haus kommt, denn genau der Transfer und nicht die Speicherung selbst kann am meisten überraschen. MinIO ist ein Open-Source-Objektspeicher, der dieselbe Sprache spricht wie S3, also dieselbe API verwendet. Die Bibliothek boto3 oder aws-sdk, die du bereits in deinem Projekt hast, funktioniert daher unverändert. Du musst keine einzige Zeile Code anpassen, nur eben die Adresse des Endpunkts. Der Unterschied ist, dass du MinIO einmalig auf deiner eigenen Box installierst und nur für die Box bezahlst, ohne eine separate Rechnung für jeden Gigabyte übertragener Daten. Im Folgenden findest du eine Schritt-für-Schritt-Anleitung, wie du MinIO auf Saplo einrichtest.
Warum MinIO statt Amazon S3
Amazon S3 hat zwei Eigenschaften, die bei schnell wachsenden Projekten in der Praxis am meisten Schaden verursachen:
- Rechnung für ausgehenden Datentransfer - das reine Speichern von Dateien ist günstig, aber jede heruntergeladene Datei und jedes einem Nutzer angezeigte Bild wird separat berechnet und kann bei höherem Traffic die Rechnung dominieren,
- Abrechnung abhängig von der Anzahl der Operationen - das Auflisten von Dateien, Schreib- und Lesevorgänge haben jeweils einen eigenen Tarif, sodass sich die Kosten nur schwer im Voraus berechnen lassen.
MinIO implementiert dasselbe S3-Protokoll, sodass die Migration von einem zum anderen normalerweise lediglich eine Änderung der Endpunktadresse und der Zugriffsschlüssel erfordert und kein Neuschreiben des Anwendungscodes bedeutet. Du stellst ihn auf deiner eigenen Box bereit, zahlst unabhängig davon, wie oft eine Datei abgerufen wird, nur für die Box selbst, und die Daten bleiben physisch in deiner Infrastruktur.
Anforderungen
Um MinIO auf Saplo einzurichten, benötigst du:
- eine Box mit laufendem Docker (die Engine aktiviert Docker automatisch bei der Installation aus dem App-Katalog, Container-Nesting ist erforderlich und bei Saplo standardmäßig aktiviert),
- mindestens 512 MB verfügbaren Arbeitsspeicher auf der Box und 5 GB Festplattenplatz für die Daten, wobei die benötigte Menge davon abhängt, wie viele Dateien du speichern möchtest,
- eine Domain oder Subdomain
*.saploapp.pl, die in jedem Plan enthalten ist, unter der die Administrationskonsole erreichbar ist.
MinIO stellt zwei unterschiedliche Oberflächen bereit, die du von Anfang an unterscheiden solltest. Die erste ist die Webkonsole, also ein Browser-Panel zum Anzeigen von Dateien, Erstellen von Buckets und Verwalten von Zugriffsschlüsseln, die wie jede andere App aus dem App-Katalog unter einer Domain bereitsteht. Die zweite ist die API S3, also ein Endpunkt, mit dem sich der Anwendungscode über boto3 oder eine ähnliche Bibliothek verbindet. Die Engine weist der Anwendung einen Port unter der öffentlichen Domain zu, sodass die API S3 ausschließlich innerhalb der Box auf dem Loopback läuft und von außen nicht sichtbar ist.
Installation Schritt für Schritt
- Öffne im Saplo-Panel den App-Katalog und wähle MinIO (Kategorie "Server").
- Wähle die Box, auf der die Anwendung installiert werden soll, sowie die Domain oder Subdomain, unter der die Administrationskonsole erreichbar sein wird.
- Bestätige die Installation. Die Engine richtet einen Docker-Container mit dem offiziellen Image
minio/minioein, bereitet ein separates Volume für die Daten vor, generiert ein zufälliges Administratorkonto und stellt die Konsole unter der angegebenen Domain über nginx mit kostenlosem SSL bereit. - Die Engine prüft, ob der Container tatsächlich gestartet ist, bevor sie die Installation als abgeschlossen betrachtet. Falls das Image nicht startet, siehst du daher einen Fehler statt einer nicht erreichbaren Domain.
- Nach Abschluss findest du im App-Katalog auf deiner Box die Datei
MINIO-SETUP.txtmit dem Anmeldenamen und dem generierten Passwort für die Konsole.
Erste Konfiguration
MinIO erstellt ebenso wie Directus oder Vaultwarden bei der Installation automatisch ein Administratorkonto, anstatt dich in einem Einrichtungsassistenten danach zu fragen.
- Melde dich mit den Daten aus der Datei
MINIO-SETUP.txtin der Konsole an und ändere das Passwort unter Identity -> Users, bevor du etwas anderes tust. - Lege unter Buckets -> Create Bucket den ersten Bucket an, beispielsweise getrennt für Benutzerdateien und Backups.
- Generiere unter Identity -> Service Accounts einen Zugriffsschlüssel (Access Key und Secret Key) für die Anwendung, die Dateien speichern und lesen soll. Verwende dafür nicht das Administratorkonto im Anwendungscode.
- Der S3-API-Endpoint ist ausschließlich über die Loopback-Adresse der Box erreichbar und nicht öffentlich exponiert. Wenn die Anwendung, die MinIO nutzt, auf derselben Box läuft, verbindet sie sich über
http://127.0.0.1am zugewiesenen Port. Zugriff von außerhalb der Box, etwa vom eigenen Rechner oder einem anderen Server aus, erfordert einen SSH-Tunnel, der ab Box L verfügbar ist, oder eine eigene TCP-Port-Erweiterung aus dem Add-on-Katalog.
MinIO auf Saplo im Vergleich zu Amazon S3
| Amazon S3 | MinIO auf Saplo | |
|---|---|---|
| Kosten | Speicherung plus Transfer plus Operationen, separat abgerechnet | Im Preis des Saplo-Plans enthalten, ohne Aufpreis für den Transfer |
| Wo liegen die Daten | Amazon-Infrastruktur | In deiner Box |
| API-Kompatibilität | S3-Standard | Dasselbe Protokoll, dieselben Bibliotheken (boto3 und andere) |
| API-Zugriff von außerhalb des Servers | Öffentlicher Endpoint sofort verfügbar | Erfordert einen SSH-Tunnel (Box L+) oder eine TCP-Portfreischaltung |
| Wer verwaltet | Amazon | Du, aber ohne manuelles Einrichten eines Servers |
Häufige Fragen
Muss ich den Anwendungscode ändern, um von S3 zu MinIO zu wechseln?
Normalerweise nicht. MinIO implementiert dasselbe S3-Protokoll. Du änderst lediglich die Endpunkt-Adresse, den Zugriffsschlüssel und das Secret in der Anwendungskonfiguration. Der restliche Code, der boto3 oder eine ähnliche Bibliothek verwendet, funktioniert ohne Änderungen.
Warum ist die API S3 nicht sofort von außerhalb der Box verfügbar? Die Engine von Saplo stellt unter einer öffentlichen Domain genau einen Port pro Anwendung bereit. Bei MinIO ist dies die Web-Konsole. Die API S3 bleibt an den Loopback gebunden. Anwendungen, die auf derselben Box laufen, verbinden sich daher direkt mit MinIO. Für den Zugriff von außerhalb der Box ist ein SSH-Tunnel oder ein Add-on für einen eigenen TCP-Port erforderlich.
Kann ich mehr als einen Bucket haben? Ja. Die Anzahl der Buckets wird durch MinIO selbst nicht begrenzt. Einzige Limit ist der verfügbare Speicherplatz auf der Box.
Wie sichere ich den Zugriff auf Dateien ab, wenn sich die Anwendung von außerhalb der Box verbindet? Erzeuge für jede Anwendung einen eigenen Zugriffsschlüssel unter Identity -> Service Accounts und schränke ihn mit einer Richtlinie auf einen bestimmten Bucket ein, statt ein Administratorkonto zu verwenden. Verwende für Verbindungen von außerhalb der Box einen SSH-Tunnel (Box L und höher) oder ein Add-on für einen eigenen TCP-Port.
Werden die Daten in MinIO automatisch gesichert? Das hängt vom gekauften Tarif der Box ab. Das Backup arbeitet auf der Ebene der gesamten Box, genau wie bei anderen Anwendungen aus dem App-Katalog. MinIO selbst bietet dafür keine separate Funktion.
Wenn du Fragen zur Einrichtung von MinIO auf deiner eigenen Box oder zur Anbindung an deine eigene Anwendung hast, schreib uns. Wir helfen dir bei der Ersteinrichtung.
- #Backup
- #MinIO
- #Anleitung
- #Dateispeicherung
- #S3
