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

7.1 KiB
Raw Blame History

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用于前端/后端开发)

// ✅ 公开密钥 - 可以在前端使用
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 服务状态

核心服务

# 查看所有服务状态
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   # 日志分析

常用命令

# 进入 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 关键配置

# 数据库
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. 安装依赖

npm install @supabase/supabase-js

2. 创建 Supabase 客户端

// 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. 使用示例

// 查询数据
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

快速测试脚本

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 官方文档

🛠️ 故障排查

服务无法启动

# 查看日志
docker compose logs kong
docker compose logs rest

# 重启服务
docker compose restart

# 完全重建
docker compose down
docker compose up -d

API 无法访问

# 检查 Kong 状态
docker compose ps kong

# 检查端口
netstat -tlnp | grep 18000

# 测试内网连接
curl http://100.64.0.2:18000/rest/v1/

数据库连接问题

# 进入数据库容器
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