StorageStorage configuration

Storage configuration

Use the bundled SeaweedFS or your own S3-compatible bucket.

Bundled storage

By default recordings go to SeaweedFS, which runs in the Compose stack and keeps its data in the seaweedfs-data volume. Browsers reach it at s3.<your domain>.

Your own bucket

Delete the seaweedfs service and the web service’s depends_on entry for it, then in the x-app-env block at the top of docker-compose.yml (shared by web and worker) set:

S3_ENDPOINTYour provider’s endpoint
S3_PUBLIC_ENDPOINTThe address browsers use, if different; remove it if it’s the same
S3_REGIONThe bucket’s region
S3_BUCKETThe bucket’s name
S3_ACCESS_KEY_IDAccess key
S3_SECRET_ACCESS_KEYSecret for the key above
docker compose up -d
The provider must accept presigned PUTs with a signed x-amz-checksum-sha256 header (check it with pnpm --filter @tapry/web test:s3 and the S3_E2E_* variables), and the bucket needs CORS allowing PUT and GET from your studio’s address.