Garage is an open-source distributed object storage service tailored for self-hosting. This playbook helps you to set up such a cluster:
- on your own Debian/CentOS/RedHat server(s). Raspberry Pi is also supported
- with everything run in Docker containers
- powered by the official Garage container image
- interoperates nicely with related Ansible playbooks or other services using Traefik for reverse-proxying
- Reverse Proxy automatically managed by Traefik.
- Multiple host support
- Testing
- Documentation explaining on how to run this playbook on multiple hosts
To configure and install Garage on your own server(s), follow the README in the docs/ directory.
Garage is a very flexible software that can server a lot of use-cases. This playbook is opinionated in the sense that it reduces the flexibility of garage in favor of an easy deployment that should serve common use cases. While the playbook should of course be reusable and fairly modular it will never be a solution to all use cases. Assumptions that are made currently:
- Nodes have a public IPv4/IPv6 address
- one subdomain per node, 1 additional subdomain per gateway node
The playbook will by default
- Enable the admin API for each node, reachable via the assigned subdomain
- Expose a user-defined port per node for replication
- Use a gateway to expose the s3 API on a new subdomain
-
Matrix room: #garage-docker-ansible-deploy:hyteck.de
-
Github issues: moan0s/garage-docker-ansible-deploy/issues
This playbook started as a copy of these projects and aims to have a similar layout and reuse some roles. Check them out!
-
matrix-docker-ansible-deploy - for deploying a fully-featured Matrix homeserver
-
gitea-docker-ansible-deploy - for deploying a Gitea (self-hosted Git service) server
-
vaultwarden-docker-ansible-deploy - for deploying a Vaultwarden password manager server (unofficial Bitwarden compatible server)
- Set
garage_debian_buster: true
to avoid a bug with debian buster (tested on a raspi 3A) (more information) - Installing docker on Raspberry PI needs you to set
docker_apt_arch: arm64
in yourvars.yml
. Refer to this issue for more information.
Use ansible_facts[‘distribution_major_version’]
instead of garage_debian_buster