# LokiStack × opsx-licence 对接说明 ## 状态 - 代码:双路径已接入(`LIC-`/`LICOFF-` → opsx-licence;旧 HMAC 迁移窗口内仍接受并提示)。 - 生产 product **`lokistack` 尚未在 licence.rlwj.cn 创建**(公开 `GET /api/v1/products/code/lokistack` 返回「产品不存在」)。 - 默认 API:`LICENSE_API_BASE=https://licence.rlwj.cn/api`(可用环境变量覆盖;`l123` 仅网络失败备灾)。 ## Plan(产品锁) | plan_type | 时长 | 实例(max_devices) | |-----------|------|---------------------| | trial | 14 天 | 1 | | yearly | 365 天 | 默认 1,可加购 | | perpetual | 0(永久) | 默认 1,可加购 | 计费按**部署实例**,不计登录席位。`instance_id` = `DATA_DIR/instance.id` 机器指纹,无 PII。 ## 管理端创建 product(需管理员登录,本说明不含账密) 1. 打开 `https://licence.rlwj.cn` 管理后台并登录。 2. **产品** → 新建: - name: `LokiStack` - code: `lokistack`(必须完全一致) - features: `log_analysis`, `log_alerts`, `ai_ops`, `audit_log` - price_model: `perpetual`(或按需) - status: 启用 3. **定价计划** → 为该产品新建三条: - trial / 14 / max_devices=1 / price=0 - yearly / 365 / max_devices=1 - perpetual / 0 / max_devices=1 4. **许可证** → 选客户 + 产品 `lokistack` 签发 `LIC-`;离线场景签发 `LICOFF-`(须绑定目标实例的 `instance_id`)。 ### 等价 Admin API(需 Bearer;勿把 token 写进仓) ```bash # 创建产品 curl -sS -X POST 'https://licence.rlwj.cn/api/v1/products' \ -H "Authorization: Bearer " -H 'Content-Type: application/json' \ -d '{"name":"LokiStack","code":"lokistack","version":"1.0.0","description":"LokiStack Pro","features":["log_analysis","log_alerts","ai_ops","audit_log"],"price":0,"price_model":"perpetual","status":1}' # 创建计划(替换 PRODUCT_ID) curl -sS -X POST 'https://licence.rlwj.cn/api/v1/plans' \ -H "Authorization: Bearer " -H 'Content-Type: application/json' \ -d '{"product_id":PRODUCT_ID,"name":"体验","plan_type":"trial","price":0,"currency":"CNY","duration":14,"max_devices":1,"features":["Pro","体验","1 实例"],"sort_order":0,"status":1}' # yearly duration=365;perpetual duration=0 —— 同结构各建一条 ``` 公开校验: ```bash curl -sS 'https://licence.rlwj.cn/api/v1/products/code/lokistack' ``` ## 旧 HMAC 迁移 - 已发出的本地 HMAC 码:**迁移窗口内继续可用**,设置页黄条提示换发;**禁止静默清码**。 - 换发:后台为客户建 `lokistack` 许可证 → 客户在设置页粘贴新 `LIC-`/`LICOFF-` 覆盖激活。 - 窗口结束后再关 HMAC 路径(另开刀,需产品点头)。 ## 环境变量 | 变量 | 含义 | |------|------| | `LICENSE_API_BASE` 或 `OPSX_LICENSE_API_BASE` | 覆盖默认 `https://licence.rlwj.cn/api` | ## 对齐 Shell 的差异 | | OpsxShell | LokiStack | |--|-----------|-----------| | product_code | `opsxshell` | `lokistack` | | 绑定字段 | `device_id` | `instance_id`(同语义) | | 默认 Base | l123 主 / 国内备 | **国内主** / l123 备 | | 落盘 | `license.opsx` | JsonDB `license` 字段 |