Storage provider guides
upup uploads straight to storage you own. In both modes the browser uploads file
bytes directly to your bucket over short-lived signed URLs, and the storage
credentials never leave your server. In client mode your own endpoint signs
those URLs. In server mode @useupup/server
holds the credentials, signs the URLs for you, and writes cloud-drive files to
storage itself.
Each guide below walks through the setup for its provider and includes a
config you can copy. For the full storage.type table and the shared storage
config reference, read Storage Providers.
S3-compatible providers
These work in client mode and in server mode. In server mode you pick one with
the storage.type value in your createUpupHandler config.
- Amazon S3 — bucket setup, the IAM policy,
CORS, and a
createUpupHandlerconfig. - Cloudflare R2 — the account-scoped
endpoint, region
auto, API tokens, and CORS. - Backblaze B2 — application keys, the region-scoped S3 endpoint, and CORS.
- DigitalOcean Spaces — Spaces access keys, the regional endpoint, CORS, and the CDN.
- MinIO — a self-hosted MinIO server with Docker, path-style addressing, and CORS.
- Any S3-compatible storage — Wasabi, Google Cloud Storage, Supabase, Hetzner, Scaleway, Storj, and any other store that speaks the S3 API.
Azure Blob Storage
Azure Blob Storage has no S3-compatible API, so createUpupHandler rejects it
and server mode cannot serve it.
- Azure Blob Storage — client mode only:
your endpoint returns a SAS URL, the browser uploads straight to the blob,
and the guide covers the mandatory
x-ms-blob-typeheader.
Not sure which mode you need? Client Mode vs Server Mode covers what runs where in each.