教程·阅读约 2 分钟·
Supabase 开源 Firebase 替代方案部署教程

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 自托管

code
# 克隆仓库
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 网关)。

关键端口

服务端口用途
Kong8000API 网关
PostgreSQL5432数据库
Studio3000管理界面

数据库操作

创建表

在 Studio 界面(http://localhost:3000)的 Table Editor 中创建表,或者直接用 SQL:

code
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:

code
# 查询
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

code
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()

身份认证

邮箱注册

code
const { data, error } = await supabase.auth.signUp({
  email: 'user@example.com',
  password: 'password123'
})

OAuth 登录

code
const { data } = await supabase.auth.signInWithOAuth({
  provider: 'github'
})

行级安全(RLS)

PostgreSQL 的 RLS 策略让权限控制极其精细:

code
-- 只允许用户查看自己的数据
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 对比

维度SupabaseFirebase
数据库PostgreSQL(关系型)Firestore(文档型)
查询能力强(SQL、JOIN、聚合)弱(简单过滤)
数据锁定无,可导出到任何 PostgreSQL深度绑定 Google
实时能力有(WebSocket)有(更成熟)
自托管完全开源可自托管不可
价格按数据库资源计费按读写次数计费

Supabase 更适合需要关系型数据库、复杂查询、或者不想被云厂商锁定的项目。Firebase 在实时同步和移动端生态上仍然更强。

总结

Supabase 是 Firebase 最有竞争力的开源替代方案。它保留了 BaaS 的便利性——自动 API、实时订阅、认证——但把底层从专有文档数据库换成了标准的 PostgreSQL。对于需要数据自主权、复杂查询能力或者已经在用 SQL 的团队来说,这是一个不需要妥协的选择。

分享到
微博Twitter

© 2026 四月 · CC BY-NC-SA 4.0

原文链接:https://aprilzz.com/tutorials/supabase-firebase-alternative