Repository navigation
feat!: replace MinIO with Garage as the S3 backend - #201
Merged
Merged
Conversation
MinIO declared its open-source edition unmaintained and now points users to its paid product, so any-sync-filenode blob storage moves to Garage v2.3, which is maintained, single-binary and built for self-hosting. Garage runs with --single-node --default-bucket --default-access-key, so it creates its bucket and access key on first start and the mc-based create-bucket service is gone. Its config is static (garage/garage.toml) and the RPC secret comes from the environment, which keeps garage independent of any-sync-init and therefore available while the migration guard blocks the rest of the stack. Existing installs are protected by two barriers and a non-destructive migration: - an outdated .env fails `docker compose` immediately via required-variable syntax (GARAGE_VERSION, GARAGE_RPC_SECRET, S3_BUCKET) - the new s3-guard service refuses to start the stack while objects remain in storage/minio without a completed-migration marker; any-sync-init depends on it, so nothing else starts either - `docker compose --profile migrate run --rm s3-migrate` (or `make migrate`) copies every object with rclone, verifies checksums and only then writes the marker; MinIO data is kept as a backup and removed by an explicit `make cleanLegacyMinio` The MINIO_* variables are renamed to S3_* (S3_ENDPOINT, S3_BUCKET, S3_REGION, S3_LEGACY_BUCKET), which is what makes the first barrier possible. The MinIO service is retained under the "migrate" profile only. Migration instructions live in the wiki Upgrade Guide. BREAKING CHANGE: the MINIO_* variables in .env are replaced by S3_*/GARAGE_* and existing installations must run the MinIO -> Garage data migration before the stack will start. See the Upgrade Guide for the steps. Closes #178
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MinIO declared its open-source edition unmaintained and now points users to its paid product, so any-sync-filenode blob storage moves to Garage v2.3, which is maintained, single-binary and built for self-hosting.
Garage runs with --single-node --default-bucket --default-access-key, so it creates its bucket and access key on first start and the mc-based create-bucket service is gone. Its config is static (garage/garage.toml) and the RPC secret comes from the environment, which keeps garage independent of any-sync-init and therefore available while the migration guard blocks the rest of the stack.
Existing installs are protected by two barriers and a non-destructive migration:
docker composeimmediately via required-variable syntax (GARAGE_VERSION, GARAGE_RPC_SECRET, S3_BUCKET)docker compose --profile migrate run --rm s3-migrate(ormake migrate) copies every object with rclone, verifies checksums and only then writes the marker; MinIO data is kept as a backup and removed by an explicitmake cleanLegacyMinioThe MINIO_* variables are renamed to S3_* (S3_ENDPOINT, S3_BUCKET, S3_REGION, S3_LEGACY_BUCKET), which is what makes the first barrier possible. The MinIO service is retained under the "migrate" profile only.
Migration instructions live in the wiki Upgrade Guide.
BREAKING CHANGE: the MINIO_* variables in .env are replaced by S3_/GARAGE_ and existing installations must run the MinIO -> Garage data migration before the stack will start. See the Upgrade Guide for the steps.
Closes #178
Description
What type of PR is this? (check all applicable)
Related Tickets & Documents
Mobile & Desktop Screenshots/Recordings
Added tests?
Added to documentation?
[optional] Are there any post-deployment tasks we need to perform?