一天一个开源项目(第54篇):Supabase - 开源的 Postgres 开发平台,Firebase 替代方案

27 阅读4分钟

引言

"The Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications."

这是「一天一个开源项目」系列的第 54 篇文章。今天介绍的项目是 SupabaseGitHub)。

想用 Firebase 的体验,但不想被供应商锁定?Supabase 是开源的 Postgres 开发平台,用企业级开源工具实现 Firebase 的典型能力:托管 Postgres 数据库认证与授权自动生成 REST/GraphQL APIRealtime 订阅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 式开发体验

项目数据


主要功能

核心能力

能力说明
托管 Postgres专用 Postgres 数据库,支持扩展(如 pgvector)
认证GoTrue,JWT 认证,支持登录、注册、会话管理
自动 APIPostgREST 提供 REST API;pg_graphql 提供 GraphQL API
Realtime通过 WebSocket 订阅 Postgres 的插入、更新、删除
Edge Functions基于 Deno 的 Serverless 函数
文件存储S3 兼容存储,由 Postgres 管理权限
AI 向量pgvector 等向量扩展,支持 Embeddings 与检索

使用场景

  1. Web/Mobile 应用:快速搭建后端、数据库、认证、文件存储
  2. 实时应用:聊天、协作、仪表盘等实时数据更新
  3. AI 应用:向量嵌入、RAG、语义检索
  4. Firebase 迁移:从 Firebase 迁移到开源、可自托管方案

快速开始

云端托管

# 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()

自托管

# 使用 Docker Compose
git clone https://github.com/supabase/supabase
cd supabase/docker
cp .env.example .env
docker compose up -d

技术架构

组件作用
Postgres主数据库,30+ 年稳定发展
RealtimeElixir 服务,监听 Postgres 变更,通过 WebSocket 推送
PostgREST将 Postgres 转为 REST API
GoTrueJWT 认证 API
StorageS3 兼容文件存储,权限由 Postgres 控制
pg_graphqlPostgres 扩展,提供 GraphQL API
postgres-metaREST API,管理 Postgres(表、角色、查询等)
KongAPI 网关

客户端支持

官方:JavaScript/TypeScript、Flutter、Swift、Python

社区:C#、Go、Java、Kotlin、Ruby、Rust、Godot (GDScript)

项目优势

对比项SupabaseFirebase自建后端
数据库PostgresFirestore / Realtime DB自选
开源视架构而定
自托管支持
API 生成自动 REST/GraphQL自动需手动
Realtime通过 Postgres原生需自建
供应商锁定

项目详细剖析

工作原理

Supabase 由多个开源组件组合而成。Postgres 通过内置复制功能输出变更;Realtime 监听这些变更,转为 JSON,通过 WebSocket 推送给已授权客户端。PostgREST 根据 schema 自动生成 REST API;GoTrue 处理认证并签发 JWT。

目录结构

supabase/
├── apps/           # Studio、文档等应用
├── packages/       # 客户端库、工具
├── docker/         # 自托管 Docker 配置
├── supabase/       # CLI、迁移等
├── examples/       # 示例项目
└── ...

自托管

通过 Docker Compose 可完整自托管所有服务,包括 Postgres、Auth、Realtime、Storage、API 等,适合本地开发或私有部署。


项目地址与资源

官方资源

适用人群

  • 需要快速搭建后端的 Web/Mobile 开发者
  • 希望从 Firebase 迁移到开源、可自托管方案
  • 需要 Realtime 的实时应用
  • 需要向量嵌入的 AI 应用
  • 偏好 Postgres 的团队

欢迎来我中的个人主页找到更多有用的知识和有趣的产品