Files
labweb/supabase-stack/docs/QUICK_START.md
zly 9fa602f21b feat(supabase): 整理 Storage 文档和示例代码
- 创建 docs/ 目录存放所有文档
  - QUICK_START.md: 快速入门指南
  - OPERATIONS_GUIDE.md: 完整运维指南
  - VUE_API_INTEGRATION.md: Vue 集成文档
  - DEPLOYMENT_INFO.md: 部署配置信息
  - versions.md: 版本信息

- 创建 examples/ 目录存放示例代码
  - storage_client.py: Python 完整客户端
  - storage_client.js: JavaScript 完整客户端
  - test_https_storage.py: 功能测试脚本

- 新增 README_STORAGE.md 作为 Storage 使用指南

- 修复签名 URL 生成问题(需要 /storage/v1 前缀)
- 测试脚本支持资源已存在的情况
- 所有客户端代码已验证可用

功能特性:
✓ 公网 HTTPS 访问
✓ 文件上传/下载
✓ 生成临时下载链接
✓ 完整的 REST API 客户端
✓ 支持 Python 和 JavaScript
2025-11-22 21:03:00 +08:00

1.8 KiB
Raw Permalink Blame History

Supabase Stack 快速参考

🚀 启动服务

cd /vol1/1000/docker_server/traefik/supabase-stack

# 启动所有服务(包含 MinIO 对象存储)
docker compose -f docker-compose.yml -f docker-compose.s3.yml up -d

# 查看状态
docker compose ps

# 查看日志
docker compose logs -f storage

📦 Storage API 访问

端点: https://amiap.hzau.edu.cn/supa/storage/v1

密钥:

SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIiwiaXNzIjoic3VwYWJhc2UiLCJpYXQiOjE3NjM4MDI2NjksImV4cCI6MjA3OTE2MjY2OX0.gQWUaTkZ6mjjlv2TED0cODp2meqqWuCGKZR1ptIbovg

💻 快速使用

Python

from storage_client import SupabaseStorageClient

client = SupabaseStorageClient(
    'https://amiap.hzau.edu.cn/supa',
    'your-service-role-key'
)

# 上传文件
client.upload_file('bucket', 'photo.jpg', 'uploads/photo.jpg')

# 生成临时链接
url = client.create_signed_url('bucket', 'uploads/photo.jpg', 3600)

JavaScript

const client = new SupabaseStorageClient(
    'https://amiap.hzau.edu.cn/supa',
    'your-service-role-key'
);

// 上传文件
await client.uploadFile('bucket', fileObject, 'uploads/photo.jpg');

// 生成临时链接
const url = await client.createSignedUrl('bucket', 'uploads/photo.jpg', 3600);

📚 文档

  • OPERATIONS_GUIDE.md - 完整运维指南(必读)
  • storage_client.py - Python 完整客户端代码
  • storage_client.js - JavaScript 完整客户端代码
  • test_https_storage.py - 测试脚本

🧪 测试

python3 test_https_storage.py

⚠️ 重要

  • MinIO 必须运行docker-compose.s3.yml 不能删除
  • 数据位置/vol1/1000/s3/stub/
  • 不要直接访问 MinIO:统一通过 Storage API