Documentation menu

 

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 createUpupHandler config.
  • 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-type header.

Not sure which mode you need? Client Mode vs Server Mode covers what runs where in each.