ota
This commit is contained in:
@@ -22,3 +22,73 @@ World Bank 中的数据只用来对比妙想 MCP 拉取的数据正确性。当
|
||||
监控分为服务器监控和服务监控两部分。
|
||||
服务器监控对接 komari,地址:https://komari.honor3.com/
|
||||
|
||||
|
||||
|
||||
## 前端 OTA 升级
|
||||
|
||||
只升级前端资源 (`dist/`), **不触碰** Tauri 框架/原生层, 不重打 APK.
|
||||
底层使用 [`tauri-plugin-hotswap`](https://github.com/denniskribl/tauri-plugin-hotswap)
|
||||
(签名/回滚/资源替换全部由插件处理).
|
||||
|
||||
### 工作流
|
||||
|
||||
```
|
||||
开发者 服务端
|
||||
npm run build ──┐
|
||||
scripts/build-ota.mjs │ 生成 iboard-ota.tar.gz + minisign 签名
|
||||
│ 输出 latest.json (sequence/version/...)
|
||||
▼
|
||||
ota-package/ ── 部署到服务器 ──▶ /srv/iboard/ota-package
|
||||
│
|
||||
▼
|
||||
GET /api/ota/check/<seq>
|
||||
客户端 (Tauri) │
|
||||
启动 ─▶ notifyReady() ▼
|
||||
我页 ─▶ checkUpdate() ◀──── 200 + manifest (含 url/signature) ─────┘
|
||||
applyUpdate() ─▶ 下载 tar.gz ─▶ minisign 校验 ─▶ 解压到 AppData/ota-dist
|
||||
location.reload() ─▶ 后续资源从 tauri://localhost 优先命中覆盖包
|
||||
```
|
||||
|
||||
### 首次部署
|
||||
|
||||
1. **生成签名密钥** (一次性):
|
||||
```bash
|
||||
# 安装 minisign: Windows (scoop) / macOS (brew) / Linux (apt)
|
||||
node scripts/ota-genkey.mjs
|
||||
# 产物: ota-package/hotswap.{key, pub}
|
||||
```
|
||||
2. **把公钥写入 `src-tauri/tauri.conf.json`** 的 `plugins.hotswap.pubkey` 字段
|
||||
(脚本会打印).
|
||||
3. **配置 endpoint** (`src-tauri/tauri.conf.json`):
|
||||
```json
|
||||
"hotswap": {
|
||||
"endpoint": "https://your-server/api/ota/check/{{current_sequence}}",
|
||||
"pubkey": "RWR...",
|
||||
"require_https": true
|
||||
}
|
||||
```
|
||||
4. **服务端环境变量** `OTA_PACKAGE_DIR` 指向 `ota-package/` 所在目录.
|
||||
|
||||
### 发布新版前端
|
||||
|
||||
```bash
|
||||
npm run build # 生成 dist/
|
||||
node scripts/build-ota.mjs # 打成 tar.gz + 签名 + latest.json
|
||||
# sequence 默认 = Date.now(), 也可 --sequence 43 手动指定
|
||||
# 也可加 --notes "修复登录按钮" --min-binary 0.1.0
|
||||
```
|
||||
|
||||
然后把 `ota-package/` 下两个文件 (`iboard-ota.tar.gz` + `latest.json`) 同步到
|
||||
服务端 `OTA_PACKAGE_DIR` 指向的目录. sequence 单调递增即可.
|
||||
|
||||
### 客户端使用
|
||||
|
||||
打开 App 的"我"页, 点 [检查更新] → [立即升级] 即可. 失败会自动回滚到内置 dist.
|
||||
|
||||
> **注意:** Tauri 2 的 dev 模式 (`tauri dev`) 会代理到 Vite dev server, **OTA 不生效**.
|
||||
> OTA 仅在 release/打包构建中可用, 测试请用 `tauri build` 产物.
|
||||
|
||||
### Web 端
|
||||
|
||||
Web 浏览器访问 (同源) 时, 服务端返回简化版 manifest, 仅显示"有新版本请刷新".
|
||||
Web 端不会自动下载包, 也不会替换前端代码.
|
||||
|
||||
Reference in New Issue
Block a user