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

VergeOS TypeScript SDK (tsvergeos)

tsvergeos là một TypeScript SDK để quản lý VergeOS thông qua REST API, cung cấp giao diện có kiểu, không phụ thuộc, có thể tree-shake để tự động hóa VM, mạng, lưu trữ, tenant và đa site.

Tổng quan

tsvergeos là một SDK TypeScript để quản lý hạ tầng VergeOS thông qua REST API. Nó cung cấp một giao diện không phụ thuộc, có thể tree-shake, được gõ kiểu đầy đủ để tự động hóa vòng đời VM, mạng, lưu trữ, vận hành đa thuê bao và quản lý đa site, khiến nó lý tưởng cho các script tự động hóa, phát triển công cụ và tích hợp.

Tính năng chính

  • Không phụ thuộc: Không có gì để kiểm tra, không có gì để hỏng

  • Có thể Tree-Shake: Chỉ import các dịch vụ bạn dùng; các dịch vụ không dùng sẽ bị loại bỏ như mã chết

  • Phủ kiểu đầy đủ: Mọi tài nguyên, tham số và phản hồi đều được gõ kiểu với tài liệu TSDoc

  • 93 dịch vụ: Phủ đầy đủ mọi điểm cuối của API VergeOS

  • Tích hợp đa site sẵn có: Truy vấn và quản lý nhiều triển khai VergeOS từ một SiteManager

  • Đa nền tảng: Hoạt động trong Node.js 20+, Deno, Bun và các trình duyệt hiện đại

  • Lọc: Hỗ trợ bộ lọc OData với cả một Filter builder dạng fluent và một buildFilter viết tắt hàm

Yêu cầu

  • Node.js 20+ (cũng hỗ trợ Deno và Bun)

  • VergeOS 6.x (API v4)

Cài đặt

Từ npm (Khuyến nghị)

Dùng pnpm / yarn / bun

Xác thực

SDK hỗ trợ nhiều phương thức xác thực:

API Key (Khuyến nghị)

Xác minh chứng chỉ SSL

Đặt verifySsl: false chỉ cho các môi trường có chứng chỉ tự ký. Với môi trường sản xuất có chứng chỉ hợp lệ, hãy bỏ qua tham số này hoặc đặt nó thành true.

Tên đăng nhập / Mật khẩu

Biến môi trường

Sử dụng biến môi trường giúp giữ thông tin xác thực ra khỏi mã nguồn của bạn và dễ dàng dùng các thông tin xác thực khác nhau giữa các môi trường.

Đăng ký dịch vụ

SDK sử dụng các import có thể tree-shake — các dịch vụ được đăng ký qua import tạo hiệu ứng phụ, nên các dịch vụ không dùng sẽ bị loại khỏi bundle của bạn.

Ba mức import

Import mặc định không bao gồm mọi dịch vụ. Nếu bạn truy cập một dịch vụ chưa được đăng ký (ví dụ: client.alarms mà không import nó), bạn sẽ nhận được undefined. Với dashboard, công cụ quản trị hoặc script backend nơi kích thước bundle không quan trọng, hãy dùng import '@vergeio/tsvergeos/full' để đăng ký tất cả.

Chỉ import kiểu

Import kiểu không ảnh hưởng đến bundle dù bất kỳ dịch vụ nào được đăng ký:

Tài nguyên có sẵn

SDK cung cấp quyền truy cập vào 93 dịch vụ bao phủ toàn bộ API VergeOS:

Danh mục
Tài nguyên

Điện toán

VM, ổ đĩa, thiết bị, NIC, snapshot máy, thống kê

Mạng

Mạng, quy tắc, bí danh, địa chỉ, máy chủ, vùng/bản ghi/giao diện DNS

VPN

Giao diện và peer WireGuard, kết nối và giai đoạn IPSec

Lưu trữ

Volume, snapshot volume, chia sẻ CIFS/NFS, đồng bộ, trình duyệt, tầng lưu trữ

NAS

Dịch vụ NAS, người dùng, tệp

Tenant

Tenant, node, lưu trữ, snapshot, Layer 2

Công thức

Recipe VM và tenant, instance, danh mục, kho lưu trữ

Ảnh chụp nhanh

Hồ sơ snapshot, chu kỳ, snapshot đám mây

Site

API sites service — các đồng bộ vào/ra, các chu kỳ hồ sơ đồng bộ (khác với SiteManager)

Hệ thống

Hệ thống, cụm, node, cài đặt, nhật ký, tác vụ

Giám sát

Cảnh báo, loại cảnh báo, webhook, URL webhook

Xác thực

Người dùng, nhóm, thành viên, quyền, khóa API

Thẻ

Thẻ, danh mục, thành viên

Cập nhật

Cài đặt cập nhật, nguồn, gói, nhánh

Khác

Chứng chỉ, cloud-init, nhóm tài nguyên

Ví dụ sử dụng

Quản lý máy ảo

Trạng thái nguồn đáng tin cậy

Danh sách powerstate trường trên tài nguyên VM thường bị API bỏ qua. Để có trạng thái nguồn trực tiếp mang tính thẩm quyền, hãy truy vấn dịch vụ trạng thái máy:

Truy cập Console

getConsoleInfo() trả về thông tin kết nối để mở console WebSocket trực tiếp tới một VM. Hỗ trợ ba phương thức xác thực — chọn theo nơi console được hiển thị:

API WebSocket không hỗ trợ header tùy chỉnh — hãy dùng tên đăng nhập/mật khẩu hoặc một token sẵn có trong trình duyệt. Để đi tắt không cần gọi API tới console giao diện web, hãy dùng client.vms.getConsoleURL(42).

Lọc tài nguyên

SDK hỗ trợ nhiều cách tiếp cận lọc:

Quản lý đa site

Quản lý nhiều triển khai VergeOS từ một điểm truy cập duy nhất:

Danh sách SiteManager phân tán các truy vấn đọc song song trên tất cả các site đã đăng ký và trả về kết quả tổng hợp cùng với mọi lỗi theo từng site. Dùng manager.tagged(tag) để giới hạn việc phân tán vào một tập con các site. Các thao tác ghi luôn đi qua một site có tên (manager.site("dc-east").vms.create(...)); proxy liên site chỉ hiển thị list().

Xử lý lỗi

Tất cả lỗi đều kế thừa VergeError với các lớp con được gõ kiểu và các hàm kiểm tra kiểu:

Các kiểu lỗi có sẵn

Lớp lỗi
Mô tả

VergeError

Lỗi cơ sở cho tất cả lỗi SDK

ApiError

Bất kỳ lỗi HTTP nào từ API

NotFoundError

Không tìm thấy tài nguyên (404)

AuthError

Xác thực thất bại (401/403)

ConflictError

Xung đột trạng thái tài nguyên (409)

ValidationError

Dữ liệu đầu vào phía client không hợp lệ

UnsupportedVersionError

Phiên bản máy chủ quá cũ

TaskError

Tác vụ bất đồng bộ thất bại

TaskTimeoutError

Tác vụ vượt quá thời gian chờ

SiteError

Lỗi thao tác đa site

Cấu hình Client

Toàn bộ tập tùy chọn cấu hình:

Các trường hợp sử dụng phổ biến

  • Tự động hóa hạ tầng: Cấp phát VM, mạng và lưu trữ bằng chương trình

  • Tích hợp CI/CD: Tạo và hủy môi trường thử nghiệm trong pipeline

  • Giám sát và báo cáo: Truy vấn trạng thái tài nguyên và tạo báo cáo kiểm kê

  • Tự động hóa sao lưu: Lên lịch và quản lý snapshot cùng bản sao lưu đám mây

  • Cấp phát đa thuê bao: Tự động hóa việc tạo tenant và phân bổ tài nguyên

  • Điều phối đa site: Quản lý và truy vấn trên nhiều triển khai VergeOS

Tài liệu và tài nguyên

Để có tài liệu đầy đủ, bao gồm toàn bộ tham chiếu API và các ví dụ sử dụng chi tiết, hãy truy cập kho lưu trữ chính thức:

Hỗ trợ

Nếu bạn gặp sự cố hoặc có yêu cầu tính năng, vui lòng mở một issue trên kho lưu trữ GitHub:

Tài nguyên bổ sung

Cập nhật lần cuối

Nội dung này có hữu ích không?