三家定位差异

维度SupabasePocketBaseAppwrite
底层 DBPostgresSQLiteMariaDB
语言MultiGoMulti
架构MicroservicesMonolithMicroservices
部署Docker × 12单二进制Docker × 7
Auth★★★★★★★★★★★★★
Storage★★★★★★★★★★★★★
Realtime★★★★★★★★★★★★
FunctionsEdge Functions(Deno)Hooks(Go/JS)Cloud Functions
Vectorpgvector
自托管极简
VC 背景Coatue/MozillaOSS(捐赠驱动)Frameworks Ventures

价格细节(2026 年 5 月)

Supabase

套餐月费
Free$0500MB + 50k MAU + 5GB egress
Pro$258GB + 100k MAU + 250GB egress
Team$599SLA + 团队特性

PocketBase

套餐月费
自托管$0 + VPS 费完整功能($5 VPS)
PocketHost(社区)$5+托管服务

PocketBase 不提供官方云服务,全部自托管或第三方托管(PocketHost / Pikapods)。

Appwrite

套餐月费
Free$075k MAU + 10GB Storage + 100k Functions
Pro$15100k 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 ProPocketBaseAppwrite Pro
单实例 RPS5000+1000-30003000-5000
Realtime 连接数10k+1k-3k5k+
单库最大500GB100GB(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 → PocketBaseSQL 需翻译 + 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、公司注册、税表或签证的内容,只能作为操作参考。当前页面没有覆盖你所在司法辖区的特殊规定时,不应把它当成法律或税务意见。

相关阅读