--- title: 配置 Cloudflare R2 存储服务 description: 详细步骤配置 Cloudflare R2 存储服务,确保文件存储顺利进行。 tags: - Cloudflare R2 - S3 存储 - 文件存储 - 环境变量 --- # 配置 Cloudflare R2 存储服务 在服务端数据库中我们需要配置 S3 存储服务来存储文件。 ## 配置步骤 ### 配置并获取 S3 存储桶 你需要前往你的 S3 服务提供商(如 AWS S3、Cloudflare R2 等)并创建一个新的存储桶(Bucket)。接下来以 Cloudflare R2 为例,介绍创建流程。 下图是 Cloudflare R2 的界面: {'Cloudflare 创建存储桶时将指定其名称,然后点击创建。 {'R2 ### 获取存储桶相关环境变量 在 R2 存储桶的设置中,可以看到桶配置的信息: {'查看存储桶的相关信息'} 其对应的环境变量为: ```shell # 存储桶的名称 S3_BUCKET=lobechat # 存储桶的请求端点(注意此处链接的路径带存储桶名称,必须删除该路径,或使用申请 S3 API token 页面所提供的链接) S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com # 存储桶对外的访问域名 S3_PUBLIC_DOMAIN=https://s3-for-lobechat.your-domain.com ``` `S3_ENDPOINT`必须删除其路径,否则会无法访问所上传文件 ### 获取 S3 密钥环境变量 你需要获取 S3 的访问密钥,以便 LobeChat 的服务端有权限访问 S3 存储服务。在 R2 中,你可以在账户详情中配置访问密钥: {'查看存储桶的访问秘钥'} 点击右上角按钮创建 API token,进入创建 API Token 页面 {'创建对应 鉴于我们的服务端数据库需要读写 S3 存储服务,因此权限需要选择`对象读与写`,然后点击创建。 {'配置 创建完成后,就可以看到对应的 S3 API token {'复制 其对应的环境变量为: ```shell S3_ACCESS_KEY_ID=9998d6757e276cf9f1edbd325b7083a6 S3_SECRET_ACCESS_KEY=55af75d8eb6b99f189f6a35f855336ea62cd9c4751a5cf4337c53c1d3f497ac2 ``` ### 配置跨域 由于 S3 存储服务往往是一个独立的网址,因此需要配置跨域访问。 在 R2 中,你可以在存储桶的设置中找到跨域配置: {'Cloudflare 添加跨域规则,允许你的域名(在上文是 `https://your-project.vercel.app`)来源的请求: {'配置允许你的站点域名'} 示例配置如下: ```json [ { "AllowedOrigins": ["https://your-project.vercel.app"], "AllowedMethods": ["GET", "PUT", "HEAD", "POST", "DELETE"], "AllowedHeaders": ["*"] } ] ``` 配置后点击保存即可。 ## 环境变量一览 URL 的`https://`不可缺失,须保持 URL 的完整性 ```shell # S3 秘钥 S3_ACCESS_KEY_ID=9998d6757e276cf9f1edbd325b7083a6 S3_SECRET_ACCESS_KEY=55af75d8eb6b99f189f6a35f855336ea62cd9c4751a5cf4337c53c1d3f497ac2 # 存储桶的名称 S3_BUCKET=lobechat # 存储桶的请求端点 S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com # 存储桶对外的访问域名 S3_PUBLIC_DOMAIN=https://s3-dev.your-domain.com # 桶的区域,如 us-west-1,一般来说不需要添加,但某些服务商则需要配置 # S3_REGION=us-west-1 ```