N0.SaaSN0.SaaS

对象存储

对象存储, 目前支持 Cloudflare R2, Vercel R2, Supabase

对象存储

对象存储是一种存储方式,它将数据存储在对象中,每个对象都有自己的唯一标识符。对象存储可以存储任何类型的数据,包括文本、图像、视频等。

目前应用的功能有:

  • User Profile Avatar

支持的对象存储服务有:

  • Cloudflare R2: https://dash.cloudflare.com/[account-id]/r2/overview, 选择 R2
  • Vercel Blob: https://vercel.com/[team-id]/[project-id]/stores
  • Supabase Storage: https://supabase.com/dashboard/project/[project-id]/storage

配置对象存储

Cloudflare R2

  1. 进入 R2 控制台: https://dash.cloudflare.com/[account-id]/r2/overview
  2. 选择 Create Bucket -> 设置 Bucket Name -> Create
  3. 获取 Bucket Name (STORAGE_BUCKET 环境变量)
  4. 设置自定义公开域名 (STORAGE_PUBLIC_URL 环境变量)
  5. 获取 S3 API (R2_ENDPOINT 环境变量)
  6. 获取 API Token: https://dash.cloudflare.com/profile/api-tokens -> Create Token -> R2 -> Read & Write -> Create -> Copy -> Save
    • Access Key ID (R2_ACCESS_KEY_ID 环境变量)
    • Secret Access Key (R2_SECRET_ACCESS_KEY 环境变量)

至此,环境变量设置:

STORAGE_TYPE=r2
STORAGE_BUCKET={bucket-name}
STORAGE_PUBLIC_URL={custom-public-domain-url}

R2_ACCESS_KEY_ID=
R2_SECRET_ACCESS_KEY=
R2_ENDPOINT=
# R2_PUBLIC_URL=https://public.your-bucket.domain.com

Vercel Blob

创建 Blog Storage Database

  1. 进入项目仪表盘: https://vercel.com/[team-id]/[project-id]
  2. 选择 Storage Tab -> Create Database -> Create New Tab -> 选择 Blob -> Continue -> 设置 Store Name -> Create
  3. 链接项目:自动创建环境变量 BLOB_READ_WRITE_TOKEN,环境变量后缀固定为 _READ_WRITE_TOKEN, 默认前缀为 BLOB (一般无需修改)

获取存储公共 URL

  1. Open https://vercel.com/[team-id]/[project-id]/stores/blob/store_[store-id]/projects
  2. Click Settings Tab -> View Store Information -> Copy Base URL, label is This is the Base URL for all blobs in this store

至此, Vercel Blob 存储配置完成

部署环境变量设置:

STORAGE_TYPE=vercel
STORAGE_BUCKET=blog # 可选,Vercel Blob 不需要指定 bucket
STORAGE_PUBLIC_URL=<Public_Base_URL>
BLOB_READ_WRITE_TOKEN=<BLOB_READ_WRITE_TOKEN>

Supabase Storage

创建 Bucket

  • Click Storage -> Click New bucket -> Input Name of bucket & Check Public bucket -> Click Create

获取 Supabase URL 和 Service Role Key

  • SUPABASE_URL: Project Settings -> General -> Project ID -> Copy -> https://[project-id].supabase.co
  • SUPABASE_SERVICE_ROLE_KEY: Project Settings -> API Keys -> Legacy API Keys -> service_role secret -> Reveal -> Copy

至此, Supabase Storage 存储配置完成

部署环境变量设置:

STORAGE_TYPE=supabase
STORAGE_BUCKET={name-of-bucket}
SUPABASE_URL={SUPABASE_URL}
SUPABASE_SERVICE_ROLE_KEY={SUPABASE_SERVICE_ROLE_KEY}
对象存储 | N0.SaaS