diff --git a/.gitignore b/.gitignore index c807c0b..c94c268 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /docker/dev/volumes /client-examples/javascript/node_modules /docker/object-storage/storage +/docker/object-storage/pict-rs-garage.toml diff --git a/docker/object-storage/dev.sh b/docker/object-storage/dev.sh index 422eb52..ab9fd9c 100755 --- a/docker/object-storage/dev.sh +++ b/docker/object-storage/dev.sh @@ -7,6 +7,7 @@ export GROUP_ID=$(id -g) sudo docker-compose build --pull sudo docker-compose up -d minio +sudo docker-compose up -d garage sudo docker-compose up -d pictrs_proxy sudo docker-compose up -d otel sudo docker-compose up -d jaeger diff --git a/docker/object-storage/docker-compose.yml b/docker/object-storage/docker-compose.yml index 1e402cd..5a04fa0 100644 --- a/docker/object-storage/docker-compose.yml +++ b/docker/object-storage/docker-compose.yml @@ -14,6 +14,7 @@ services: environment: - PICTRS__TRACING__CONSOLE__ADDRESS=0.0.0.0:6669 - PICTRS__TRACING__OPENTELEMETRY__URL=http://otel:4137 + - RUST_BACKTRACE=1 stdin_open: true tty: true volumes: @@ -37,6 +38,20 @@ services: volumes: - ./storage/minio:/mnt + garage: + image: dxflrs/garage:v0.8.0 + ports: + - "3900:3900" + - "3901:3901" + - "3902:3902" + - "3903:3903" + - "3904:3904" + environment: + - RUST_LOG=debug + volumes: + - ./storage/garage:/mnt + - ./garage.toml:/etc/garage.toml + otel: image: otel/opentelemetry-collector:latest command: --config otel-local-config.yaml diff --git a/docker/object-storage/garage-local.toml b/docker/object-storage/garage-local.toml new file mode 100644 index 0000000..8cbebc0 --- /dev/null +++ b/docker/object-storage/garage-local.toml @@ -0,0 +1,26 @@ +metadata_dir = "./storage/garage/meta" +data_dir = "./storage/garage/data" +db_engine = "lmdb" + +replication_mode = "none" + +rpc_bind_addr = "[::]:3901" +rpc_public_addr = "127.0.0.1:3901" +rpc_secret = "01ab6c57fc5c5176a6de79953bc2566f902cb99bf6d9b4c0c83b888b06e11dae" + +[s3_api] +s3_region = "garage" +api_bind_addr = "[::]:3900" +root_domain = ".s3.garage.localhost" + +[s3_web] +bind_addr = "[::]:3902" +root_domain = ".web.garage.localhost" +index = "index.html" + +[k2v_api] +api_bind_addr = "[::]:3904" + +[admin] +api_bind_addr = "0.0.0.0:3903" +admin_token = "HDuy2Bw+clxp5I//nKN5ZS9uO8KHhhKFdQRfyPmutvc=" diff --git a/docker/object-storage/garage.toml b/docker/object-storage/garage.toml new file mode 100644 index 0000000..103ee46 --- /dev/null +++ b/docker/object-storage/garage.toml @@ -0,0 +1,26 @@ +metadata_dir = "/mnt/meta" +data_dir = "/mnt/data" +db_engine = "lmdb" + +replication_mode = "none" + +rpc_bind_addr = "[::]:3901" +rpc_public_addr = "127.0.0.1:3901" +rpc_secret = "01ab6c57fc5c5176a6de79953bc2566f902cb99bf6d9b4c0c83b888b06e11dae" + +[s3_api] +s3_region = "garage" +api_bind_addr = "[::]:3900" +root_domain = ".s3.garage.localhost" + +[s3_web] +bind_addr = "[::]:3902" +root_domain = ".web.garage.localhost" +index = "index.html" + +[k2v_api] +api_bind_addr = "[::]:3904" + +[admin] +api_bind_addr = "0.0.0.0:3903" +admin_token = "HDuy2Bw+clxp5I//nKN5ZS9uO8KHhhKFdQRfyPmutvc=" diff --git a/docker/object-storage/pict-rs.toml b/docker/object-storage/pict-rs-minio.toml similarity index 100% rename from docker/object-storage/pict-rs.toml rename to docker/object-storage/pict-rs-minio.toml diff --git a/docker/object-storage/setup-garage.sh b/docker/object-storage/setup-garage.sh new file mode 100755 index 0000000..4374e2d --- /dev/null +++ b/docker/object-storage/setup-garage.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +STDOUT=./out.log +STDERR=./err.log + +rm "${STDOUT}" "${STDERR}" + +node_id=$(garage -c garage-local.toml status 2>>"${STDERR}" | tail -n 1 | awk '{ print $1 }') + +garage -c garage-local.toml layout assign -z dc1 -c 1 "${node_id}" >>"${STDOUT}" 2>>"${STDERR}" +garage -c garage-local.toml layout apply --version 1 >>"${STDOUT}" 2>>"${STDERR}" + +garage -c garage-local.toml bucket create pict-rs >>"${STDOUT}" 2>>"${STDERR}" + +garage -c garage-local.toml key new --name pict-rs-key >>"${STDOUT}" 2>>"${STDERR}" +key_id=$(garage -c garage-local.toml key info pict-rs-key 2>>"${STDERR}" | grep "Key ID" | awk '{ print $3 }') +secret_key=$(garage -c garage-local.toml key info pict-rs-key 2>>"${STDERR}" | grep "Secret key" | awk '{ print $3 }') + +garage -c garage-local.toml bucket allow --read --write --owner pict-rs --key pict-rs-key >>"${STDOUT}" 2>>"${STDERR}" + +cat > pict-rs-garage.toml <