# @defrex/autobuild-hosted-store-service 中文文档

规范地址：https://npmcn.com/package/%40defrex/autobuild-hosted-store-service/

版本：1\.6\.0
npm 元数据更新时间：2026-11-11T21:00:51.051Z
中文译文更新时间：2026-11-12T03:12:59.189Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40defrex/autobuild-hosted-store-service
原文对照：https://npmcn.com/package/%40defrex/autobuild-hosted-store-service/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.1 MB，126 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：15 个
- peer 依赖：@defrex/autobuild \>=0\.11\.0 \|\| \>=1\.0\.0-0 \<1\.0\.0
- 首次发布：2026-09-16T16:26:06.901Z
- 最新版本发布：2026-11-11T21:00:50.878Z
- 近 30 天下载量：3136（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：23（近 12 个月 23 个）

## 中文简介

暂无中文简介

## 安装

```sh
npm install @defrex/autobuild-hosted-store-service
```

也可以使用：`pnpm add @defrex/autobuild-hosted-store-service`、`yarn add @defrex/autobuild-hosted-store-service`、`bun add @defrex/autobuild-hosted-store-service`

## README

# `@defrex/autobuild-hosted-store-service`

可选主机自动构建服务由远程构建 Store 和 全票源 HTTP 协议 `@defrex/autobuild-postgres-store`; 数据 协议服务器住在这里, 而客户端的一半, 电线计划, 和符号 装有薄荷的船 `@defrex/autobuild` 核心软件包。 Next.js 应用程序 住在这个包裹里 `app/` 树:它挂载这些机器协议 不变,并服务 饼干认证操作仪表板在同一 源代码. `server.ts` 此包中仍为已命名的赤本 非下一个主机的机器服务入口.

## 全面部署

使用软件包 `deployment/package.json` 财务报告和审定财务报表 `deployment/vercel.json` 作为 小数 Git 仓库, 用 Bun 安装, 输入锁定文件, 并导入到 韦克塞尔。 模板明确标出此服务及其所需的核心 对等到同一释放。 软件包构建命令阶段 完整的应用程序, 迁移 Postgres,然后创建 Next.js. 不需要源检出或补丁 .

跟着 [自主办指南](https://npmcn.com/package/%40defrex/autobuild-hosted-store-service/SELF-HOSTING.md) 确切的模板, 环境、检查和升级程序。 它在这个包裹中飞来飞去; 自我接待 不支持和买方的谨慎。 仅存储 模式是默认:没有可选的调度器, `/api/dispatch` 返回时 503个,“为这一部署在其他地方部署”,没有提供克龙.

项目证书不透明 `abp_1_<id>_<secret>` 无记名值绑定在一个 已注册的正态寄存器 。 服务只储存一份SHA-256摘要 随机秘密,加上项目,创建者,创建时间,最后使用,过期和 撤销元数据。 它检查证书状况和项目登记 读取单个数据库中的每个请求, 没有正验证缓存 在请求之间。 最后使用最多为每60秒一次,并有线索 实际使用时间最多为60秒; 相互竞争的服务实例共享数据库 断取. 已经在飞行中的认证在撤销时可能完成 . 存储器存在读取仅在一个 HTTP 引用中重复使用; 事件 读取和变异锁保持新鲜。 撤销对下一个请求生效而不影响 其他全权证书。 收到不明、过期或被吊销的证书 `401 auth`· ; 收到已删除的项目 `403 auth` 与 `project not registered`。 。 。 .

部署所有者在本地运行这些命令, 并访问数据库 :

```sh
ab-hosted-store credentials issue https://github.com/acme/app --user owner@example.com
ab-hosted-store credentials list https://github.com/acme/app
ab-hosted-store credentials revoke https://github.com/acme/app --id ID --user owner@example.com
```

发布此密钥一次; 列表仅包含元数据 。 可选发行 接受 `--ttl-seconds N` 或者说 `--expires-at ISO-8601`对于行政/非互动印发,将返回的符号设定为: `AB_TOKEN`. 互动项目登入使用 `ab connect <service-url>`· ; 它能把证书保存在寄存处之外 并且没有秘密 上一个 `AB_TOKEN` 价值和价值 `mint operator` 编号 : `mint build` 为: 已退休: 服务回复到证书格式已改变并点数 改为 `credentials issue`。所支持的旧协议形状仍然与新的 证书; 协议兼容性不会恢复已退休的认证 .

`mint admin --ttl-seconds N` 创建明确的版本, 归属所有者 碎玻璃证书。 它可以跨越项目界限. 仅保留所有者 : 从不给,或 `AB_STORE_SECRET` 给调度员或建筑代理人.

见 [远程存储权限](https://npmcn.com/package/docs/remote-store-protocol.md#7-authentication-and-project-authority), (中文(简体) ), [入场券](https://npmcn.com/package/docs/remote-ticket-protocol.md) 财务报告和审定财务报表 [运营者授权](https://npmcn.com/package/docs/operator-api.md)。 。 。 .

### 网络/自动变量

-   `BETTER_AUTH_SECRET`: 单独 32+ 字符高通会话秘密.
-   `BETTER_AUTH_URL`:确切的公开来源(`http://localhost:3000` (当地).
-   `GITHUB_CLIENT_ID`, (中文(简体) ), `GITHUB_CLIENT_SECRET`: 仅服务器 OAuth 应用程序值.
-   `AB_WEB_AUTH_PROVIDERS=github`: 启用提供者设置 .
-   `AB_WEB_SUPER_USER_EMAILS`:逗号分隔,大小写不敏感超级用户电子邮件列表.
-   `AB_WEB_REPOSITORIES` (折旧):可选每数据库导入一次 正常寄存器来源 。 持久登记册在 导入; 编辑和重新启动从未复活已删除的工程.
-   `AB_WEB_MCP_RESOURCE` (可选): MCP 服务器的保护资源 将符号绑定为; 默认为 `<BETTER_AUTH_URL>/mcp`见 [自动托管指南的变量](https://npmcn.com/package/%40defrex/autobuild-hosted-store-service/SELF-HOSTING.md#service-variables)。 。 。 .

删除电子邮件会屏蔽其下一个网关请求, 即使其数据库支持 语句尚未过期。 旋转 `BETTER_AUTH_SECRET` 结束每个浏览器 届会. `AB_STORE_SECRET`GitHub的客户端秘密 PostgreSQL/blob证书, 机器代号,和 OAuth 账户代号是只使用服务器的,决不能使用 `NEXT_PUBLIC_` 名称.

在另一个能装箱的主机, `bun run dev` 或者说 `bun run start` 从此 软件包目录为完整服务 应用. `bun run hosted-store` 仅服务机器路线.

## 主机调度器

发件内核不属于此包. 认证的 `GET /api/dispatch` 结束点及其部署时的站点在单独的 [`@defrex/autobuild-hosted-dispatcher`](https://github.com/defrex/autobuild/blob/main/packages/hosted-dispatcher/README.md) 软件包; 部署选择通过安装并安装其 路径,而且只有主机状态的部署从未尝试过调度勾选. 随着调度器的安装, `ab-hosted-service-build` 收拾宾客 分发归档 。 它传送归档和选定的提供者插件 输入 `/api/dispatch`。调度器 README 声明插件选择规则. 见 [自主办指南](https://npmcn.com/package/%40defrex/autobuild-hosted-store-service/SELF-HOSTING.md#dispatcher-enabled-deployment) 页:1 时间表、功能持续时间和耗尽.

Sandbox SDK 认证了内部部署的 OIDC 身份 Vercel 函数,所以不 `VERCEL_TOKEN` 属于主机部署 方式; 查看调度包的 README 环境 变量和证书处理.

## 已连接的项目

在部署前从被绑定的释放中移出 PostgreSQL(`bun run postgres:migrate`) (中文(简体) ). 该服务保持独立、持久的项目登记册; 现有的构建或售票数据不登记项目。 一个管理员 使用部署数据库证书管理,不重新部署:

```sh
ab-hosted-store projects list
ab-hosted-store projects add https://github.com/owner/project --user owner@example.com
ab-hosted-store projects remove https://github.com/owner/project --user owner@example.com
```

从源检出, 替换 `bun packages/hosted-store-service/src/bin.ts` 页:1 `ab-hosted-store`配置 `AB_POSTGRES_URL` 或者说 `DATABASE_URL` 在那个 进程。 数据库拥有补助金管理; `--user` 被宣布为审计 归属,不是经过验证的登录 。 普通工程/仓库令牌无法管理 登记。 每个条目记录归正源 URL,添加时间, 和增加身份。 SSH git 拼写规范化为 HTTPS; 本地路径和 拒绝带有证书的 HTTPS URL 。 复制增加了保存元数据; 删除是一元化的,并重新添加记录新的添加.

超级用户可以操作每个已注册的项目. 组织成员可以 仅运作分配给各自组织的现行项目;未分配遗产 只有超级用户才能看到项目。 成员由正式成员授予 电子邮件,包括首次登录前的电子邮件,并在每次请求中重新检查。 仪表盘, MCP 发现和呼叫,以及每个操作员 API 路由查询当前 登记。 从所有这些表面隐藏一个工程以及随后的 - 建筑、活动、文物和门票, 并且重新登记可以恢复访问。 已经开始的工作没有取消 . 机器证书与一个注册项目挂钩;立即删除 拒绝其证书而不删除历史.

直接链接到 `/?repo=<URL-encoded normalized origin>`。页面选择 当请求的原产地丢失或被移除时,第一个登记来源,以及 空登记册显示没有项目数据或控制 。 登记册出错未能结案; 数据库失败后环境不会倒退.

`AB_WEB_REPOSITORIES` 已贬值。 非空 CSV 完全导入一次 在第一个登记册初始化时, 与演员 `system:AB_WEB_REPOSITORIES`。导入和持久标记承诺 在解剖学上,同时开始。 没有的变量不消耗 标记。 以后重新启动或编辑到变量中从未重新添加已删除的工程; 使用所有者命令进行后续管理.

主机调度员查询每个授权的当前注册情况 引证. 与 `AB_DISPATCHER_REPOSITORIES` 未设置, 它服务所有注册 项目; 明确清单维护其顺序,并与当前 登记。 空登记册是成功的零项目引用.

该服务公布已知的虚假放置时间 `CRON_SECRET` 是未设或空白的, 不需要调度人员来源。 启用时, 它会发布持久发送 从这一选择中插入,包括: 不包括的项目。 授权项目读取前同步同一事实 回答;不需要账户秘密。 见 [放置协议](https://npmcn.com/package/docs/remote-store-protocol.md#hosted-dispatch-placement)。 。 。 .

托管的入场券范围为证书注册项目. 生命周期 源自该项目的有效配置 跟踪器将连接保留在调度器中并接收源反馈 从服务票表面。 此服务没有线性后端 . `AB_TICKET_BACKEND` 财务报告和审定财务报表 `LINEAR_API_KEY` 一个启动删除时被忽略 和所有 `AB_TICKET_*_STATE` 寿命周期变量被删除并被忽略. 部署从解剖角度构建了人口众多的v1机票数据,需要 blob 证书、访问权限和这样做的前缀 拥有者 `ab-hosted-store tickets assign-team` 命令.

退休人员 `AB_WEB_ALLOWED_EMAILS` 变量在启动时被拒绝,即使为空. 替换为 `AB_WEB_SUPER_USER_EMAILS`;审查清单,因为这些身份 是部署维护者。 第一个组织通过 [浏览器管理合同](https://npmcn.com/package/docs/operator-api.md#organization-management-browser), (中文(简体) ), 然后通过电子邮件添加成员,并分配未分配的遗留项目。 单靠超级用户 创建鼠标,设置或清除单一所有者,并指定或移动项目。 拥有者 管理他们的成员。 删除最后一个成员或超级用户的指定 在下次请求时取消人类访问而不重新登录;现有项目 证书在被撤销之前一直有效.

## 项目秘密加密

设定 `AB_PROJECT_SECRETS_KEY` 服务配置和部署配置 32个随机字节的编码,用 `openssl rand -base64 32`。 。 。 . 把它保存在数据库和源控制之外 用部署机密备份. 适配器验证每个写入和项目有秘密时的密钥 以决定。 部署核查员检测到不同的密钥,包括写入 第一次加密写入后为空 。 缺少、错误或错误的密钥 失败写入并关闭非空解析;元数据仍然可以读取。 项目 没有秘密 继续发送没有加密密钥, 即使另一个 计划有秘密 如果添加了秘密, 空快照仍然拒绝交接 自决议通过以来. 密钥从不传递到内核/儿童环境. 轮回不支持. 刷新提供者类型是内部集成; 此发布没有真实 OpenAI 类型或登录端点. 静态秘密使用连接的主人的CLI.

## 常见问题

### 如何安装 @defrex/autobuild-hosted-store-service？

在项目目录运行 npm install @defrex/autobuild-hosted-store-service，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@defrex/autobuild（\>=0\.11\.0 \|\| \>=1\.0\.0-0 \<1\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。它还提供命令行工具 ab-hosted-store、ab-hosted-service-build，可以用 npx ab-hosted-store 直接运行。

### @defrex/autobuild-hosted-store-service 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @defrex/autobuild-hosted-store-service 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @defrex/autobuild-hosted-store-service 可以商用吗？

@defrex/autobuild-hosted-store-service 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @defrex/autobuild-hosted-store-service 的下载量有多少？

根据 npm 官方下载统计，@defrex/autobuild-hosted-store-service 在 2026/10/12 – 2026/11/10 这 30 天内被下载 3,136 次，日均约 105 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @defrex/autobuild-hosted-store-service 还在维护吗？

最新版本 1\.6\.0 发布于 2026/11/12（今天）；至今共发布 23 个版本，其中过去 12 个月发布了 23 个；首次发布于 2026/09/17。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

