三家定位差异
| 维度 | Supabase | PocketBase | Appwrite |
|---|---|---|---|
| 底层 DB | Postgres | SQLite | MariaDB |
| 语言 | Multi | Go | Multi |
| 架构 | Microservices | Monolith | Microservices |
| 部署 | Docker × 12 | 单二进制 | Docker × 7 |
| Auth | ★★★★★ | ★★★★ | ★★★★ |
| Storage | ★★★★★ | ★★★★ | ★★★★ |
| Realtime | ★★★★★ | ★★★★ | ★★★ |
| Functions | Edge Functions(Deno) | Hooks(Go/JS) | Cloud Functions |
| Vector | pgvector | 无 | 无 |
| 自托管 | 中 | 极简 | 中 |
| VC 背景 | Coatue/Mozilla | OSS(捐赠驱动) | Frameworks Ventures |
价格细节(2026 年 5 月)
Supabase
| 套餐 | 月费 | 含 |
|---|---|---|
| Free | $0 | 500MB + 50k MAU + 5GB egress |
| Pro | $25 | 8GB + 100k MAU + 250GB egress |
| Team | $599 | SLA + 团队特性 |
PocketBase
| 套餐 | 月费 | 含 |
|---|---|---|
| 自托管 | $0 + VPS 费 | 完整功能($5 VPS) |
| PocketHost(社区) | $5+ | 托管服务 |
PocketBase 不提供官方云服务,全部自托管或第三方托管(PocketHost / Pikapods)。
Appwrite
| 套餐 | 月费 | 含 |
|---|---|---|
| Free | $0 | 75k MAU + 10GB Storage + 100k Functions |
| Pro | $15 | 100k MAU + 150GB Storage + 300k Functions |
| Scale | $599 | 大客户 |
DX 对比示例
Supabase(最完整)
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(URL, KEY)
// 数据 + Auth + RLS 集成
const { data } = await supabase
.from('posts')
.select('*, author:users(*)')
.eq('published', true)
// Realtime
supabase.channel('posts').on('postgres_changes', ...)
// Storage
await supabase.storage.from('avatars').upload('file.jpg', file)
PocketBase(最轻)
import PocketBase from 'pocketbase'
const pb = new PocketBase('http://localhost:8090')
await pb.collection('posts').create({
title: 'Hello',
content: 'World',
author: pb.authStore.model.id
})
const posts = await pb.collection('posts').getFullList({
filter: 'published = true',
expand: 'author'
})
Appwrite(多语言)
import { Client, Databases, Query } from 'appwrite'
const client = new Client()
.setEndpoint('https://cloud.appwrite.io/v1')
.setProject('PROJECT_ID')
const databases = new Databases(client)
const posts = await databases.listDocuments(
'main',
'posts',
[Query.equal('published', true)]
)
四、性能与扩展性
| 维度 | Supabase Pro | PocketBase | Appwrite Pro |
|---|---|---|---|
| 单实例 RPS | 5000+ | 1000-3000 | 3000-5000 |
| Realtime 连接数 | 10k+ | 1k-3k | 5k+ |
| 单库最大 | 500GB | 100GB(VPS 限制) | 不限(外挂) |
| 水平扩展 | 容易(云原生) | 不易(单二进制) | 中(Docker) |
五、indie 实战场景对照
场景 A:30 分钟启动 SaaS MVP
推荐:Supabase Free
- 自带 Auth + UI
- 自带 Storage + CDN
- pgvector 跑 RAG
- 后续 Pro $25/月扩展
场景 B:成本极致敏感,自托管
推荐:PocketBase + $5 VPS
- 单二进制 + 0 依赖
- 月成本 $5
- 适合 < 10k DAU
场景 C:多语言客户端(Flutter / iOS / Android)
推荐:Appwrite
- 11 种官方 SDK
- 内置 Push Notifications
- 灵活的 Document model
场景 D:复杂 SaaS(多团队 / 多角色 / 复杂查询)
推荐:Supabase Pro
- Postgres 完整 SQL
- RLS 行级安全
- pgvector / pgcrypto / 触发器
- Edge Functions 跑 webhook
六、自托管成本对比
| 服务 | 最小配置 | 月成本 | 撑用户 |
|---|---|---|---|
| PocketBase | $5 VPS(1 vCPU/2GB) | $5 | < 10k DAU |
| Supabase Self-Hosted | $20 VPS(2 vCPU/4GB) | $20-50 | < 50k DAU |
| Appwrite Self-Hosted | $20 VPS(2 vCPU/4GB) | $20-50 | < 50k DAU |
PocketBase 是「indie 极致省钱」的首选。
七、迁移成本
| 从 → 到 | 难度 | 注意 |
|---|---|---|
| Firebase → Supabase | 中 | 集合需重新建模为 Postgres 表 |
| Supabase → PocketBase | 低 | SQL 需翻译 + Realtime API 变 |
| PocketBase → Supabase | 中 | 数据 export + 重新写客户端 |
| Appwrite → Supabase | 中 | 文档型 → 关系型转换 |
八、跨境环境检查
Supabase Dashboard(app.supabase.com)+ PocketBase(自托管无需访问)+ Appwrite Cloud(cloud.appwrite.io)在国内访问普遍稳定,但 Supabase 部分 region(ap-southeast-1)API 偶有不稳。
如果你需要稳定登录 Dashboard + 同时管 Stripe / Mercury / Wise 等账号,配一条海外银行 + Stripe + AI 工具全场景能保证 BaaS Dashboard 操作不中断。
Supabase PocketBase Appwrite的成本账
Supabase PocketBase Appwrite最怕把法律主体、收款工具和产品代码混成一个问题。动手前看清放弃条件、团队维护和回退路径,金额较大或涉及税务时应交给专业顾问处理。
一个人运营时可以用表格压住复杂度:负责人、后台入口、到期日、费用来源和回滚动作各占一列,避免换服务商时才发现资料缺口。
涉及 Stripe、公司注册、税表或签证的内容,只能作为操作参考。当前页面没有覆盖你所在司法辖区的特殊规定时,不应把它当成法律或税务意见。