Zurück zum Blog

Garage: Self-Hosted Object Storage

Johannes Karl
Garage: Self-Hosted Object Storage

Garage

Garage ist eine S3-kompatible, verteilte Object-Storage-Lösung, die sich problemlos auf sehr limitierter Hardware selbst hosten lässt. Das Projekt wurde von Deuxfleurs gestartet, um einen Service zu schaffen, der frei vom Einfluss von Konzernen ist. Einen Service, mit dem man seine persönlichen Daten hosten kann, ohne auf Cloud-Services angewiesen zu sein, sondern nur auf Hardware, die einem selbst gehört.
Du kannst Garage sogar auf einem Raspberry Pi laufen lassen, wenn dir das gefällt.

Einige der zentralen Design-Ziele sind:

  • einen Service bereitzustellen, der einfach zu verstehen und zu betreiben ist,
  • in sich geschlossen und leichtgewichtig zu sein (es ist ein einzelnes Binary, geschrieben in Rust 💙) und
  • hochgradig resilient gegenüber Netzwerkproblemen und anderen Ausfällen zu sein

Das macht es zu einer richtig guten Wahl für das Self-Hosting statischer Websites, als Storage-Backend für Tools wie rsync oder restic und mehr. Und obwohl es zu den meisten S3-Tools und -Features kompatibel ist, versucht es nicht, alle davon zu unterstützen, um den Umfang überschaubar zu halten. Hier ein kurzer Überblick über die Features, die unterstützt werden – und die nicht:

Feature Unterstützt
Presigned URLs Ja
Server-side Encryption (SSE-C) Ja
Bucket Versioning Nein
Path-Style Requests Ja
Virtual-Hosted-Style Requests Ja

Quelle: https://garagehq.deuxfleurs.fr/documentation/reference-manual/s3-compatibility/

Geo-Distribution

Einer der Schlüsselaspekte von Garage ist, wie einfach sich damit ein geografisch verteilter Object Storage betreiben lässt, der Speicherung und Replikation an mehreren geografischen Standorten erlaubt. Für mehr Flexibilität lässt sich die Art, wie Garage die Daten repliziert (Replication Factor), über eine einfache .toml-Datei konfigurieren.

Deployment und Betrieb

Da Garage nur ein einzelnes Binary ist, gestaltet sich das Deployment wirklich einfach. Ob über Kubernetes und die bereitgestellten Helm Charts oder direkt über systemd – es gibt viele verschiedene Optionen. Empfohlen wird lediglich, beim Deployment mindestens 3 Nodes einzusetzen.

Fürs Monitoring stellt der Service eine Admin-API bereit, die Prometheus-kompatible Metriken zum Scrapen liefert.

Einschränkungen

Natürlich gibt es beim Einsatz von Garage auch Einschränkungen. Wie bereits erwähnt, ist es nicht das Ziel, jedes S3-Feature zu unterstützen. Wenn das eine harte Anforderung ist, sind einige der Alternativen vielleicht die bessere Wahl. Es gibt zudem einige bekannte Probleme, die man bei der Evaluation im Hinterkopf behalten sollte.

Deuxfleurs

Deuxfleurs ist eine experimentelle Non-Profit-Hosting-Organisation mit Sitz in Rennes, Frankreich. Sie finanzieren sich grösstenteils über Fördermittel von Organisationen wie NLnet oder über Projekte der Europäischen Union, aber auch über Einzelspenden.

Neben dem Bauen der Tools bieten sie auch Services wie Static Hosting, E-Mail oder Matrix-basiertes Instant Messaging an.
Nach eigenen Angaben nutzen sie weniger als 10 wiederaufbereitete Server, um diese Services für Tausende von Menschen bereitzustellen – ziemlich cool, wenn du mich fragst.

Wenn du also von ihrer Arbeit profitierst, überlege dir, mit Beiträgen oder Spenden etwas zurückzugeben.