
Supabase 开源 Firebase 替代方案部署教程
PostgreSQL 数据库 + 实时订阅 + 身份认证 + 对象存储,Supabase 提供 Firebase 的所有功能,但数据完全属于你。
原文来源:Supabase — 开源 Firebase 替代方案,基于 PostgreSQL 构建,提供数据库、认证、实时订阅、对象存储和 Edge Functions。
Firebase 让前端开发者能快速搭建后端,但数据锁定在 Google 生态里、定制能力有限、价格随用量暴涨。Supabase 提供了一样的便利性——开箱即用的后端服务——但基于开源的 PostgreSQL,数据完全属于你。
Supabase 是什么
Supabase 是一个开源的后端即服务(BaaS)平台,核心功能包括:
PostgreSQL 数据库 — 完整的关系型数据库,不是 Firebase 的文档数据库。支持复杂查询、事务、外键、触发器。
自动 API — 数据库表创建后自动生成 REST 和 GraphQL API,前端直接调用。
实时订阅 — 数据库变化通过 WebSocket 实时推送到客户端,替代 Firebase 的实时数据库。
身份认证 — 支持邮箱、OAuth(Google/GitHub 等)、Magic Link、手机号登录。
对象存储 — 类似 AWS S3 的文件存储,带权限控制。
Edge Functions — 类似 Cloud Functions,运行在边缘节点上。
部署方式
云服务(最快上手)
注册 https://supabase.com,创建项目,5 分钟内获得完整后端。
Docker 自托管
# 克隆仓库
git clone https://github.com/supabase/supabase.git
cd supabase/docker
# 复制配置
cp .env.example .env
# 启动所有服务
docker compose up -d这会启动 PostgreSQL、PostgREST(自动 API)、GoTrue(认证)、Realtime(实时订阅)、Storage(对象存储)和 Kong(API 网关)。
关键端口
| 服务 | 端口 | 用途 |
|---|---|---|
| Kong | 8000 | API 网关 |
| PostgreSQL | 5432 | 数据库 |
| Studio | 3000 | 管理界面 |
数据库操作
创建表
在 Studio 界面(http://localhost:3000)的 Table Editor 中创建表,或者直接用 SQL:
create table posts (
id uuid default gen_random_uuid() primary key,
title text not null,
content text,
created_at timestamp default now()
);自动 REST API
表创建后自动获得 CRUD API:
# 查询
curl 'http://localhost:8000/rest/v1/posts?select=*' \
-H 'apikey: YOUR_ANON_KEY'
# 插入
curl -X POST 'http://localhost:8000/rest/v1/posts' \
-H 'apikey: YOUR_ANON_KEY' \
-H 'Content-Type: application/json' \
-d '{"title": "Hello", "content": "World"}'客户端 SDK
import { createClient } from '@supabase/supabase-js'
const supabase = createClient('http://localhost:8000', 'YOUR_ANON_KEY')
// 查询
const { data } = await supabase.from('posts').select('*')
// 插入
await supabase.from('posts').insert({ title: 'Hello', content: 'World' })
// 实时订阅
supabase
.channel('posts')
.on('postgres_changes', { event: '*', schema: 'public', table: 'posts' }, payload => {
console.log('Change received!', payload)
})
.subscribe()身份认证
邮箱注册
const { data, error } = await supabase.auth.signUp({
email: 'user@example.com',
password: 'password123'
})OAuth 登录
const { data } = await supabase.auth.signInWithOAuth({
provider: 'github'
})行级安全(RLS)
PostgreSQL 的 RLS 策略让权限控制极其精细:
-- 只允许用户查看自己的数据
alter table posts enable row level security;
create policy "Users can only see their own posts"
on posts for select
using (auth.uid() = user_id);与 Firebase 对比
| 维度 | Supabase | Firebase |
|---|---|---|
| 数据库 | PostgreSQL(关系型) | Firestore(文档型) |
| 查询能力 | 强(SQL、JOIN、聚合) | 弱(简单过滤) |
| 数据锁定 | 无,可导出到任何 PostgreSQL | 深度绑定 Google |
| 实时能力 | 有(WebSocket) | 有(更成熟) |
| 自托管 | 完全开源可自托管 | 不可 |
| 价格 | 按数据库资源计费 | 按读写次数计费 |
Supabase 更适合需要关系型数据库、复杂查询、或者不想被云厂商锁定的项目。Firebase 在实时同步和移动端生态上仍然更强。
总结
Supabase 是 Firebase 最有竞争力的开源替代方案。它保留了 BaaS 的便利性——自动 API、实时订阅、认证——但把底层从专有文档数据库换成了标准的 PostgreSQL。对于需要数据自主权、复杂查询能力或者已经在用 SQL 的团队来说,这是一个不需要妥协的选择。
© 2026 四月 · CC BY-NC-SA 4.0
原文链接:https://aprilzz.com/tutorials/supabase-firebase-alternative