将 VERT 开源文件转换器封装为飞牛 fnOS 原生应用。 VERT 是一款基于 WebAssembly 的本地文件转换器,所有转换均在浏览器端完成,文件不会上传到任何服务器。
- 纯静态 Web 应用 + 轻量 Python 静态服务(仅依赖系统自带 python3,无 Docker 依赖)
- 支持 250+ 种文件格式转换(图片、音频、文档)
- 默认完全本地模式:禁用 Plausible 统计、视频转换、捐赠等所有外部请求,隐私友好
- 桌面图标一键访问 Web 界面,应用中心可管理启停状态
- 安装向导与应用设置中均可自定义 Web 访问端口(默认 8090,需 fnOS 1.1.8+)
- 运行数据存放在 fnOS 数据目录(
var/),并声明vert-data共享目录
vert-fpk/
├── manifest # 应用标识 (appname/version/port/desktop 入口等)
├── cmd/ # fnOS 生命周期脚本 (main/install/upgrade/uninstall/config)
├── config/
│ ├── privilege # 权限声明 (run-as: package, 专用用户 vert)
│ └── resource # 资源声明 (data-share: vert-data)
├── wizard/ # 安装/卸载/升级向导
├── app/ # 打包后映射到 target (TRIM_APPDEST)
│ ├── server.py # 静态文件服务 (Python 标准库实现)
│ ├── ui/ # 桌面图标配置 (desktop_uidir=ui)
│ │ ├── config
│ │ └── images/ # icon-64.png / icon-256.png
│ └── web/ # VERT 构建产物 (由构建脚本生成)
├── ICON.PNG / ICON_256.PNG
├── build.ps1 # Windows 构建脚本
├── build.sh # Linux/macOS 构建脚本
└── LICENSE
powershell -ExecutionPolicy Bypass -File .\build.ps1bash ./build.sh构建脚本会自动:
- 下载
fnpack打包工具(若缺失) - 拉取 VERT 源码(
.build/vert) - 生成
.env构建配置并构建静态站点(优先使用 bun,其次 node+npm) - 将构建产物拷贝到
app/web - 生成 64/64 与 256/256 应用图标
- 调用
fnpack build生成.fpk到dist/
产物:dist/sh.vert.app_1.0.0.fpk
在飞牛 fnOS 中:应用中心 → 手动安装 → 选择 .fpk 文件。
安装向导中可设置 Web 访问端口(默认 8090),安装后桌面生成 VERT 图标,点击即在浏览器中打开 http://<NAS IP>:<端口>。
| 项目 | 值 |
|---|---|
| 服务端口 | 8090(可在安装向导/应用设置中修改) |
| 运行用户 | 专用用户 vert(run-as: package) |
| 数据目录 | var/(日志、PID,卸载时保留) |
| 共享目录 | shares/vert-data(用户可自行存放文件) |
修改端口:应用中心 → 应用 → VERT → 设置,修改端口保存后自动重启生效,桌面图标同步更新。 端口持久化在
$TRIM_PKGVAR/port.conf(PORT=),读取优先级:系统注入wizard_port>TRIM_SERVICE_PORT>port.conf> 默认8090。
卸载时可在向导中选择保留数据(仅卸载程序,数据保留在 var/、etc/、home/,重新安装可恢复)或删除所有数据(不可恢复)。
默认构建配置为完全本地模式:
PUB_DISABLE_ALL_EXTERNAL_REQUESTS=true
PUB_DISABLE_FAILURE_BLOCKS=true
PUB_VERTD_URL= (视频转换禁用)
PUB_PLAUSIBLE_URL= (统计禁用)
PUB_DONATION_URL= (捐赠禁用)
PUB_STRIPE_KEY= (捐赠禁用)
如需启用视频转换,将 build.ps1 / build.sh 中的 PUB_VERTD_URL 改为
https://vertd.vert.sh 并将 PUB_DISABLE_ALL_EXTERNAL_REQUESTS 设为 false 后重新打包。
注意:
PUB_*为 VERT 编译期环境变量,必须在构建时写入.env,运行期无法修改。
| 变量 | 说明 |
|---|---|
TRIM_APPDEST |
应用目录 (target) |
TRIM_PKGVAR |
运行时数据目录 (var) |
TRIM_SERVICE_PORT |
服务端口 (8090) |
TRIM_USERNAME / TRIM_GROUPNAME |
应用用户/组 (vert) |
TRIM_TEMP_LOGFILE |
系统错误日志(脚本失败信息写入此文件) |
- 点击桌面图标打不开:确认服务已启动(应用中心状态为"运行中"),并检查对应端口未被占用。
- 安装时提示端口被占用:在安装向导中把 Web 访问端口改为空闲端口即可。
- 启动失败:查看系统日志;确认
python3可用(python3 --version)。 - 视频转换不可用:默认隐私模式已禁用外部视频转换服务,按上方说明重新构建。
- 构建时网络慢:GitHub/bun 下载较慢时请重试或配置代理。