引言
"The Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications."
这是「一天一个开源项目」系列的第 54 篇文章。今天介绍的项目是 Supabase (GitHub)。
想用 Firebase 的体验,但不想被供应商锁定?Supabase 是开源的 Postgres 开发平台 ,用企业级开源工具实现 Firebase 的典型能力:托管 Postgres 数据库 、认证与授权 、自动生成 REST/GraphQL API 、Realtime 订阅 、Edge Functions 、文件存储 、AI 向量工具。可云端托管,也可自托管。
你将学到什么
- Supabase 的核心能力与定位
- 技术架构:Postgres、PostgREST、GoTrue、Realtime、Storage 等
- 多语言客户端支持
- 与 Firebase 的对比
- 快速开始:云端与自托管
前置知识
- 对数据库、API、认证有基本了解
- 了解 Postgres 或 SQL 更佳(可选)
项目背景
项目简介
Supabase 是开源的 Postgres 开发平台,目标是提供类似 Firebase 的开发体验,但基于企业级开源组件。若已有 MIT、Apache 2 等开源协议的工具,优先采用;若没有则自行开发并开源。Supabase 不是 Firebase 的 1:1 映射,而是用开源工具实现类似体验。
团队
- 团队 :Supabase(supabase.com)
- 理念:用开源工具构建 Firebase 式开发体验
项目数据
- 📄 License: Apache-2.0
- 🌐 官网 : supabase.com
- 📚 文档 : supabase.com/docs
- 💬 社区 : Forum、Discord、GitHub Issues
主要功能
核心能力
| 能力 | 说明 |
|---|---|
| 托管 Postgres | 专用 Postgres 数据库,支持扩展(如 pgvector) |
| 认证 | GoTrue,JWT 认证,支持登录、注册、会话管理 |
| 自动 API | PostgREST 提供 REST API;pg_graphql 提供 GraphQL API |
| Realtime | 通过 WebSocket 订阅 Postgres 的插入、更新、删除 |
| Edge Functions | 基于 Deno 的 Serverless 函数 |
| 文件存储 | S3 兼容存储,由 Postgres 管理权限 |
| AI 向量 | pgvector 等向量扩展,支持 Embeddings 与检索 |
使用场景
- Web/Mobile 应用:快速搭建后端、数据库、认证、文件存储
- 实时应用:聊天、协作、仪表盘等实时数据更新
- AI 应用:向量嵌入、RAG、语义检索
- Firebase 迁移:从 Firebase 迁移到开源、可自托管方案
快速开始
云端托管:
bash
# 1. 在 supabase.com 创建项目
# 2. 安装客户端
npm install @supabase/supabase-js
# 3. 在代码中使用
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
'https://your-project.supabase.co',
'your-anon-key'
)
// 查询数据
const { data } = await supabase.from('posts').select('*')
// 认证
await supabase.auth.signInWithPassword({ email, password })
// Realtime 订阅
supabase.channel('posts').on('postgres_changes', { event: '*', schema: 'public', table: 'posts' }, (payload) => console.log(payload)).subscribe()
自托管:
bash
# 使用 Docker Compose
git clone https://github.com/supabase/supabase
cd supabase/docker
cp .env.example .env
docker compose up -d
技术架构
| 组件 | 作用 |
|---|---|
| Postgres | 主数据库,30+ 年稳定发展 |
| Realtime | Elixir 服务,监听 Postgres 变更,通过 WebSocket 推送 |
| PostgREST | 将 Postgres 转为 REST API |
| GoTrue | JWT 认证 API |
| Storage | S3 兼容文件存储,权限由 Postgres 控制 |
| pg_graphql | Postgres 扩展,提供 GraphQL API |
| postgres-meta | REST API,管理 Postgres(表、角色、查询等) |
| Kong | API 网关 |
客户端支持
官方:JavaScript/TypeScript、Flutter、Swift、Python
社区:C#、Go、Java、Kotlin、Ruby、Rust、Godot (GDScript)
项目优势
| 对比项 | Supabase | Firebase | 自建后端 |
|---|---|---|---|
| 数据库 | Postgres | Firestore / Realtime DB | 自选 |
| 开源 | 是 | 否 | 视架构而定 |
| 自托管 | 支持 | 否 | 是 |
| API 生成 | 自动 REST/GraphQL | 自动 | 需手动 |
| Realtime | 通过 Postgres | 原生 | 需自建 |
| 供应商锁定 | 低 | 高 | 无 |
项目详细剖析
工作原理
Supabase 由多个开源组件组合而成。Postgres 通过内置复制功能输出变更;Realtime 监听这些变更,转为 JSON,通过 WebSocket 推送给已授权客户端。PostgREST 根据 schema 自动生成 REST API;GoTrue 处理认证并签发 JWT。
目录结构
bash
supabase/
├── apps/ # Studio、文档等应用
├── packages/ # 客户端库、工具
├── docker/ # 自托管 Docker 配置
├── supabase/ # CLI、迁移等
├── examples/ # 示例项目
└── ...
自托管
通过 Docker Compose 可完整自托管所有服务,包括 Postgres、Auth、Realtime、Storage、API 等,适合本地开发或私有部署。
项目地址与资源
官方资源
- 🌟 GitHub : github.com/supabase/su...
- 🌐 官网 : supabase.com
- 📚 文档 : supabase.com/docs
- 💬 社区 : Forum、Discord、GitHub Issues
适用人群
- 需要快速搭建后端的 Web/Mobile 开发者
- 希望从 Firebase 迁移到开源、可自托管方案
- 需要 Realtime 的实时应用
- 需要向量嵌入的 AI 应用
- 偏好 Postgres 的团队
欢迎来我中的个人主页找到更多有用的知识和有趣的产品