ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Supabase:读懂「Postgres 开发平台」的开源架构与组件生态

2026/9/8 23:43:33 拓冰建站 浏览量
Supabase:读懂「Postgres 开发平台」的开源架构与组件生态 Supabase读懂「Postgres 开发平台」的开源架构与组件生态【免费下载链接】supabaseThe Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications.项目地址: https://gitcode.com/GitHub_Trending/supa/supabaseSupabase 把自己定义为 The Postgres development platformPostgres 开发平台目标是复用企业级开源软件组合出一套类似 Firebase 的开发者体验。本文以仓库内多语言文档 i18n/README.lt.md立陶宛语 README与英文版同源为主线系统梳理它的核心功能清单、整体架构、各后端组件职责、客户端库生态并结合仓库内的 Docker 自托管编排文件、本地配置示例 与 应用源码 做源码级佐证。读完你可以掌握 Supabase 平台各个拼图数据库、Auth、REST/GraphQL/Realtime API、Storage、Edge Functions分别由谁实现、彼此如何串联以及如何在本仓库中找到对应的实现与可运行示例。平台定位开源的 Firebase 替代品按 i18n/README.lt.md 的定义Supabase 是一个「atvirojo kodo Firebase alternatyva」开源的 Firebase 替代品它用企业级enterprise-grade开源工具来复刻 Firebase 的各项能力。英文主 READMEREADME.md表述为 building the features of Firebase using enterprise-grade open source tools。它的核心策略在文档「Kaip tai veikia」工作原理一节中讲得很清楚也是理解整个项目的一把钥匙如果某个场景已经存在采用 MIT、Apache 2.0 或同等级别开源许可证的工具和社区Supabase 就直接使用并维护该工具如果这样的工具不存在Supabase 会自己构建并开源它不是对 Firebase 的 1:1 复刻目标是借助开源工具让开发者获得类似 Firebase 的体验。这一「组装优先、自研兜底」的思路决定了我们下面看到的所有架构组件几乎都是一个个独立开源项目的组合而不是单体重写。当前英文 README 的能力清单比立陶宛语版多出了 AI 向量/Embedding 工具包一项也说明各语言翻译存在更新时差以文档与源码实际状态为准即可。核心能力清单i18n/README.lt.md 开头以勾选清单方式列出了平台开箱即用的能力逐项结合仓库证据如下托管的 Postgres 数据库Hosted Postgres Database数据库是一切的地基。自托管编排中由supabase/postgres镜像当前版本17.6.1.136见 docker/docker-compose.yml提供。认证与授权Authentication Authorization文档对应组件为 GoTrue仓库中的 auth 服务镜像supabase/gotrue负责注册、登录与会话管理见 docker/docker-compose.yml。自动生成的 API细分三类REST由 PostgREST 直接把 PostgreSQL 表/视图/函数暴露为 RESTful API编排中的 rest 服务GraphQL由 PostgreSQL 扩展 pg_graphql 暴露 GraphQL 端点本地配置中 [api] 的 schemas 包含graphql_public见 supabase/config.tomlRealtime 订阅由 Realtime 服务器通过 WebSocket 推送数据库变更。函数Functions分两类数据库函数Database Functions直接用 PostgreSQL 存储过程/函数实现后端逻辑仓库根目录 supabase/migrations 中的 SQL 迁移即包含大量此类 RPC 函数边缘函数Edge Functions基于 Deno 的 Edge Runtime编排中对应 functions 服务镜像supabase/edge-runtime见 docker/docker-compose.yml。文件存储File StorageStorage API 管理文件对象、由 Postgres 承担权限判断支持本地文件系统与 S3 两类后端。仪表盘Dashboard即 Supabase Studio仓库内对应 apps/studio自托管时以supabase/studio容器运行。文档同时声明托管平台可直接注册使用、无需安装也可以选择自托管self-host与本地开发local development两条路径——后两者在本仓库中有完整落地本文第六部分会展开。产品状态与迭代阶段i18n/README.lt.md 的「Statusas」状态一节以勾选清单记录了产品的推进阶段这也是常见开源 README 的惯例写法Alpha以受限客户集试用 Supabase公共 Alpha开放 Dashboard但作者提示「仍有不少缺陷不必急于依赖」公共 Beta对多数非企业场景已足够稳定正式版Public全面开放可用当时尚未勾选。文档同时注明当时正处于公共 Beta建议关注仓库 Releases 以获取重大更新通知。需要说明这是该翻译版本创作时的状态快照英文主 README 已不再包含该 Status 段落各语言 README 的迭代节奏不同读者应以仓库最新英文 README 为准。工作原理与整体架构架构图i18n/README.lt.md 引用的架构图在本仓库中实际存在即 apps/docs/public/img/supabase-architecture.svg图中点明了「Postgres 在中心、外围服务围绕数据库生长」的形态数据库变更通过内置复制机制被感知再被翻译成 REST/GraphQL/Realtime 等对外能力。架构组件逐一拆解文档按 README 惯例给出了每个核心组件的一句话职责说明下表在此基础上补充了当前仓库可验证的落地服务组件定位依据 i18n/README.lt.md本仓库佐证PostgreSQL对象-关系型数据库系统历经 30 余年积极开发以可靠性、功能健壮性与性能著称db 服务docker/docker-compose.ymlRealtimeElixir 编写的服务器用 WebSocket 监听 Postgres 的 INSERT/UPDATE/DELETE轮询 Postgres 内置复制能力感知变更、转为 JSON 后广播给已授权客户端realtime 服务镜像supabase/realtime见 docker/docker-compose.ymlPostgREST把 PostgreSQL 数据库直接变成 RESTful API 的 Web 服务器rest 服务镜像postgrest/postgrestpg_graphqlPostgreSQL 扩展对外暴露 GraphQL API本地 supabase/config.toml 中 [api] schemas 含graphql_publicStorage管理 S3 中文件的 REST 接口权限判断交由 Postgres 处理storage 服务见 docker/docker-compose.ymlpostgres-meta管理 Postgres 的 RESTful API取表、加角色、执行查询等meta 服务postgres-metaStudio 通过它读取数据库元数据GoTrue用户管理、令牌签发的认证 API文档旧译写作 SWT现行版本以 JWT 为准auth 服务镜像supabase/gotrueKong云 API 网关见下文「API 网关」说明API 网关从 Kong 到 Envoy值得单独说明的是 API 网关这一环。i18n/README.lt.md 与文档同时代内容一致将 Kong 列为「debesijos API vartai」云 API 网关负责把外部请求路由到 auth、rest、storage、functions 等上游服务。而在当前仓库的自托管编排里默认网关已切换为 Envoyapi-gw服务使用envoyproxy/envoy镜像同时保留envoy与kong两个网络别名保证内部配置无论引用哪个主机名都能解析到当前激活的网关Kong 仍作为可选覆盖方案保留。相关证据见 docker/docker-compose.yml 与 docker/README.md。周边补充组件docker/README.md 的 Whats Included 还列出了额外组件可看作架构图的完整落地版连接池服务Supavisor负责 Postgres 连接池化对应 compose 中的 supavisor 服务、图片处理服务imgproxyStorage 的图片裁剪/格式转换、日志可观测组件 Logflare/Vector通过 docker-compose.logs.yml 附加等。组合文件后缀命名的惯例是默认栈为docker-compose.yml另有docker-compose.kong.yml、docker-compose.s3.yml、docker-compose.pg15.yml、docker-compose.pg17.yml、docker-compose.pgbouncer.yml、docker-compose.logs.yml等覆盖件供按需叠加。客户端库模块化的多语言生态i18n/README.lt.md 说明其客户端库策略是「modulinis」模块化每个子库是对某一个外部系统的独立实现PostgREST、GoTrue、Realtime、Storage、Functions 各一再由聚合客户端把它们打包在一起。这样既统一了体验也便于直接复用既有生态。按该翻译版本官方维护的聚合客户端主要是 JavaScript(TypeScript)supabase-js与 Flutter其余为社区维护。英文主 README 中官方名单已扩展到 Swift、Python 等可作为最新参考。各语言下功能子客户端的可用矩阵如下语言聚合客户端PostgRESTGoTrueRealtimeStorageFunctionsJavaScript (TypeScript)supabase-jspostgrest-jsauth-jsrealtime-jsstorage-jsfunctions-jsFluttersupabase-flutterpostgrest-dartgotrue-dartrealtime-dartstorage-dartfunctions-dartC#supabase-csharppostgrest-csharpgotrue-csharprealtime-csharpstorage-csharpfunctions-csharpGo—postgrest-gogotrue-go—storage-gofunctions-goJava——gotrue-java—storage-java—Kotlinsupabase-ktpostgrest-ktgotrue-ktrealtime-ktstorage-ktfunctions-ktPythonsupabase-pypostgrest-pygotrue-pyrealtime-pystorage-pyfunctions-pyRubysupabase-rbpostgrest-rb————Rust—postgrest-rs————Swiftsupabase-swiftpostgrest-swiftgotrue-swiftrealtime-swiftstorage-swiftfunctions-swiftGodot Engine (GDScript)supabase-gdscriptpostgrest-gdscriptgotrue-gdscriptrealtime-gdscriptstorage-gdscriptfunctions-gdscript表格各「客户端」均为文档所列独立开源项目名这里仅作名称罗列不指向外部链接。这种模块化生态在仓库里同样有真实使用样本多语言模板应用集中在 examples/user-management覆盖 Next.js、Nuxt、Svelte、Vue、Flutter、Swift、Kotlin、Angular、Ionic 等此外还有完整的产品级示例如 examples/slack-clone与 examples/product-sample-supabase-kt。想验证「同一套 API、不同语言客户端」这些模板是很好的起点。三种运行形态托管、Docker 自托管与本地开发托管平台Hosted文档指出 Supabase 首先是托管平台注册即用、无需安装。仓库内无法体现托管侧代码但官方文档站源码就放在 apps/docs含 docs/content 大量 MDX 文档且仓库自身也通过supabase/下的配置连接一个远端项目可作为「如何被真实项目使用」的样例。Docker 自托管自托管是了解整套架构最直观的入口。docker/README.md 的 Compose 编排提供了与托管近乎一致的服务集合。常用操作取自 docker/docker-compose.yml 与 docker/README.md# 启动整套服务 docker compose up -d # 停止 docker compose down # 开发模式叠加额外服务 docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up -d # 全部重置 sh reset.sh # 把默认网关 Envoy 替换为 Kong可选 sh run.sh config add kong # 升级先备份数据库 sh update.sh --dry-run # 可选先预览 sh update.sh sh run.sh pull sh run.sh recreate关于自托管有两点必须强调见 docker/README.md默认配置不安全不能直接上生产。部署前必须更换.env中所有默认密码与密钥、复核 CORS、在实例前置安全代理、规划网络 ACL 与备份策略每个服务都声明了 healthcheck如 auth 的/health、realtime 的 tenant health、db 的pg_isreadydocker compose up后可通过各服务健康检查判断就绪状态具体见 docker/docker-compose.yml 各服务段。编排中各服务通过服务名互访、由 api-gw 统一对外的拓扑恰恰就是文档架构图在真实运行环境中的映射——studio通过meta读元数据、storage依赖rest与imgproxy、functions依赖 api-gw这些依赖关系都写在 docker/docker-compose.yml 的depends_on字段里。本地开发与仓库自带配置本地开发supabase CLI 的supabase start的配置约定可以在仓库根目录的 supabase/config.toml 中看到——这正是仓库自身作为真实 Supabase 项目使用的配置文件其默认端口分配具有代表性project_id supabase [api] port 54321 # API URL schemas [public, content, storage, graphql_public] max_rows 1000 [db] port 54322 # 本地数据库端口 major_version 15 [studio] port 54323 # Supabase Studio [inbucket] port 54324 # 邮件测试服务器本地不会真实发信 [auth] site_url http://localhost:3000 jwt_expiry 3600 enable_signup true [storage] file_size_limit 50MiB该文件同时展示了几个与架构密切相关的要点[api] 的schemas会直接决定哪些 schema 被暴露成 API 端点max_rows默认 1000限制单次查询返回行数以防恶意大请求对应 PostgREST 的PGRST_DB_MAX_ROWS[auth] 下jwt_expiry默认 3600 秒、上限一周、enable_signup、redirect 白名单等与 GoTrue 配置一一呼应仓库自身的 supabase/migrations历史 SQL 迁移、supabase/functionsog-images、search-embeddings 等 Edge Functions和 supabase/buckets/fonts公开存储桶构成一个完整的「数据库 函数 存储」真实案例适合对照 config.toml 逐项理解。仓库本身就是一个巨型落地样本值得点出的是这个仓库不仅是平台的开源部分其 apps/docs 文档站、www 官网、studio 仪表盘等、packages/shared-data、ui、marketing、pg-meta 客户端等本身也大量运行在 Supabase 之上文档站依赖 Postgres 做全文搜索与向量检索见 supabase/migrations 中的search_full_text_for_fts、hybrid_search等迁移仓库通过 Edge Functions如 search-embeddings对外提供 AI 搜索能力。想学「如何在一套完整工程里组织迁移、RLS、Edge Functions 与多应用」直接读本仓库的supabase/目录即可。参与贡献、社区渠道与多语言贡献指引文档指向的 Getting Started 即仓库根目录的 DEVELOPERS.md里面包含本地开发环境搭建、monorepo 结构说明与提交流程apps/docs/DEVELOPERS.md、apps/studio/DEVELOPERS.md 等子目录还提供各应用自己的开发说明。社区渠道原文仅作描述性列举社区论坛适合咨询构建问题与数据库最佳实践GitHub Issues 适合反馈使用中遇到的 bug邮件支持针对数据库/基础设施类问题Discord 用于分享应用与日常交流。自托管相关问题另有专门的讨论分区参见 docker/README.md。多语言生态这是本项目非常突出的一个特点。i18n/README.lt.md 本身即是社区翻译的产物位于仓库的 i18n/ 目录。完整的翻译索引见 i18n/languages.md覆盖简体中文 i18n/README.zh-cn.md、繁体中文 i18n/README.zh-tw.md、日语 i18n/README.jp.md、韩语 i18n/README.ko.md、法语 i18n/README.fr.md、德语 i18n/README.de.md、西班牙语 i18n/README.es.md、葡萄牙语 i18n/README.pt.md 及巴西葡语 i18n/README.pt-br.md 等 40 余种语言文件。这也解释了为什么会在仓库里看到俄语、立陶宛语等各类语言版本它们与英文 README.md 同源只是更新节奏各有差异。总结从一份 README 读透一个平台i18n/README.lt.md 表面是一份项目介绍实则浓缩了整个 Supabase 的设计哲学——以 PostgreSQL 为中心、用企业级开源组件拼出类 Firebase 的全栈后端能力。透过这份文档看仓库能力层数据库、Auth、REST/GraphQL/Realtime API、两类函数、存储与仪表盘全部有独立开源组件支撑架构层PostgREST、GoTrue、Realtime、pg_graphql、postgres-meta、Storage、网关Kong/Envoy各司其职由 docker/docker-compose.yml 忠实还原成可一键启动的服务编排生态层模块化客户端库覆盖十余种语言examples/ 提供对应模板落地层想要更细的配置参数可继续翻阅 docker/CONFIG.md自托管环境变量参考与 docker/CHANGELOG.md、docker/versions.md镜像版本与回滚对照想研究实现细节直接进入 apps/ 与 packages/ 的源码。【免费下载链接】supabaseThe Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications.项目地址: https://gitcode.com/GitHub_Trending/supa/supabase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考