生产环境强烈推荐使用 S3-compatible 对象存储(S3 / MinIO / 兼容 S3 的 OSS / 其他 S3-compatible 服务),并按 public/private 双桶进行配置。
为什么要两个 Bucket?
Teable 会将不同类型的文件放在不同 bucket:- Public bucket:头像、表单头图等需要公开访问的资源。
- Private bucket:附件等需要权限保护的资源(通过签名 URL 访问)。
必需环境变量
最少需要配置:- Provider
BACKEND_STORAGE_PROVIDER:s3或minio
- Buckets
BACKEND_STORAGE_PUBLIC_BUCKETBACKEND_STORAGE_PRIVATE_BUCKET
- 公共访问前缀
STORAGE_PREFIX:建议设置为 public bucket 的访问基址(或其前面的 CDN 域名)
S3 Provider 示例
MinIO Provider 示例
Public bucket 必做项
1)Public Read(公共读)
public bucket 必须允许公开读对象。 以 AWS S3 为例,可配置 Bucket Policy:AWS S3 可能需要调整 public bucket 的 Block Public Access 相关选项。请遵循你们公司的安全规范。
2)CORS(允许任意跨域)
为保证浏览器端访问与上传,public bucket 需要配置 CORS,允许跨域请求。 AWS S3 示例:PUT 加到 AllowedMethods。
Private bucket 提示
- private bucket 必须保持私有(禁止 public read)。
- Teable 会通过 签名 URL 访问 private 对象。
- 如需为 private bucket 使用独立域名/endpoint,可配置:
BACKEND_STORAGE_PRIVATE_BUCKET_ENDPOINT(可选)
Azure / GCP 说明
Teable 对象存储使用 S3 API。Azure Blob Storage 与 Google Cloud Storage 并非 S3-native。- 在 Azure / GCP 上部署时,只要 Teable 运行环境能访问到某个 S3 endpoint(例如 AWS S3),同样可以直接使用
BACKEND_STORAGE_PROVIDER=s3。 - 或选用 S3-compatible 的对象存储:
- 自建 MinIO(作为 S3 endpoint)
- 或其他你们选择的托管 S3-compatible 服务