9 Commits
main ... main

6 changed files with 41 additions and 18 deletions

View File

@ -7,8 +7,8 @@ COMPOSE_FILE="compose.yml"
SECRET_RPC_SECRET_VERSION=v1 # length=32 charset=hex
# Changing the replication factor after initial deployment is not
# supported and requires deleting the existing cluster layout metadata.
# Changing the replication factor after initial deployment is not
# supported and requires deleting the existing cluster layout metadata.
REPLICATION_FACTOR=2
CONSISTENCY_MODE=consistent
@ -17,6 +17,11 @@ DATA_FSYNC=false
DISABLE_SCRUB=false
BLOCK_SIZE=1MiB # only increase if there is a fast network connection between nodes
## Bootstrap this node in an existing Garage cluster
#BOOTSTRAP_HOST=""
#BOOTSTRAP_ID=""
#BOOTSTRAP_PORT=3901
# Use a directory on the host instead of a docker volume for storage
#LOCAL_FOLDER_META=/path/on/docker/host
#LOCAL_FOLDER_DATA=/path/on/docker/host

View File

@ -9,21 +9,26 @@
* **Image**: [`garage`](https://hub.docker.com/r/dxflrs/garage), 4, upstream
* **Healthcheck**: No
* **Backups**: No
* **Email**: No
* **Email**: N/A
* **Tests**: No
* **SSO**: No
* **SSO**: N/A
<!-- endmetadata -->
## Quick start
* `abra app new garage`
* If you don't already have an RPC secret for your Garage cluster, generate one: `abra app secret generate --all`
* Note: In older versions of abra you must generate the secret locally with `openssl rand -hex 32` then insert the result as described below
* If this Garage node is joining a cluster with an existing RPC secret, insert it: `abra app secret insert <app-domain> rpc_secret v1 <rpc-secret>`
> Note: all nodes must share the same rpc secret, do not lose this value if you plan to cluster garage!
* `abra app config <app-domain>`
* `abra app deploy <app-domain>`
- `abra app new garage`
- If you are **creating a new cluster**:
- Generate a new rpc_secret: `abra app secret generate --all`
- Note: all nodes must share the same rpc secret, do not lose this value if you plan to cluster garage!
- Note: In older versions of abra you must generate the secret locally with `openssl rand -hex 32` then insert the result as described below
- `abra app config <app-domain>`
- If this Garage node is **joining an existing cluster**:
- Insert the existing rpc_secret: `abra app secret insert <app-domain> rpc_secret v1 <rpc-secret>`
- `abra app config <app-domain>`
- Uncomment the block that starts with `## Bootstrap this node`
- Set `BOOTSTRAP_HOST` and `BOOTSTRAP_ID`
- `abra app deploy <app-domain>`
## Configuration
@ -35,27 +40,32 @@
* Re-deploy Traefik: `abra app undeploy -n <traefik-app-name> && sleep 5 && abra app deploy -n <traefik-app-name>`
### Prepare the Garage Client
Start by creating an alias for the abra run command
To interact with garage inside docker, it's best to create an alias for the following abra run command.
```
alias garage="abra app run <app domain> -- app /garage"
```
Run `garage status` to verify everything is working
Run `garage status` to verify everything is working.
You can optionally add this alias to your `.bashrc` (or similar) file to avoid having to define it repeatedly.
### Garage Quick Start Guide
Once `garage status` works, you can follow the guide here: https://garagehq.deuxfleurs.fr/documentation/quick-start/#checking-that-garage-runs-correctly
## Backups
> In development, not currently reliable
By default, backups will only capture a snapshot of the metadata directory, which includes bucket names, hashed secrets, and other related information.
By default, the actual data will not be backed up!
If you're running Garage in a cluster, when you restore the metadata, other nodes will send the new node any missing data.
If you're running Garage in a cluster, when you restore the metadata, other nodes will provide any missing data.
### To enable full data backups
* `abra app config <app domain>`
* Uncomment the block that starts with `## Enable Full Data Backups`
* Re-deploy Garaga: `abra app undeploy -n <app domain> && sleep 5 && abra app deploy -n <app domain>`
* Re-deploy Garage: `abra app undeploy -n <app domain> && sleep 5 && abra app deploy -n <app domain>`
For more, see [`garagehq.deuxfleurs.fr`](https://garagehq.deuxfleurs.fr/documentation/cookbook/real-world/).

View File

@ -24,9 +24,10 @@ services:
- "traefik.tcp.routers.${STACK_NAME}-rpc.rule=HostSNI(`*`)"
- "traefik.tcp.routers.${STACK_NAME}-rpc.entrypoints=garage-rpc"
- "traefik.tcp.services.${STACK_NAME}-rpc.loadbalancer.server.port=3901"
- "coop-cloud.${STACK_NAME}.version=0.0.1+1.0.0"
- "coop-cloud.${STACK_NAME}.version=0.0.1+2.1.0"
- "backupbot.backup=true"
- "backupbot.backup.path=/var/lib/garage/meta,/var/lib/garage/data"
- "backupbot.backup.pre-hook=/garage meta snapshot --all"
- "backupbot.backup.path=/var/lib/garage/meta/snapshots/,/var/lib/garage/meta/cluster_layout,/var/lib/garage/meta/data_layout,/var/lib/garage/meta/node_key,/var/lib/garage/meta/node_key.pub"
volumes:
- "${LOCAL_FOLDER_META:-meta}:/var/lib/garage/meta"
- "${LOCAL_FOLDER_DATA:-data}:/var/lib/garage/data"
@ -50,4 +51,4 @@ secrets:
volumes:
meta:
data:
conf:
conf:

View File

@ -17,6 +17,12 @@ rpc_public_addr = "{{ env "DOMAIN" }}:3901"
rpc_addr = "[::]:3901"
rpc_secret = "{{ secret "rpc_secret" }}"
{{ if ne (env "BOOTSTRAP_ID") "" }}
bootstrap_peers = [
"{{ env "BOOTSTRAP_ID" }}@{{ env "BOOTSTRAP_HOST" }}:{{ env "BOOTSTRAP_PORT" }}"
]
{{ end }}
[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"

1
release/0.0.1+2.1.0 Normal file
View File

@ -0,0 +1 @@
unstable release