-
Notifications
You must be signed in to change notification settings - Fork 579
docs: blob storage documentation #19194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
spalladino
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's split the instructions related to retrieval and storage, since they are meant for different users. Also let's please delete the generic or redundant instructions inserted by Claude, like "search logs for troubleshooting".
2078cd3 to
3c4be61
Compare
|
|
||
| ### Environment variables | ||
|
|
||
| Configure blob sources using environment variables in your `.env` file: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Configure blob sources using environment variables in your `.env` file: | |
| Configure blob sources using environment variables: |
Unless we're elsewhere making a point to use .env files to run an Aztec node.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
| ### Cloudflare R2 configuration | ||
|
|
||
| ```bash | ||
| BLOB_FILE_STORE_URLS=s3://my-bucket/?endpoint=https://[ACCOUNT_ID].r2.cloudflarestorage.com |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this the proper R2 config for a consumer from cloudflare? Seems weird it goes through S3.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I based it on syncing best practices description from docs and actually tested that it works (just tested parts of the code on my own R2), but I cannot find any information about this format in cloudflare docs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cloudflare's API is S3-compatible
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ngl, looks odd. @spypsy can you confirm? I'm worried the other docs may also be wrong.
| ### Docker Compose integration | ||
|
|
||
| Add the environment variables to your `docker-compose.yml`: | ||
|
|
||
| ```yaml | ||
| environment: | ||
| # ... other environment variables | ||
| BLOB_FILE_STORE_URLS: ${BLOB_FILE_STORE_URLS} | ||
| L1_CONSENSUS_HOST_URLS: ${L1_CONSENSUS_HOST_URLS} | ||
| BLOB_ARCHIVE_API_URL: ${BLOB_ARCHIVE_API_URL} | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's not go into different ways to configure env vars here. We should just explain the env vars to set, and let the operator decide how to handle them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
| :::tip Automatic Configuration | ||
| When using `--network [NETWORK_NAME]`, blob sources are automatically configured for you. Most users don't need to manually configure blob storage. | ||
| ::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's also clarify what happens if the user manually sets one of the env vars: they end up replacing the blob sources, not appending to the ones automatically configured.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a warning with clarification, additionally updated the initial tip to mention that only filestore sources are configured on the network level
| BLOB_ARCHIVE_API_URL: ${BLOB_ARCHIVE_API_URL} | ||
| ``` | ||
|
|
||
| ## Authentication |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't this whole section only relevant for upload?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think so - depends on the storage configuration but you might need read access keys/permissions to read the data, only HTTP access should always work without any additional permissions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
only HTTP access should always work without any additional permissions
My guess is most endpoints (S3, R2, whatever it is) will just be accessed via public http, that's why I was pushing for removing this section. But I guess we can leave it in in case someone wants to set up a permissioned repository.
|
|
||
| - **Google Cloud Storage** - `gs://bucket-name/path/` | ||
| - **Amazon S3** - `s3://bucket-name/path/` | ||
| - **Cloudflare R2** - `s3://bucket-name/path/?endpoint=https://[ACCOUNT_ID].r2.cloudflarestorage.com` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same question on R2 URL
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same answer - these are urls already used in the docs and they do work
| BLOB_FILE_STORE_UPLOAD_URL=file:///data/blobs | ||
| ``` | ||
|
|
||
| ### Docker Compose integration |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as in the other doc
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's add a section on the .healthcheck file, and request to exclude it from any pruning policies.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added
3c4be61 to
66e0fdc
Compare
| ### Cloudflare R2 configuration | ||
|
|
||
| ```bash | ||
| BLOB_FILE_STORE_URLS=s3://my-bucket/?endpoint=https://[ACCOUNT_ID].r2.cloudflarestorage.com |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ngl, looks odd. @spypsy can you confirm? I'm worried the other docs may also be wrong.
| BLOB_ARCHIVE_API_URL: ${BLOB_ARCHIVE_API_URL} | ||
| ``` | ||
|
|
||
| ## Authentication |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
only HTTP access should always work without any additional permissions
My guess is most endpoints (S3, R2, whatever it is) will just be accessed via public http, that's why I was pushing for removing this section. But I guess we can leave it in in case someone wants to set up a permissioned repository.
|
@mrzeszutko heads up this failed due to spellchecks |
66e0fdc to
556a9a9
Compare
@spalladino I added missing new words to docs-words.txt |
|
bit late but just to confirm @spalladino that format does look correct and it's what we use currently for snapshot uploading to our bucket. we also have a |
## Summary - Add `docs-network`, `docs-developers`, `developer_versioned_docs`, and `network_versioned_docs` to `.rebuild_patterns` so that changes to markdown files in these directories invalidate the test cache for spellcheck ## Problem PR #19194 passed spellcheck on the PR but failed on merge queue. This happened because: 1. The spellcheck test cache hash is computed from `.rebuild_patterns` 2. `.rebuild_patterns` didn't include the docs content directories (`docs-network/`, etc.) 3. On PR: hash didn't change → cache hit → spellcheck "passed" using stale cached result 4. On merge queue: `USE_TEST_CACHE=0` → spellcheck ran fresh → found spelling errors ## Solution Add the missing docs content directories to `.rebuild_patterns` so any markdown changes invalidate the cache and spellcheck runs fresh. ## Test plan - [x] Verify `.rebuild_patterns` syntax is correct - [ ] CI should run spellcheck with the new hash 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Josh Crites <[email protected]>
## Summary - Add `docs-network`, `docs-developers`, `developer_versioned_docs`, and `network_versioned_docs` to `.rebuild_patterns` so that changes to markdown files in these directories invalidate the test cache for spellcheck ## Problem PR #19194 passed spellcheck on the PR but failed on merge queue. This happened because: 1. The spellcheck test cache hash is computed from `.rebuild_patterns` 2. `.rebuild_patterns` didn't include the docs content directories (`docs-network/`, etc.) 3. On PR: hash didn't change → cache hit → spellcheck "passed" using stale cached result 4. On merge queue: `USE_TEST_CACHE=0` → spellcheck ran fresh → found spelling errors ## Solution Add the missing docs content directories to `.rebuild_patterns` so any markdown changes invalidate the cache and spellcheck runs fresh. ## Test plan - [x] Verify `.rebuild_patterns` syntax is correct - [ ] CI should run spellcheck with the new hash 🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary - Add `docs-network`, `docs-developers`, `developer_versioned_docs`, and `network_versioned_docs` to `.rebuild_patterns` so that changes to markdown files in these directories invalidate the test cache for spellcheck ## Problem PR #19194 passed spellcheck on the PR but failed on merge queue. This happened because: 1. The spellcheck test cache hash is computed from `.rebuild_patterns` 2. `.rebuild_patterns` didn't include the docs content directories (`docs-network/`, etc.) 3. On PR: hash didn't change → cache hit → spellcheck "passed" using stale cached result 4. On merge queue: `USE_TEST_CACHE=0` → spellcheck ran fresh → found spelling errors ## Solution Add the missing docs content directories to `.rebuild_patterns` so any markdown changes invalidate the cache and spellcheck runs fresh. ## Test plan - [x] Verify `.rebuild_patterns` syntax is correct - [ ] CI should run spellcheck with the new hash 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Summary
BLOB_SINK_ARCHIVE_API_URL→BLOB_ARCHIVE_API_URL(cleanup after BlobSink removal)BLOB_SINK_PORTandBLOB_SINK_URLDescription
Following the removal of the BlobSink HTTP server (#19143), this PR:
Adds new documentation (blob_storage.md) explaining how Aztec nodes store and retrieve blob data, including:
Adds blob upload documentation (blob_upload.md) for node operators who want to contribute to the network by hosting a blob file store, including:
BLOB_FILE_STORE_UPLOAD_URLCleans up legacy naming by renaming
BLOB_SINK_ARCHIVE_API_URLtoBLOB_ARCHIVE_API_URL- the "sink" terminology is no longer accurate since the HTTP server was removedRemoves dead code -
BLOB_SINK_PORTandBLOB_SINK_URLenv vars that were left behind after BlobSink removalFixes A-389