Install
Storage

Backblaze B2

Backblaze B2 as object storage, through its S3-compatible API.

Relic is not tested against B2, so test an upload and a download before production.

Create the buckets

In the B2 web console, create two private buckets, such as example-relic-artifacts and example-relic-temporary. Note the Endpoint, such as s3.us-west-004.backblazeb2.com; the part between s3. and .backblazeb2.com is the region.

Lifecycle settings

B2 keeps every version of a file, and an S3 delete only hides it. Set these under Lifecycle Settings, or garbage collection frees no space:

BucketSetting
artifactsKeep only the last version of the file.
temporaryA custom rule for all files: hide 1 day after upload, delete 1 day after hiding.

Application key

Under Application Keys, add a key with Read and Write access to both buckets; a key restricted to one bucket makes every upload fail. Its keyID and applicationKey, shown once, are Relic's key pair.

Settings

RELIC_OBJECT_STORAGE_ENDPOINT=https://s3.us-west-004.backblazeb2.com
RELIC_OBJECT_STORAGE_REGION=us-west-004
RELIC_OBJECT_STORAGE_ARTIFACTS_BUCKET=example-relic-artifacts
RELIC_OBJECT_STORAGE_TEMPORARY_BUCKET=example-relic-temporary
RELIC_OBJECT_STORAGE_ACCESS_KEY=<keyID>
RELIC_OBJECT_STORAGE_SECRET_KEY=<applicationKey>

Helm:

seaweedfs:
  enabled: false
existingCredentialsSecret: relic          # holds the S3 key pair, adminPassword and encryptionKey
objectStorage:
  endpoint: https://s3.us-west-004.backblazeb2.com
  region: us-west-004
  artifactsBucket: example-relic-artifacts
  temporaryBucket: example-relic-temporary

Gotchas

  • Checksums. If B2 rejects the SDK's checksums, set RELIC_OBJECT_STORAGE_CHECKSUM to when_required (objectStorage.checksum in the Helm chart).
  • Downloads cost transactions. Each download and HEAD is a B2 API call. The Helm chart's readiness probe adds one HEAD every 10 seconds per server pod, and the daily storage check lists the artifacts bucket and reads up to 10 GiB.