# 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`](/docs/guides/server-mode-setup/)
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](/docs/guides/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](/docs/guides/storage/aws-s3/) — bucket setup, the IAM policy,
  CORS, and a `createUpupHandler` config.
- [Cloudflare R2](/docs/guides/storage/cloudflare-r2/) — the account-scoped
  endpoint, region `auto`, API tokens, and CORS.
- [Backblaze B2](/docs/guides/storage/backblaze-b2/) — application keys, the
  region-scoped S3 endpoint, and CORS.
- [DigitalOcean Spaces](/docs/guides/storage/digitalocean-spaces/) — Spaces
  access keys, the regional endpoint, CORS, and the CDN.
- [MinIO](/docs/guides/storage/minio/) — a self-hosted MinIO server with Docker,
  path-style addressing, and CORS.
- [Any S3-compatible storage](/docs/guides/storage/s3-compatible/) — 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](/docs/guides/storage/azure-blob/) — 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-type` header.

Not sure which mode you need? [Client Mode vs Server Mode](/docs/guides/modes/)
covers what runs where in each.
