Bring Your Own Storage
Keep your digital product files and library content in a bucket you own. Mytho handles the delivery, the files live with you.
Out of the box, everything you upload sits on Mytho's storage and counts against your 5GB. Connect your own bucket and that changes for the files that matter most: digital product files and Content Library uploads go straight to storage you own. Product photos, thumbnails, and email images stay on Mytho, they are part of your storefront, not your catalogue of deliverables.
Your buyers download through signed, expiring links on data.mytho.dev, whether the file sits in our bucket or yours. For a file in your own bucket, Mytho fetches it behind that link with a short-lived signed URL (about five minutes), minted fresh for each download.
Works with Cloudflare R2 and AWS S3. Both are tested and certified by us. R2 is the easier and cheaper of the two, see the AWS cost note further down.
Why use your own bucket
- Own your files. Your deliverables sit in an account you control. If you ever leave Mytho, your catalogue is already in your hands, nothing to export.
- R2 downloads are free. Cloudflare charges nothing for egress, so a heavy download catalogue costs the same to serve as a light one.
- No quota. Files in your bucket do not count against the 5GB Mytho allowance. Your bucket, your bill, as big as you like.
What you need
A Cloudflare or AWS account, a bucket, and an API key scoped to that bucket. That is it. Both setups below take about ten minutes, and the R2 one is the easier of the two (and the cheaper, see the AWS cost note further down).
Cloudflare R2 setup
Create a bucket
In the Cloudflare dashboard, open R2 and create a bucket. Any name works. While you are there, copy your Account ID from the R2 overview page, you will need it in a minute.
Create a scoped API token
Under R2 → Manage API Tokens, create a token with Object Read & Write permission, scoped to just this bucket. Bucket-scoped means a leaked key can only ever touch this one bucket. Copy the Access Key ID and Secret Access Key, the secret is shown once.
Connect it to Mytho
Open Settings → Integrations → Your storage, pick Cloudflare R2, and paste in your Account ID, bucket name, Access Key ID, and Secret Access Key.
Test the connection
Hit Test connection. Mytho confirms it can reach the bucket, writes and removes a tiny probe file, and sets up the CORS policy your uploads need. Green status chip and you are done, new digital files now land in your bucket.
R2's free tier covers 10GB of storage a month, and downloads are free at any volume. For most digital shops the bucket costs exactly nothing.
AWS S3 setup
Create a bucket
In the S3 console, create a bucket in the region closest to your buyers and note the region code (eu-west-2, us-east-1, and so on). Leave Block Public Access on, Mytho never needs the bucket to be public.
Create an IAM user with a single-bucket policy
Create an IAM user with programmatic access only and attach an inline policy that allows reading and writing objects in this one bucket and nothing else. Allow it to manage the bucket CORS configuration too and Mytho can set that part up for you automatically.
Create access keys
Generate an access key pair for the user and copy both values. AWS shows the secret only once.
Connect and test
In Settings → Integrations → Your storage, pick Amazon S3, enter the region, bucket name, and keys, then hit Test connection.
AWS charges for downloads. Data leaving S3 costs roughly $0.09/GB after a free allowance (the first 100GB each month, shared across your AWS account). It is their bill, not ours, but know it before pointing a heavy download catalogue at S3. R2 has no download charge at all.
The CORS policy
Uploads go straight from your browser to your bucket, and browsers require a CORS policy on the bucket for that to work. When you hit Test connection, Mytho tries to set the policy automatically. If your token does not have permission for that, the connection still works, and Mytho shows you the exact JSON to paste into your provider's CORS settings instead:
[
{
"AllowedOrigins": ["https://cloud.mytho.dev"],
"AllowedMethods": ["PUT"],
"AllowedHeaders": ["Content-Type"],
"MaxAgeSeconds": 3600
}
]On R2 that lives under your bucket's Settings → CORS policy. On S3 it is Permissions → Cross-origin resource sharing. Paste it, save, and hit Test connection again.
If your storage disconnects
Mytho re-checks your connection regularly. If your bucket stops answering (revoked token, rotated keys, deleted bucket), it is marked failed in Settings, a warning banner appears across your dashboard, and new uploads and downloads of your own files pause until you fix or reconnect it. Nothing is deleted.
While the connection is down, uploads to your bucket and downloads of files stored there stop with a clear error. Mytho never quietly falls back to platform storage, so files never land somewhere you did not expect. And nothing is deleted, your files sit untouched in your bucket the whole time. Fix the credentials or reconnect, and delivery picks up exactly where it left off.
Existing files stay on Mytho
Connecting a bucket changes where new uploads go. Everything you uploaded before keeps delivering from Mytho storage, so nothing breaks the moment you connect. To move a file into your bucket, re-upload it on the product or library item and the fresh copy lands in your storage.
Last updated