此比较重点关注自托管 Rust 原生后端:sh0.dev、TrailBase 和 Aurabase。对于更通用的自托管后端,不是用 Rust 编写的,我们的比较 Aurabase 与 PocketBase 和 Aurabase 与 Appwrite 探索其他选项。为了完整分析“欧盟主权”在法律上的含义、托管和发布者的国籍,我们的文章 自托管与欧盟主权 BaaS 更进一步;这篇文章仅限于将 Aurabase 归入 Rust 同行之列。
要点
- 目前,自托管 Rust 原生后端有三个真正的选择:sh0.dev(单个二进制文件,~25 MB)、TrailBase(Rust + 嵌入式 SQLite + SolidJS 接口)、Aurabase(全平台,专用 Postgres 16)。
- Aurabase 假设了单一二进制的相反妥协:多个精心编排的服务(本地 k3d 或生产中的 Kubernetes/Helm)以换取多租户 RLS、实时 CDC 和本机 AI(NL2SQL、RAG)。
- 自托管和欧盟主权是两个不同的轴:只要物理服务器和出版公司本身不在欧盟,自行托管并不能保证任何事情。
- 有关 sh0.dev 和 TrailBase 的信息基于撰写本文时的公共页面,未经彻底审核:在做出任何决定之前检查其最新文档。
为什么“Rust-native”对于自托管很重要
自托管后端将基础设施从云提供商的外围移除,但不承担可靠运行基础设施的责任。这就是语言的选择不再是一个细节的地方:Rust 的内存安全性和垃圾收集器的缺乏减少了整个类别的生产故障,这些故障对运行自己的服务器的小团队造成的打击最为严重。
这不是一个纯粹的性能论点。对于没有专用 SRE 的团队来说,没有段错误且没有不可预测的内存收集暂停的服务更容易监控。 Aurabase 核心的实际架构(18 个板条箱的 Cargo 工作区编译在一起)详细记录在我们的 Rust 架构文件中。
仅“开源”不足以保证可移植性或不受锁定:实际架构、单租户或多租户、专有或标准存储引擎更重要。 sh0.dev、TrailBase 和 Aurabase 都提供对源代码的访问,但范围和数据模型截然不同。
sh0.dev:独特的 Rust 二进制文件,专为极简主义而设计
根据撰写本文时的公共页面,sh0.dev 将自身呈现为以大约 25 MB 的单个 Rust 二进制文件形式分发的后端。核心论点是部署的简单性:将文件复制到服务器,无需单独安装外部依赖项。
我们尚未在本文中详细审核 sh0.dev 的确切功能范围或许可模式:有关此主题的公开信息仍然有限,并且此类项目发展很快。如果此标准影响您的决定,请在做出决定之前查看其最新的官方文档。
TrailBase:Rust 核心、嵌入式 SQLite、SolidJS 界面
根据其公开页面,TrailBase 结合了用 Rust 编写的后端核心、嵌入式 SQLite 数据库和用 SolidJS 构建的管理界面,所有这些都作为自托管项目提供。该架构让人想起 PocketBase(Go、SQLite、集成接口),其运行时是用 Rust 而不是 Go 编写的。
与 sh0.dev 一样,本文并未声称已彻底检查 TrailBase 代码或路线图。我们可以自信地说的是总体架构定位:嵌入自己存储引擎的二进制文件,而不是由外部 Postgres 支持的后端。
Aurabase:专用的 Postgres 16,完整的平台,也是自托管的
Aurabase 假设了与单二进制不同的权衡。该存储库提供了通过 ./start.sh在一个命令中启动的本地 Kubernetes 集群 (k3d),以及完整的 Helm 图表 (deploy/helm/aurabase/),其中包含 Hetzner、本地 Kubernetes 工作台 (k3d) 和 Scaleway 的单独价值配置文件。根 Cargo 工作区是根据 MIT 许可证发布的。
这种选择涉及要编排的多个服务,网关、身份验证、数据库、实时、存储、功能、AI,而不是单个流程。作为交换,每个项目都会收到一个专用的 PostgreSQL 16(不是共享的 SQLite 文件),租户映像中嵌入了 pgvector 0.8.6 和 pg_graphql,以及引擎级别而不是应用程序级别的行级安全隔离。
Rust 核心唯一值得注意的细微差别:边缘函数的默认模式依赖于专用的 TypeScript 服务(V8 Isolates),这是在上面引用的架构文件中详细记录的工程妥协,而不是我们希望保持安静的遗漏。
三种架构并列总结
标记为“要检查”的 sh0.dev 和 TrailBase 列反映了我们对这两个工具的非详尽搜索,而不是确认它们缺乏功能。
| 标准 | 光环基地 | sh0.dev | 步道基地 |
|---|---|---|---|
| 主要语言 | Rust(完整工作区,18 个板条箱) | Rust(单个二进制) | Rust(核心)+SolidJS(界面) |
| 部署足迹 | 本地 k3d 或生产中的 Helm/Kubernetes,多种服务 | 单个二进制文件,~25 MB | 单个二进制嵌入式 SQLite |
| 数据库 | 每个项目专用 PostgreSQL 16 + pgvector + pg_graphql | 待验证(官方文档) | 嵌入式SQLite |
| 管理界面 | 独立的 Next.js 工作室 | 检查 | SolidJS 接口集成到二进制中 |
| 原生 AI (NL2SQL / RAG) | 是的,已签入代码 (aura-ai) | 检查 | 检查 |
| 官方对此对比的声音 | 此比较,由 Aurabase 发布 | 无,未经请求 | 无,未经请求 |
欧盟主权:不取决于二元选择
自托管用 Rust 编写的后端,无论它是什么,其本身并不能保证有关欧盟主权的任何内容。必须满足两个不同的条件:物理服务器必须在欧盟运行,并且您必须保持对其的实际操作控制。 sh0.dev、TrailBase 和 Aurabase 都无法为您保证第二个条件:您选择在何处部署二进制文件或容器。
软件发行商的管辖权也很重要,但在不同的轴上:由供应商管理的版本而不是您自己的自托管版本。这是我们关于 选择 BaaS的文章中详细介绍的云行为角度。对于 Aurabase 管理的基础设施本身:它在纽伦堡和法尔肯斯坦(德国)以及赫尔辛基(芬兰)的 Hetzner 数据中心上运行并在生产中得到验证。这是当今实际存在的欧盟主权,与 Aurabase SAS 的巴黎总部不同。
选择住宿(无论是否主权)之前要检查的合规标准详细信息:我们的页面 合规性。
什么时候选择什么
如果部署占用空间是首要标准,那么最小的 VPS、边缘设备、每兆字节都很重要的项目、sh0.dev 或 TrailBase 都值得一试。对于这个特定的用例来说,这些都是合理的选择,即使我们自己没有在生产中测试它们的行为。
如果您的项目需要具有高级行级安全性的真正多租户、完整的 Postgres 而不是 SQLite,或无需第三方组装的本机 AI(NL2SQL、RAG),Aurabase 可以满足您的需求。如果您从现有的 Supabase 项目开始,这也是最直接的路径:Aurabase 被定位为用 Rust 编写的 Supabase 的替代品,其 SDK 和 RLS 策略旨在几乎直接兼容,记录在我们的 迁移指南中。