- 创建 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
294 lines
7.1 KiB
Markdown
294 lines
7.1 KiB
Markdown
# 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
|