Install
Storage

Other S3-compatible services

Checklist and settings for Ceph RGW, Wasabi, DigitalOcean Spaces and other S3-compatible stores.

Checklist

  • Path-style requests (<endpoint>/<bucket>/<key>).
  • Signature Version 4 with a static access key and secret key.
  • Multipart uploads with parts of 5 MiB or more, all but the last of one size.
  • Server-side copy between two buckets with one key pair: CopyObject, and UploadPartCopy over 5 GiB.
  • Range reads on GetObject.
  • ListObjectsV2 on both buckets.
  • HeadObject on a missing key answers 404, not 403.
  • The AWS SDK's default upload checksums (CRC32), or RELIC_OBJECT_STORAGE_CHECKSUM=when_required.
  • A way to expire temporary objects after a day.
  • Deletes free space, or a rule removes old versions.
  • A publicly trusted certificate on https://, or http:// on a private network.

See the overview.

Common settings

ServiceRELIC_OBJECT_STORAGE_ENDPOINTRELIC_OBJECT_STORAGE_REGION
Ceph Object Gateway (RGW)http://<rgw-host>:7480, or your TLS front endThe zonegroup's API name
Wasabihttps://s3.<region>.wasabisys.comThe bucket's region, such as eu-central-1
DigitalOcean Spaceshttps://<region>.digitaloceanspaces.comThe region, such as fra1
Garagehttp://<garage-host>:3900The s3_region from Garage's configuration

Create two buckets and a key pair with read, write, list and delete access to both, then set:

RELIC_OBJECT_STORAGE_ENDPOINT=<endpoint>
RELIC_OBJECT_STORAGE_REGION=<region>
RELIC_OBJECT_STORAGE_ARTIFACTS_BUCKET=<artifacts-bucket>
RELIC_OBJECT_STORAGE_TEMPORARY_BUCKET=<temporary-bucket>
RELIC_OBJECT_STORAGE_ACCESS_KEY=<access-key>
RELIC_OBJECT_STORAGE_SECRET_KEY=<secret-key>

Helm:

seaweedfs:
  enabled: false
existingCredentialsSecret: relic          # holds the S3 key pair, adminPassword and encryptionKey
objectStorage:
  endpoint: <endpoint>
  region: <region>
  artifactsBucket: <artifacts-bucket>
  temporaryBucket: <temporary-bucket>

Testing a new service

  1. /readyz answers ok.
  2. Upload a small file and one of a few hundred megabytes with relic artifact upload. Download both with relic artifact download and compare checksums.
  3. Delete a file and empty it from the trash can. After the grace period (RELIC_GARBAGE_COLLECTION_GRACE_PERIOD, which you can shorten for the test) and the next garbage collection run, its object is gone from the artifacts bucket.
  4. If you store files over 5 GiB, upload one to test UploadPartCopy.

When a step fails, the server log shows the S3 error.