Skip to content

Object storage

Add Storage > Object storage. Each node is its own bucket with its own key, and works with any S3 client (the AWS SDKs, boto3, rclone, aws CLI).

Variable Notes
S3_ENDPOINT The address apps inside the workspace use
S3_PUBLIC_ENDPOINT The public address, for presigned URLs a browser opens
S3_REGION
S3_BUCKET
S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY A key that only works on this bucket
S3_FORCE_PATH_STYLE Always true

Apps that read the AWS names (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, AWS_ENDPOINT_URL, AWS_S3_BUCKET, BUCKET_NAME…) get those too.

Use path-style addressing. The bucket is at <endpoint>/<bucket>; virtual-host style (<bucket>.<endpoint>) doesn’t work. Most SDKs pick this up from S3_FORCE_PATH_STYLE; with the AWS SDK for JavaScript set forcePathStyle: true.

import { S3Client } from '@aws-sdk/client-s3';
const s3 = new S3Client({
endpoint: process.env.S3_ENDPOINT,
region: process.env.S3_REGION,
forcePathStyle: true,
});
  • Quota (optional, 1 MB to 10 TB). At the limit, uploads are refused while reads and deletes keep working. Usage updates every few minutes. Your plan’s storage total applies as well.
  • CORS origins. Needed when a browser uploads or downloads directly: *, or up to 10 comma-separated origins. Empty blocks browsers.

Browse, upload (up to 100 MB per file), download and delete files right in the dashboard. Editors and owners only.

Connect from outside shows the key ID, endpoint, region, bucket and a ready-to-paste aws command. Reveal secret shows the secret key for 60 seconds (editors and owners; it is recorded in the activity log).

Terminal window
aws --endpoint-url "$S3_PUBLIC_ENDPOINT" s3 ls "s3://$S3_BUCKET/"

Where the platform allows it, a bucket in a personal workspace can be made publicly readable, for example to serve images or a static site straight from storage. It gets its own address, serves only reads, and is rate limited.

Deleting the node revokes its key at once, so apps lose access. The files are kept for 7 days before they are purged, so an accidental delete can be recovered by contacting support.