
Slonbase:基于 PostgreSQL 的开源后端平台,单个 Rust 二进制提供 API 与实时功能
来源标题:Slonbase – A PocketBase like back end built on PostgreSQL
slonbase 是一个基于 PostgreSQL 的开源后端平台,以单个 Rust 二进制形式提供 REST 和实时 API、角色认证、文件存储、钩子及管理面板。每个集合对应一张真实的 PostgreSQL 表,并附带一条命令完成安装的脚本。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
你的整个后端,构建在 PostgreSQL 之上。 slonbase 是一个基于 PostgreSQL 的开源后端平台:提供 REST 和实时 API、带角色的认证、 文件功能、钩子,以及可管理多个项目的管理仪表盘,全部打包在一个 Rust 二进制文件中。 每个集合都是一张真实的 PostgreSQL 表。 网站 · 功能 · 快速开始 · 安装 · API · 钩子 · 基准测试 一个用 JavaScript 客户端创建并更新任务的示例。仪表盘的网格是实时的:代码运行时,实时事件会不断到达。 🚀 在一台裸 Linux 服务器上执行一条命令:curl -fsSL https://slonbase.com/install.sh | sudo sh 它会在需要时安装 PostgreSQL,创建其角色和数据库,安装 slonbase,并创建 你的第一个超级用户。安装指南给出了手动完成每一步的方法。 🌐 slonbase.com,其中包含仪表盘导览、针对 PocketBase 和 PostgREST 的最新 基准测试,以及所有功能的一份清单。 在此之前:设置项中的每一项设置都有实际作用(主题色、自定义 登录页面和邮件、角色和 API 密钥、任务历史),还有登录锁定和速率限制测试器。 为什么选择 slonbase 在仪表盘中定义数据,即可立即获得 API、认证、实时和文件存储, 无需编写后端。slonbase 用一个二进制文件提供这些能力,可从同一个仪表盘运行任意多个相互隔离 的项目,并将你的数据保存在 PostgreSQL 中——这个数据库你可以用已有的工具进行查询、复制、备份和扩展。 slonbase 是稳定的:在同一个大版本内,升级不会破坏 API、配置、 你的数据、钩子或迁移(参见稳定性)。不过升级前仍请备份, 也非常欢迎提交 bug 报告。 slonbase 是独立的平台(独立代码库,用 Rust 从零为 PostgreSQL 编写),其 API 保持与 PocketBase 兼容——后者是启发了它的项目, 因此你可以把现有应用带过来。另请参阅 两者的差异: 一套用官方 SDK 编写的测试套件在 CI 中同时对两个服务器运行,以保持这种兼容性, 还有一个差分运行器向两者发送相同请求并比较响应 (compat/)。迁移指南列出了 差异。 当你想要零活动部件(一个文件,内置 SQLite)、当整个计划就是在一台小机器上运行一个 小应用,或者当你想用 Go 扩展它时,PocketBase 是更好的选择。 在 Linux 服务器上(Debian、Ubuntu、Fedora、RHEL、Rocky、Alma):一条命令即可安装 PostgreSQL(如果机器上没有)、创建数据库及其角色、从 签名仓库安装 slonbase,并创建你的第一个超级用户: curl -fsSL https://slonbase.com/install.sh | sudo sh 它会询问你的邮箱,并打印仪表盘地址和一个生成的密码。安装指南 展示了从裸服务器开始的每一个手动步骤。 使用 Docker。以下命令会启动 slonbase 及其 PostgreSQL 17 服务器: mkdir slonbase && cd slonbase curl -fsSLO https://raw.githubusercontent.com/ayeshrodz/slonbase/main/compose.yaml echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" > .env docker compose up -d docker compose logs slonbase | grep "setup?token" 打开打印出的链接并创建你的第一个超级用户。就这样:仪表盘位于 http://localhost:8090/_/,API 位于 /api/。 在托管平台上:Render(一键)、Railway、 Fly.io、Coolify 和 Dokploy 都提供了带数据库的现成配置。 其他方式:.deb、.rpm 和静态二进制文件在 发布页面,apt 和 dnf 仓库在安装指南中有说明。 PostgreSQL 不随附打包:slonbase 可连接任何 14+ 服务器,无论是在同一台机器上、别处, 还是托管服务。 然后用任意 HTTP 客户端从你的应用连接,或者使用 PocketBase SDK,它们可与 slonbase 的 API 配合使用: import PocketBase from "pocketbase"; const pb = new PocketBase("http://localhost:8090"); await pb.collection("users").authWithPassword("ann@example.com", "secret"); const posts = await pb.collection("posts").getList(1, 20, { filter: 'published = true', expand: "author" }); 四处看看 记录 概览 Schema 日志 项目:指挥中心 SQL 控制台 记录编辑器 API 规则 设置:外观 邮件设计器 根据集合绘制的 schema 图:将鼠标悬停在一个集合上即可跟随其关系。 侧边栏包含各个区块和你的集合,记录在网格旁边的抽屉中打开, 状态栏显示连接、数据库和 API 基地址;浅色和深色主题遵循 GitHub 的中性色板(或你的系统)。它可在手机上使用,⌘K / Ctrl K 可跳转到任意位置,并且它只使用公共 API,因此 它能做的任何事情,你也可以用脚本实现。 这些指南也在文档站点上,带搜索功能: slonbase.com/docs。 命令 描述 slonbase serve 启动服务器(默认)。 slonbase setup 不通过 Web 向导进行设置。 slonbase health 如果本地服务器健康则退出码为 0(用于容器健康检查)。 slonbase superuser upsert|update|delete|otp ... 管理超级用户。当无法发送邮件时,otp <email> 打印用于通过 MFA 登录的一次性密码。 slonbase import-pocketbase <pb_data or backup.zip> 导入一个 PocketBase 安装。 slonbase migrate up|down|create|collections|list ... 应用、回滚或编写迁移。 slonbase project list|create|delete ... 管理项目;--project <name> 在单个项目上运行 superuser、import-pocketbase 和 migrate。 slonbase --help 列出所有选项。 在与 PocketBase 和 PostgREST 的对比中,在相同机器、相同数据和相同 HTTP 工作负载、默认设置下(请求方法及完整结果): 32 个客户端,在 4-vCPU 虚拟机上三次 10 秒运行的中位数。slonbase 在所有测试场景中都领先, 从 PocketBase 吞吐量的 1.2 倍(登录,受 bcrypt 限制)到 68 倍(过滤 列表,PostgreSQL 使用了索引)。PostgREST 是一个更精简的程序,做的也少得多(没有登录、 文件、实时或仪表盘):15 MB 的进程对 slonbase 的 40 MB。写入在 PostgreSQL 默认持久性下 领先于 PocketBase,当 PostgreSQL 做出与 SQLite 默认相同的取舍时领先更多 (synchronous_commit = off;参见原因)。列表则
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。