Skip to main content
[ PIER ]

Supabase

开源 Firebase 替代品 —— Postgres + Auth + Realtime + Storage。

Service #firebase#postgresql#auth#realtime#api

Supabase 是基于 PostgreSQL 的开源后端即服务。它捆绑了身份验证、从你的 schema 自动生成 REST + GraphQL API、实时订阅、文件存储、edge functions 和 pgvector —— 都运行在 Postgres 扩展之上。Pier 一键部署整个栈。

使用 Pier 部署

  1. 1 打开 Pier 控制台,点击 Add service。
  2. 2 从模板列表中选择 Supabase。
  3. 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
  4. 4 如需 HTTPS,请绑定域名。Traefik 会自动签发 Let's Encrypt 证书。

什么是 Supabase?

Supabase 是”开源 Firebase 替代品” — 一个后端即服务,在 PostgreSQL 之上捆绑 了认证、自动生成的 REST + GraphQL API、实时订阅、文件存储、edge functions 和向量搜索。Firebase 将你的数据锁定在 Google 的专有 Firestore 中,而 Supabase 将一切保存在普通 Postgres 中 — 你可以随时 pg_dump 你的数据库 并离开。

从架构上讲,它是一个 Docker Compose 栈:Postgres 在中间,PostgREST + pg_graphql 将 schema 暴露为 API,GoTrue 处理认证,Realtime 通过 WebSocket 广播变更,Storage API 包装 S3 兼容存储桶。Kong 坐在前面作为网关。Supabase Studio 提供 Web UI 用于浏览表、编辑 RLS 策略和检查日志。

Pier 如何部署它

Pier 将 Supabase 作为多容器 Docker Compose 模板部署。所有 sidecar — Postgres、PostgREST、GoTrue、Realtime、Storage、Kong、Studio — 一起启动, 带合理的默认值和生成的 JWT secret。服务内部暴露端口 8000(API)和 3000(Studio)。

对于 HTTPS,附加域名 — Traefik 处理证书颁发。标准 Supabase 环境变量 (SUPABASE_URLANON_KEYSERVICE_ROLE_KEY)显示在 Pier 服务页面 上,因此你可以直接将它们插入客户端 SDK。

何时不要使用 Supabase

对于纯存储或纯认证,捆绑的栈过度 — 使用普通 PostgreSQL + 单一认证库。 对于无 web 端的纯移动应用,PocketBase 更轻。对于深度企业 SSO 和 RBAC 开箱即用需求,看看 Keycloak。Supabase 在你想要 Firebase 级开发者体验 而不放弃 Postgres 或自托管自由时获胜。

核心功能

PostgreSQL 为核心

每个 Supabase 功能都是 Postgres 扩展或 sidecar。你的数据存于普通 Postgres — 无专有数据库、无锁定。pg_dump 导出有效。

自动生成 REST + GraphQL

PostgREST 将每个表和视图暴露为带行级安全的 REST 端点。pg_graphql 在上层添加 GraphQL — 无需编写解析器。

开箱即用的认证

邮箱/密码、魔法链接、OAuth(Google、GitHub、Apple、Discord 等 30+ 提供商)、MFA、匿名登录。JWT 令牌通过 Postgres RLS 策略强制执行。

实时订阅

通过 WebSocket 订阅任何表的 INSERT/UPDATE/DELETE。构建在 Postgres 逻辑复制之上 — 与跨区域复制相同的机制。

对象存储

S3 兼容存储,带每桶 RLS 策略。图像转换、签名 URL、大文件上传 — 都无需离开 Supabase。

向量搜索(pgvector)

一流支持 AI 嵌入。使用 HNSW 索引存储、索引和查询 1536 维向量。RAG 和语义搜索无需单独的向量 DB。

应用场景

SaaS 应用后端

用一个自托管栈替代 Firebase + Stripe + Algolia + S3。认证、数据库、文件存储、搜索、向量 — 都在一个 Postgres 中。

内部工具后端

PostgREST + 认证让你在几分钟内获得完整 API。结合 Retool、Tooljet 或 Pier 的 Directus 模板用作 UI。

移动应用后端

Supabase JS/Swift/Kotlin/Flutter SDK 处理认证、实时、存储。通过 PowerSync 或 Watermelon 覆盖层实现离线优先。

AI / RAG 后端

pgvector 用于嵌入 + 存储用于源文档 + 认证用于多租户访问。RAG 产品的事实 OSS 栈。

实时协作(Notion 风格)

Postgres 表上的实时订阅在用户之间同步状态。与编辑器层中的 Yjs 或 Liveblocks 配对实现 OT/CRDT。

代码示例

从 JS 客户端连接 javascript
import { createClient } from "@supabase/supabase-js";

const supabase = createClient(
  "https://your-supabase.example.com",
  "<anon key>"
);

const { data, error } = await supabase
  .from("posts")
  .select("id, title, author:profiles(name)")
  .eq("published", true)
  .order("created_at", { ascending: false })
  .limit(10);
实时订阅 javascript
const channel = supabase
  .channel("posts-changes")
  .on(
    "postgres_changes",
    { event: "INSERT", schema: "public", table: "posts" },
    (payload) => console.log("New post:", payload.new)
  )
  .subscribe();
多租户 RLS 策略 sql
ALTER TABLE projects ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Users see only their own projects"
ON projects FOR ALL
USING (owner_id = auth.uid());
pgvector RAG 查询 sql
SELECT id, title, content
FROM documents
ORDER BY embedding <-> '[0.1, 0.2, ...]'::vector
LIMIT 5;

对比

vs Firebase Firebase 是闭源且锁定在 Google。Supabase 是 OSS、可自托管、基于 Postgres。等价的功能集;任何时候想离开都是可移植的。
vs PocketBase PocketBase 是单二进制基于 SQLite 的类 Firebase。更轻、更简单、上限更低。对业余项目选 PocketBase;对生产多租户 SaaS 选 Supabase。
vs Hasura Hasura 从任何 Postgres 生成 GraphQL。Supabase 生成 REST + GraphQL 并捆绑认证/存储/实时/edge functions。Hasura 是 GraphQL 层;Supabase 是完整栈。
vs Postgres + 手写 API 你可以在原始 Postgres 上自己构建一切 — 但你重新发明认证、RLS 管道、实时 websocket 和存储。Supabase 节省数月的管道工作。

常见问题

Supabase 真的是 100% 开源吗?
是 — 核心(Postgres + PostgREST + GoTrue + Realtime + Storage)是 Apache 2.0 或 MIT。Supabase Studio(UI)也是 OSS。托管的 Supabase 云增加了支持和托管扩展,但每个组件都可自托管。
Pier 如何部署它?
Pier 使用官方 `supabase/supabase` Docker Compose 栈(多容器)。compose 模板配置 Postgres、GoTrue(认证)、PostgREST(REST API)、Realtime、Storage API、Kong(网关)和 Studio(UI)。
默认端口?
8000/tcp(Kong 网关 / API),如果配置了 HTTPS 则 8443。Pier 在你附加域名时通过 Traefik 暴露这些。
如何访问 Supabase Studio?
Studio 运行在单独的路径上。服务启动后,Pier 在服务页面显示 URL。登录使用 Pier 生成的仪表板凭据。
可以从托管 Supabase 迁移到 Pier 上的自托管吗?
可以 — 从托管端 `supabase db dump`,在自托管端 `supabase db push`。Schemas 和 RLS 策略干净迁移。
可用的 Postgres 扩展?
pg_graphql、pg_net、pgsodium、pgjwt、pgvector、postgis、pg_cron、pgaudit、http、plpgsql_check、pg_stat_statements — 全部预装在 Supabase 镜像中。
备份?
Pier 按计划备份底层 Postgres。Storage 对象文件需要单独处理 — 备份 storage 卷。

相关服务

在你的 VPS 上部署

Supabase 是基于 PostgreSQL 的开源后端即服务。它捆绑了身份验证、从你的 schema 自动生成 REST + GraphQL API、实时订阅、文件存储、edge functions 和 pgvector —— 都运行在 Postgres 扩展之上。Pier 一键部署整个栈。

部署此服务 →