Bỏ qua, đến nội dung

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

Tổng quan

Plugin @digiforce-nc/plugin-license quản lý license cho instance DigiForce hiện tại. Plugin cung cấp cơ chế tạo yêu cầu license (license request), upload và xác minh license key, kiểm tra domain/IP binding, và theo dõi trạng thái license.

Yêu cầu

  • Server DigiForce đang chạy
  • License key hợp lệ (lấy từ nhà cung cấp hoặc từ License Manager)

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

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

Bước 2: Tạo yêu cầu license (License Request)

Trước khi nhận license, bạn cần tạo license request chứa thông tin server (fingerprint). Vào Settings → License và thực hiện:

Tạo request trực tiếp

Gọi action generateRequest — plugin thu thập thông tin server và trả về:

Thông tinMô tả
requestIdMã yêu cầu duy nhất (nanoid)
serverFingerprintDấu vân tay server (duy nhất cho mỗi máy)
hostnameTên máy chủ
osHệ điều hành
cpuThông tin CPU
macAddressĐịa chỉ MAC (nếu có)
machineIdMachine ID
isDockerCó đang chạy trong Docker không
containerId / containerNameThông tin container (nếu Docker)
domainDomain của ứng dụng (từ APP_URL)
ipĐịa chỉ IP
nodeVersionPhiên bản Node.js

Xuất file request

Gọi action exportRequest — plugin tạo file .lic (base64 encoded) chứa thông tin request. Gửi file này cho nhà cung cấp để nhận license key.

Bước 3: Upload license key

Sau khi nhận license key từ nhà cung cấp, upload vào hệ thống:

Kiểm tra binding

License có thể bị ràng buộc với:

BindingKiểm traLỗi nếu không khớp
Domain binding (bindDomain)Hostname trong APP_URL phải khớp với domain trong licenseDOMAIN_MISMATCH
IP binding (bindIp)IP request phải khớp với ip trong licenseIP_MISMATCH

Bước 4: Kiểm tra trạng thái license

Gọi action validateLicense để xem thông tin license hiện tại:

TrườngMô tả
nameTên license
expiresAtNgày hết hạn
featuresDanh sách tính năng được bật
statusTrạng thái: active, expired, revoked, pending
serverFingerprintFingerprint server đã gắn
bindDomain / domainDomain binding
bindIp / ipIP binding

Database Schema

Collection licenses

TrườngKiểuMô tả
idbigInt (PK)ID tự tăng
namestringTên license
descriptiontextMô tả
expiresAtdateNgày hết hạn
licenseKeytext (ẩn)License key đã mã hoá
requestFiletext (ẩn)Nội dung file request
serverFingerprintstringDấu vân tay 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
featurestextDanh sách features (JSON)
statusstringTrạng thái: active / expired / revoked / pending
issuedBystringNgười/tổ chức cấp license

API Actions

ActionMô tảQuyền
licenses:generateRequestTạo thông tin request licenseloggedIn
licenses:exportRequestXuất file request .lic để tải vềloggedIn
licenses:uploadLicenseUpload và cài đặt license keyloggedIn
licenses:validateLicenseKiểm tra trạng thái license hiện tạiloggedIn
licenses:removeLicenseXoá license (file + database)loggedIn

Lưu trữ license

License key được lưu tại 2 nơi:

  1. File system: storage/apps/{appName}/license.key (hoặc path từ biến môi trường LICENSE_KEY_PATH)
  2. Database: Collection licenses

Khi upload license mới, nếu đã có license cho cùng serverFingerprint, bản ghi sẽ được cập nhật thay vì tạo mới.

Biến môi trường

BiếnMô tả
APP_URLURL ứng dụng — dùng để kiểm tra domain binding
LICENSE_KEY_PATHĐường dẫn tuỳ chỉnh cho file license.key

Lưu ý quan trọng

  • License key có format signature.encrypted_data — nếu không đúng format sẽ bị từ chối
  • Sau khi upload license, plugin gọi licenseManager.reload() để áp dụng ngay
  • Xoá license (removeLicense) sẽ xoá cả file trên disk và bản ghi trong database
  • Tất cả action yêu cầu người dùng đã đăng nhập (loggedIn)
  • ACL snippet pm.plugin-license kiểm soát quyền truy cập