Files
Fnos-Havline/README.md
T

112 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Havline fnOS 应用打包
本目录保存 Havline 的飞牛 fnOS 应用工程。
- 应用工程:[`havline/`](havline/)
- 官方工具:`fnpack`
- 当前工具版本:`1.2.3`
- 主程序仓库:`F:\Fonu-main\havline`
## 当前状态
已经完成:
- 使用 `fnpack create havline --template docker` 生成官方 Docker 应用骨架;
- 配置 `manifest`、应用入口、Docker Compose、权限和资源;
- 增加安装向导、配置向导和卸载向导;
- 增加安装、升级、配置和卸载生命周期脚本;
- 支持通过环境变量 `HAVLINE_INITIAL_ADMIN_PASSWORD` 初始化管理员。
仍需完成:
- 在飞牛 x86_64 与 ARM 设备验证离线安装、启动、入口、升级和卸载;
- 验证应用用户加入 `docker` 组后的 `docker load`、`docker inspect` 权限。
## 离线镜像包
当前应用已经切换为离线镜像包模式,不依赖外部 Docker Registry。
包内包含:
```text
target/docker/havline-<version>-amd64.tar.gz
target/docker/havline-<version>-arm64.tar.gz
```
安装或升级回调会执行:
```bash
docker load -i target/docker/havline-<version>-<arch>.tar.gz
```
Compose 使用本地镜像:
```yaml
image: havline:${TRIM_APPVER}
pull_policy: never
```
因此安装时不需要访问 `jayhub.top`,也不需要配置 Registry 登录。
当前 1.9.0 双架构 `.fpk` 约 `150.6 MB`。
## 打包
Windows PowerShell:
```powershell
cd F:\Fonu-main\fnos
.\build.ps1
```
脚本会先复制一份不含 `.DS_Store` 的干净工程,再调用 `fnpack` 打包,输出到:
```text
fnos/dist/havline-<version>.fpk
```
默认会同时导出 amd64 与 arm64 镜像归档。若本次只修改了打包元数据,
且已有对应版本的镜像归档,可以使用:
```powershell
.\build.ps1 -SkipImageExport
```
如果 `fnpack` 已在 PATH 中,也可以传入路径:
```powershell
.\build.ps1 -FnpackPath fnpack
```
## 测试安装
```bash
appcenter-cli install-fpk havline.fpk
```
安装后检查:
1. 应用中心显示 Havline;
2. 安装回调成功加载离线镜像;
3. Havline 容器能够启动;
4. 桌面入口可以打开管理界面;
5. 数据写入 `${TRIM_PKGVAR}`;
6. 卸载默认保留数据。
## 当前默认端口
| 用途 | 安装向导默认值 | 容器端口 |
| --- | ---: | ---: |
| 管理界面 | `6893` | `6893` |
| HTTP 反向代理 | `18080` | `80` |
| HTTPS 反向代理 | `9443` | `443` |
## 首发边界
- 容器本身不挂载 Docker Socket。
- 生命周期脚本通过应用用户的 `docker` 附加组执行 `docker load` 和状态检查。
- 不启动 Havline 自带 updater。
- 不使用 host 网络。
- 不共享数据库、证书、密钥、Nginx、FRP 和 cloudflared 目录。
- 应用中心负责安装、升级、启动、停止和卸载。