Files
labweb/supabase-stack/docs/DEPLOYMENT_INFO.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

294 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Supabase 部署信息汇总
## 🌐 访问地址
### HTTPS 域名访问(推荐用于 API
```
API Base URL: https://amiap.hzau.edu.cn/supa
```
### 内网访问(用于 Dashboard
```
Dashboard: http://100.64.0.2:18000
API Base: http://100.64.0.2:18000
```
---
## 🔑 认证信息
### Dashboard 登录
```
URL: http://100.64.0.2:18000
用户名: lab-admin
密码: 017b7076cfb25bd18410d1e5f4f7ec5a
```
### API Keys用于前端/后端开发)
```javascript
// ✅ 公开密钥 - 可以在前端使用
ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzYzODAyNjY5LCJleHAiOjIwNzkxNjI2Njl9.ltGXvQKpguLaf8Vzomn310hLgOZbrjqZT-F3rR00ulg"
// ⚠️ 私密密钥 - 仅后端使用,不要暴露
SERVICE_ROLE_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIiwiaXNzIjoic3VwYWJhc2UiLCJpYXQiOjE3NjM4MDI2NjksImV4cCI6MjA3OTE2MjY2OX0.gQWUaTkZ6mjjlv2TED0cODp2meqqWuCGKZR1ptIbovg"
```
### 数据库连接
```
主机: 100.64.0.2 或 db (容器内)
端口: 5432
数据库: postgres
用户: postgres
密码: a837234b952ad7aa9ab4852f47021660c038209a71fce027cec8bab37ad82ae5
```
---
## 📡 API 端点
### ✅ 可用的服务端点
| 服务 | HTTPS 端点 | 内网端点 | 用途 |
|------|-----------|----------|------|
| REST API | `https://amiap.hzau.edu.cn/supa/rest/v1/` | `http://100.64.0.2:18000/rest/v1/` | 数据库 CRUD 操作 |
| Auth API | `https://amiap.hzau.edu.cn/supa/auth/v1/` | `http://100.64.0.2:18000/auth/v1/` | 用户认证 |
| Storage API | `https://amiap.hzau.edu.cn/supa/storage/v1/` | `http://100.64.0.2:18000/storage/v1/` | 文件存储 |
| Realtime | `wss://amiap.hzau.edu.cn/supa/realtime/v1/websocket` | `ws://100.64.0.2:18000/realtime/v1/websocket` | 实时订阅 |
| Dashboard | ❌ 不可用 | `http://100.64.0.2:18000/` | 管理界面 |
---
## 🐳 Docker 服务状态
### 核心服务
```bash
# 查看所有服务状态
docker compose ps
# 核心服务列表
supabase-db # PostgreSQL 数据库
supabase-kong # API 网关(端口: 18000
supabase-auth # 用户认证服务
supabase-rest # REST API 服务
supabase-storage # 文件存储服务
supabase-realtime # 实时订阅服务
supabase-studio # Dashboard
supabase-meta # 数据库元数据
supabase-analytics # 日志分析
```
### 常用命令
```bash
# 进入 supabase-stack 目录
cd /vol1/1000/docker_server/traefik/supabase-stack
# 启动所有服务
docker compose up -d
# 停止所有服务
docker compose down
# 查看服务日志
docker compose logs -f kong
docker compose logs -f rest
docker compose logs -f auth
# 重启特定服务
docker compose restart kong
docker compose restart rest
```
---
## 🔧 配置文件
### 重要文件位置
```
/vol1/1000/docker_server/traefik/supabase-stack/
├── .env # 环境变量配置
├── docker-compose.yml # Docker Compose 配置
├── VUE_API_INTEGRATION.md # Vue 集成文档(已创建)
├── DEPLOYMENT_INFO.md # 本文件
├── volumes/
│ ├── api/kong.yml # Kong 网关配置
│ ├── db/ # 数据库数据目录
│ └── storage/ # 文件存储目录
```
### .env 关键配置
```bash
# 数据库
POSTGRES_PASSWORD=a837234b952ad7aa9ab4852f47021660c038209a71fce027cec8bab37ad82ae5
POSTGRES_HOST=db
POSTGRES_PORT=5432
# JWT
JWT_SECRET=7a264228051ad10724934342ce62dce584161c248841061de0d0a56e92d9bb1a
# API Keys
ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
# Dashboard
DASHBOARD_USERNAME=lab-admin
DASHBOARD_PASSWORD=017b7076cfb25bd18410d1e5f4f7ec5a
# 域名配置
SITE_URL=https://amiap.hzau.edu.cn
API_EXTERNAL_URL=https://amiap.hzau.edu.cn/supa
SUPABASE_PUBLIC_URL=https://amiap.hzau.edu.cn/supa
```
---
## 🚀 快速开始(前端集成)
### 1. 安装依赖
```bash
npm install @supabase/supabase-js
```
### 2. 创建 Supabase 客户端
```javascript
// src/lib/supabaseClient.js
import { createClient } from '@supabase/supabase-js'
const supabaseUrl = 'https://amiap.hzau.edu.cn/supa'
const supabaseAnonKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzYzODAyNjY5LCJleHAiOjIwNzkxNjI2Njl9.ltGXvQKpguLaf8Vzomn310hLgOZbrjqZT-F3rR00ulg'
export const supabase = createClient(supabaseUrl, supabaseAnonKey)
```
### 3. 使用示例
```javascript
// 查询数据
const { data, error } = await supabase
.from('users')
.select('*')
// 插入数据
const { data, error } = await supabase
.from('users')
.insert([{ name: 'John', email: 'john@example.com' }])
// 用户登录
const { data, error } = await supabase.auth.signInWithPassword({
email: 'user@example.com',
password: 'password'
})
```
---
## 🔍 测试 API
### 快速测试脚本
```bash
cd /vol1/1000/docker_server/traefik/supabase-stack
# 测试 REST API
curl -H "apikey: ANON_KEY" \
-H "Authorization: Bearer ANON_KEY" \
https://amiap.hzau.edu.cn/supa/rest/v1/
# 测试 Auth API
curl https://amiap.hzau.edu.cn/supa/auth/v1/health
# 测试 Storage API
curl https://amiap.hzau.edu.cn/supa/storage/v1/version
```
### 在浏览器中测试
```
1. 访问 Dashboard: http://100.64.0.2:18000
2. 使用用户名/密码登录
3. 创建测试表
4. 在 Vue 应用中调用 API
```
---
## ⚠️ 已知问题
### 1. Dashboard 子路径问题
- **问题**: `https://amiap.hzau.edu.cn/supa` 无法访问 Dashboard
- **原因**: Supabase Studio 是 SPA不支持子路径部署
- **解决**: 使用内网地址 `http://100.64.0.2:18000`
### 2. Pooler 服务重启
- **问题**: `supabase-pooler` 一直重启
- **影响**: 无影响,这是连接池优化组件,非必需
- **解决**: 可忽略或停止该服务 `docker stop supabase-pooler`
### 3. REST API 缓存重试
- **问题**: 首次访问可能看到 "schema cache retrying"
- **原因**: PostgreSQL schema 缓存加载
- **解决**: 等待几秒自动恢复,或重启 `docker compose restart rest`
---
## 📚 开发文档
| 文档 | 位置 | 说明 |
|------|------|------|
| Vue 集成指南 | `VUE_API_INTEGRATION.md` | 详细的前端集成教程 |
| 部署信息 | `DEPLOYMENT_INFO.md` | 本文件 |
| 官方文档 | https://supabase.com/docs | Supabase 官方文档 |
---
## 🛠️ 故障排查
### 服务无法启动
```bash
# 查看日志
docker compose logs kong
docker compose logs rest
# 重启服务
docker compose restart
# 完全重建
docker compose down
docker compose up -d
```
### API 无法访问
```bash
# 检查 Kong 状态
docker compose ps kong
# 检查端口
netstat -tlnp | grep 18000
# 测试内网连接
curl http://100.64.0.2:18000/rest/v1/
```
### 数据库连接问题
```bash
# 进入数据库容器
docker exec -it supabase-db psql -U postgres
# 查看数据库
\l
# 查看 schema
\dn
```
---
## 📞 支持
如有问题,请检查:
1. 所有容器是否正常运行: `docker compose ps`
2. 查看服务日志: `docker compose logs [service]`
3. 参考 `VUE_API_INTEGRATION.md` 了解详细用法
4. 访问 Dashboard 管理数据库: `http://100.64.0.2:18000`
---
**最后更新**: 2025-11-22
**版本**: Supabase Self-Hosted Stack