Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c9abef3bef | |||
| 20bfd2c625 | |||
| 9f8e8ae105 | |||
| 4d2cf81e2b | |||
| b8693dfd07 | |||
| e584bf7c06 | |||
| 00de463c1b | |||
| 3a729d5692 | |||
| 66e621cb0f |
@ -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
|
||||
|
||||
36
README.md
36
README.md
@ -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/).
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
1
release/0.0.1+2.1.0
Normal file
@ -0,0 +1 @@
|
||||
unstable release
|
||||
Reference in New Issue
Block a user