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

引言

"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 式开发体验

项目数据


主要功能

核心能力

能力 说明
托管 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 的团队

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

相关推荐
苍何3 小时前
开源微信流 Windows,微信聊天记录,可以直接给 Codex 和 Obsidan 了
后端
代码什么用4 小时前
Spring基础使用
java·后端·spring
明月_清风5 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
蜗牛互联网5 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
冬奇Lab5 小时前
一天一个开源项目(第232篇):DSH Desktop —— 把桌面壳本身也做成一个插件,30k+ Stars 的 DeepSeek Harness 桌面客户端
人工智能·开源·资讯
用户69371750013847 小时前
2026,程序员的时代拐点到了
android·前端·后端
写的都是BUG8 小时前
我开源了一个 Android/iOS 加固工具,顺便聊聊加固到底能防住什么
开源·掘金社区
惜鸟8 小时前
从源码看 pi 的上下文管理:原始数据永久保留,模型视角按需裁剪
后端
量化分析码农8 小时前
【Python量化策略评估体系 #05】极端行情扛得住吗?2008/2015/2020 三场景压力测试
后端
十年Java程序媛8 小时前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端