Bỏ qua, đến nội dung

Hướng dẫn cài đặt — License Manager

Tổng quan

Plugin @digiforce-nc/plugin-license-manager là công cụ dành cho nhà phân phối phần mềm (vendor), cho phép cấp phát license key cho khách hàng từ file license request. Trong khi plugin-license dùng ở phía khách hàng (nhận và cài đặt license), plugin này dùng ở phía vendor (tạo và quản lý license đã cấp).

Phân biệt hai plugin

Tiêu chíplugin-licenseplugin-license-manager
Vai tròPhía khách hàng — nhận và cài đặt licensePhía vendor — cấp phát license key
Dùng choMọi instance DigiForce cần licenseNhà phân phối phần mềm
Chức năng chínhTạo request, upload license, kiểm tra trạng tháiNhận request file, sinh license key có chữ ký số

Yêu cầu trước khi cài đặt

  • Server DigiForce đang chạy (đây là server của vendor)
  • Private key cho việc ký license (RSA PEM format)
  • Biến môi trường LICENSE_SIGNING_PRIVATE_KEY_PATH trỏ đến file private key

Bước 1: Chuẩn bị RSA Key Pair

License key được ký bằng chữ ký số RSA. Vendor cần tạo cặp key:

bash
# Tạo private key (giữ bí mật trên server vendor)
openssl genrsa -out license-private.pem 2048

# Tạo public key (đưa cho khách hàng cài vào instance)
openssl rsa -in license-private.pem -pubout -out license-public.pem

Cấu hình biến môi trường trên server vendor:

bash
# Đường dẫn đến file private key (tuyệt đối hoặc tương đối)
LICENSE_SIGNING_PRIVATE_KEY_PATH=./storage/license-private.pem

# Encryption key cho dữ liệu license (tuỳ chọn)
LICENSE_ENCRYPTION_KEY=your-secret-encryption-key

Bảo mật

File private key cho phép tạo license hợp lệ. Không bao giờ chia sẻ file này cho bất kỳ ai ngoài hệ thống vendor. Chỉ public key mới được phân phối.

Bước 2: Kích hoạt plugin

Vào Settings → Plugin Manager, tìm plugin-license-manager và bật lên.

Khi kích hoạt, plugin tạo:

  • Collection issuedLicenses để lưu lịch sử license đã cấp
  • Resource licenseManager với action issueLicense
  • Hai trang Settings: Issue LicenseIssued Licenses

Bước 3: Cấp phát license cho khách hàng

Quy trình tổng thể

Thao tác trên giao diện

Vào Settings → License Manager → Issue License:

  1. Upload file request (.lic): Dán nội dung hoặc upload file. Plugin tự nhận dạng base64-encoded JSON hoặc plain JSON
  2. Khi parse thành công, thông tin server fingerprint, hostname, domain, IP hiển thị trong alert xanh
  3. Điền thông tin license:
TrườngMô tảBắt buộc
License nameTên gợi nhớ (VD: "ACME Corp — Production")
Expires atNgày hết hạn (mặc định: 30 ngày từ hôm nay)
Bind to domainRàng buộc license với domain cụ thể
DomainDomain cho phép (tự lấy từ request nếu có)
Bind to IPRàng buộc license với IP cụ thể
IP addressIP cho phép (tự lấy từ request nếu có)
FeaturesBảng key-value giới hạn tính năng
  1. Nhấn Generate License để sinh license key
  2. Download file license.key hoặc copy nội dung

Features mặc định

Plugin cung cấp bảng features dạng key-value:

KeyGiá trị mẫuMô tả
typetrial, professional, ultimate...Loại license
collections100Giới hạn số collection
users100Giới hạn số user
datasources1Giới hạn số data source
workflows100Giới hạn số workflow

Vendor có thể thêm/xoá feature tuỳ ý bằng nút Add Feature.

Bước 4: Quản lý license đã cấp

Vào Settings → License Manager → Issued Licenses để xem danh sách license đã cấp:

CộtMô tả
NameTên license
HostnameHostname server khách hàng
Issued AtThời điểm cấp
Expires AtNgày hết hạn (đỏ nếu đã quá hạn)
Statusactive / expired / revoked
FingerprintServer fingerprint (hiển thị rút gọn)
ActionsView chi tiết, Download file license.key

Database Schema

Collection issuedLicenses

TrườngKiểuMô tả
idbigInt (PK)ID tự tăng
namestringTên license
descriptiontextMô tả
issuedAtdateThời điểm cấp
expiresAtdateNgày hết hạn
licenseKeytextLicense key đã sinh (signature.encrypted_data)
requestFiletextNội dung file request gốc
serverFingerprintstringDấu vân tay server khách hàng
hostnamestringHostname server
bindDomainbooleanCó ràng buộc domain không
domainstringDomain được phép
bindIpbooleanCó ràng buộc IP không
ipstringIP được phép
featurestextFeatures (JSON string)
statusstringTrạng thái: active / expired / revoked
issuedBystringNgười cấp (username admin)

API Actions

ActionMô tảQuyền
licenseManager:issueLicenseSinh license key từ request fileloggedIn
issuedLicenses:listDanh sách license đã cấploggedIn
issuedLicenses:getChi tiết một licenseloggedIn

Biến môi trường

BiếnMô tảBắt buộc
LICENSE_SIGNING_PRIVATE_KEY_PATHĐường dẫn file RSA private key để ký license
LICENSE_ENCRYPTION_KEYKey mã hoá dữ liệu license (tuỳ chọn, tăng bảo mật)

Lưu ý quan trọng

  • Plugin sử dụng LicenseNative.create() từ @digiforce-nc/server để sinh license key với chữ ký số
  • License key có format signature.encrypted_data — phía khách hàng cần public key tương ứng để xác minh
  • File request .lic chứa thông tin server dưới dạng base64-encoded JSON hoặc plain JSON
  • Nếu thiếu biến LICENSE_SIGNING_PRIVATE_KEY_PATH, action issueLicense trả lỗi PRIVATE_KEY_NOT_CONFIGURED
  • ACL snippet pm.license-manager kiểm soát quyền truy cập
  • Tất cả action yêu cầu người dùng đã đăng nhập (loggedIn)