Supabase
开源 Firebase 替代品 —— Postgres + Auth + Realtime + Storage。
Supabase 是基于 PostgreSQL 的开源后端即服务。它捆绑了身份验证、从你的 schema 自动生成 REST + GraphQL API、实时订阅、文件存储、edge functions 和 pgvector —— 都运行在 Postgres 扩展之上。Pier 一键部署整个栈。
使用 Pier 部署
- 1 打开 Pier 控制台,点击 Add service。
- 2 从模板列表中选择 Supabase。
- 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
- 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_URL、ANON_KEY、SERVICE_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。
代码示例
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); const channel = supabase
.channel("posts-changes")
.on(
"postgres_changes",
{ event: "INSERT", schema: "public", table: "posts" },
(payload) => console.log("New post:", payload.new)
)
.subscribe(); ALTER TABLE projects ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Users see only their own projects"
ON projects FOR ALL
USING (owner_id = auth.uid()); 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% 开源吗?
Pier 如何部署它?
默认端口?
如何访问 Supabase Studio?
可以从托管 Supabase 迁移到 Pier 上的自托管吗?
可用的 Postgres 扩展?
备份?
相关服务
在你的 VPS 上部署
Supabase 是基于 PostgreSQL 的开源后端即服务。它捆绑了身份验证、从你的 schema 自动生成 REST + GraphQL API、实时订阅、文件存储、edge functions 和 pgvector —— 都运行在 Postgres 扩展之上。Pier 一键部署整个栈。
部署此服务 →