Back to Blog

Garage: Self-Hosted Object Storage

Johannes Karl
Garage: Self-Hosted Object Storage

Garage

Garage is an S3-compatible, distributed object-storage solution that can be easily self-hosted on very limited hardware. The project was started by Deuxfleurs to create a service that is free from the influence of corporations. A service that allows one to host their personal data without relying on any cloud services but instead just on the hardware that people own.
You can even run Garage on a Raspberry Pi if that’s what floats your boat.

Some of the core design goals are to

  • provide a service that is both simple to understand and operate,
  • be self-contained and light-weight (it is a single binary, written in Rust 💙) and
  • highly resilient to network issues and other failures

That makes it a really good choice for self-hosting static websites, as a storage backend for tools such as rsync or restic and more. And while it is compatible with most S3 tooling and features, it does not attempt to support all of them to keep the scope manageable. Here’s a quick overview of the features it does/does not support:

Feature Supported
Presigned URLs Yes
Server-side encryption (SSE-C) Yes
Bucket versioning No
Path-style requests Yes
Virtual-hosted-style requests Yes

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

Geo-Distribution

One of the key aspects of Garage is the ease with which it can provide a geo-distributed object storage, which allows the storage and replication in multiple geographical locations. To offer more flexibility, the way Garage replicates the data (replication factor) can be configured via a simple .toml file.

Deploying & Operating

Since Garage is just a single binary, deploying it turns out to be really easy. Be it through Kubernetes and the Helm charts provided by them or directly via systemd, it offers a lot of different options. They just recommend that a minimum of 3 nodes should be involved when deploying it.

For monitoring, the service exposes an Admin API that provides Prometheus-compatible metrics that can be scraped.

Limitations

Obviously, there are some limitations to using Garage. As already mentioned, it does not aim to support every S3 feature. If that is a strict requirement, some of the alternatives might be more viable. There are also some known issues that should be kept in mind when evaluating it as an option.

Deuxfleurs

Deuxfleurs is an experimental, non-profit hosting organization based in Rennes, France. They largely rely on funding from organizations such as NLnet or projects by the European Union, but also individual donations.

Besides building the tools, they also offer some services like static hosting, email or Matrix-based instant messaging.
According to them, they use less than 10 refurbished servers to offer these services for thousands of people, which is pretty cool if you ask me.

So if you benefit from their work, consider giving back via contributions or donations.