# Hearth Server 示例 Hearth 启动器的 webAPP / 卡片下发服务端示例。**本质是纯静态文件**,无需后端逻辑。 ## 目录结构 ``` Hearth_Server/ ├── manifest.json # webAPP 清单(客户端启动时拉取) ├── apps//index.html # 各 webAPP 入口页 ├── icons/.svg # 图标 ├── offlines/.zip # 可选离线包(整站资源打成 zip) └── cards/ ├── catalog.json # 首页卡片目录 └── /card.html # 单个卡片 ``` ## 快速启动(测试用) ```bash cd ~/Project/Hearth_Server python3 -m http.server 8080 ``` 然后在 Hearth 设置页 →「webAPP 服务器地址」填 `http://<本机IP>:8080`。 ## 正式部署 - nginx:`location / { root /path/to/Hearth_Server; }` - 或传云对象存储(OSS/COS)+ CDN,整个目录原样上传 ## 更新流程 1. 改 webAPP 资源(`apps/` 下的文件) 2. 改 `manifest.json` 的 `version`(+1) 3. 客户端「检查更新」或重启即可拉取 ## manifest.json 字段 | 字段 | 说明 | |---|---| | `version` | 清单版本号,客户端据此判断更新 | | `apps[].id` | 唯一 id | | `apps[].name` | 显示名 | | `apps[].icon` | 图标地址(建议 SVG) | | `apps[].url` | 入口页地址(相对地址即可) | | `apps[].offline.package` | 可选离线包 zip 路径 | | `apps[].offline.version` | 离线包版本 | ## 离线包 - 把某个 webAPP 的**全部资源**(`apps//` 下所有文件,含子目录)打成 zip,放 `offlines/.zip` - zip 内需**包含 index.html**(作为离线入口) - 生成示例:`cd apps/demo && zip -r ../../offlines/demo.zip .` ## 离线包使用与版本管理 - **下载时机**:客户端拉取清单时**只同步列表,不自动下载程序包**;只有首次点开某 webAPP 时才下载(显示进度覆盖层)。 - **本地优先**:下载后解压到本地目录,之后点开直接本地加载;**服务端删除该离线包不影响本地运行**。 - **手动导入**:长按 webAPP 卡片 →「导入离线包」→ 选择本地 zip(适用于无服务器或离线分发场景)。 - **版本更新**: - `manifest.json` 里把 `offline.version` 升版本后,客户端列表该 webAPP 显示「**可更新**」标签(**不强制**,点开仍运行本地旧版)。 - 长按卡片弹出菜单: - `更新离线包`(删除本地并重新下载,显示版本 x → y) - `删除本地包` - `属性`(查看本地 / 云端版本号) - 云端版本号 ≤ 本地版本号时不提示更新。