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 endpointS3_PUBLIC_ENDPOINTThe address browsers use, if different; remove it if it’s the sameS3_REGIONThe bucket’s regionS3_BUCKETThe bucket’s nameS3_ACCESS_KEY_IDAccess keyS3_SECRET_ACCESS_KEYSecret for the key abovedocker 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.