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

引言

"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 认证,支持登录、注册、会话管理
自动 API PostgREST 提供 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 迁移到开源、可自托管方案

快速开始

云端托管

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 等,适合本地开发或私有部署。


项目地址与资源

官方资源

适用人群

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

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

相关推荐
嘉伟桑31 分钟前
Python调用电价API返回JSON示例:分时电价、现货电价和字段解析
后端
武子康1 小时前
Shippy:确定性工具、会话级 Sandbox 与 Live-Data Eval(4 类收敛 + 7 步实现方案 + 6 类评测指标)
前端·人工智能·后端
我叫黑大帅1 小时前
我为什么单一消费者的场景下,要用 Redis List 当消息队列?
redis·后端·面试
AskHarries1 小时前
文件上传系统
后端
止语Lab2 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活2 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
程序员天天困2 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn2 小时前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
用户298698530143 小时前
Python 实现 Excel 与 Markdown 互转的实用指南
后端·python·excel
用户77283104908403 小时前
krono-job:零侵入、单二进制交付的分布式任务调度平台(开源)
后端