For the complete documentation index, see llms.txt. This page is also available as Markdown.

VergeOS TypeScript SDK(tsvergeos)

tsvergeos 是一个用于通过 REST API 管理 VergeOS 的 TypeScript SDK,提供零依赖、可树摇优化、带类型的接口,用于自动化 VM、网络、存储、租户和多站点管理。

概述

tsvergeos 是一个用于通过 REST API 管理 VergeOS 基础设施的 TypeScript SDK。它提供零依赖、可按需打包、完全类型化的接口,用于自动化 VM 生命周期、网络、存储、多租户操作和多站点管理,非常适合自动化脚本、工具开发和集成。

主要功能

  • 零依赖: 无需审计,无需破坏

  • 支持 Tree Shaking: 只导入你使用的服务;未使用的服务会被死代码消除

  • 完整类型覆盖: 每个资源、参数和响应都带有 TSDoc 文档的类型定义

  • 93 个服务: 完整覆盖每一个 VergeOS API 端点

  • 内置多站点: 从单一入口查询和管理多个 VergeOS 部署 SiteManager

  • 跨平台: 可在 Node.js 20+、Deno、Bun 和现代浏览器中运行

  • 过滤: 同时支持流式和 Filter 构建器以及函数式 buildFilter 简写

要求

  • Node.js 20+(也支持 Deno 和 Bun)

  • VergeOS 6.x(API v4)

安装

通过 npm 安装(推荐)

使用 pnpm / yarn / bun

身份验证

该 SDK 支持多种身份验证方式:

API 密钥(推荐)

SSL 证书验证

设置 verifySsl: false 仅用于使用自签名证书的环境。对于具有有效证书的生产环境,请省略此参数或将其设置为 true.

用户名 / 密码

环境变量

使用环境变量可避免在源代码中暴露凭据,并且便于在不同环境中使用不同凭据。

服务注册

该 SDK 使用可按需打包的导入——服务通过副作用导入进行注册,因此未使用的服务会从你的 bundle 中被死代码消除。

三种导入级别

默认导入并不包含所有服务。如果你访问了一个未注册的服务(例如, client.alarms 却没有导入它),你会得到 undefined。对于仪表盘、管理工具或后端脚本这类不在乎 bundle 大小的场景,请使用 import '@vergeio/tsvergeos/full' 来注册全部内容。

仅类型导入

无论注册了哪些服务,类型导入对 bundle 都没有任何影响:

可用资源

该 SDK 提供对 93 个服务的访问,覆盖完整的 VergeOS API:

类别
资源

计算

VM、磁盘、设备、NIC、机器快照、统计信息

网络

网络、规则、别名、地址、主机、DNS 区域/记录/视图

VPN

WireGuard 接口和对等节点、IPSec 连接和阶段

存储

卷、卷快照、CIFS/NFS 共享、同步、浏览器、存储层级

NAS

NAS 服务、用户、文件

租户

租户、节点、存储、快照、二层网络

配方

VM 和租户配方、实例、目录、仓库

快照

快照配置文件、周期、云快照

站点

API sites 服务——入站/出站同步、同步配置文件周期(与 SDK 的 SiteManager)

系统

系统、集群、节点、设置、日志、任务

监控

告警、告警类型、webhook、webhook URL

认证

用户、组、成员、权限、API 密钥

标签

标签、类别、成员

更新

更新设置、源、包、分支

其他

证书、cloud-init、资源组

使用示例

管理虚拟机

可靠的电源状态

该 powerstate VM 资源上的字段通常会被 API 省略。若要获取权威的实时电源状态,请查询机器状态服务:

控制台访问

getConsoleInfo() 返回用于打开直连 VM 的 WebSocket 控制台的连接详情。支持三种认证方式——请根据控制台的渲染位置选择:

浏览器 WebSocket API 不支持自定义头——在浏览器中请使用用户名/密码或预先存在的令牌。若要直接打开 Web UI 控制台且无需 API 调用,请使用 client.vms.getConsoleURL(42).

过滤资源

该 SDK 支持多种过滤方式:

多站点管理

从单一入口管理多个 VergeOS 部署:

该 SiteManager 并行地将读取查询分发到所有已注册站点,并返回聚合结果以及每个站点的错误。使用 manager.tagged(tag) 将分发范围限定为站点子集。变更操作始终通过一个命名站点(manager.site("dc-east").vms.create(...));跨站点代理仅暴露 list().

错误处理

所有错误都继承 VergeError 并带有类型化子类和类型守卫函数:

可用的错误类型

错误类
描述

VergeError

所有 SDK 错误的基础错误

ApiError

来自 API 的任何 HTTP 错误

NotFoundError

资源未找到(404)

AuthError

认证失败(401/403)

ConflictError

资源状态冲突(409)

ValidationError

无效的客户端输入

UnsupportedVersionError

服务器版本过旧

TaskError

异步任务失败

TaskTimeoutError

任务超出等待超时

SiteError

多站点操作失败

客户端配置

完整的配置选项集:

常见用例

  • 基础设施自动化:以编程方式预配虚拟机、网络和存储

  • CI/CD 集成:在流水线中创建和销毁测试环境

  • 监控和报告:查询资源状态并生成清单报告

  • 备份自动化:安排并管理快照和云备份

  • 多租户预配:自动化租户创建和资源分配

  • 多站点编排: 管理并跨多个 VergeOS 部署进行查询

文档和资源

有关完整文档、完整 API 参考和详细使用示例,请访问官方仓库:

支持

如果您遇到问题或有功能请求,请在 GitHub 仓库中提交 issue:

其他资源

最后更新于

这有帮助吗?