FilesCodeBox(文件快递柜)的飞牛 fnOS 应用适配层——单容器库式集成 FilesCodeBox 全部业务,包装为可在飞牛 NAS 应用中心安装的第三方应用,并接入飞牛 Open API。
🗂️ FilesCodeBox 生态成员仓 · 应用包统一发布在 hub 仓 Releases(
fnos-v*资产)
| 能力 | 说明 | 状态 |
|---|---|---|
| 一键安装 | fnpack 标准应用包,应用中心托管启停/升级 |
✅ fnpack 1.2.3 打包通过 |
| 业务全功能 | 单进程库式调用 core bootstrap.Bootstrap(),文本/文件分享、取件码、多云存储全部可用 |
✅ |
| 数据落 NAS | 上传文件 + SQLite + Redis AOF 全部落在用户可见的共享目录,文件管理器可直接查看/备份 | ✅ |
| 开箱即用 | JWT 密钥自动生成并持久化;内置 Redis(取件码依赖);安装向导收集可选凭证 | ✅ |
| 降级模式 | 未配置飞牛凭证时,飞牛集成关闭、业务完整运行 | ✅ |
| SSO 免登录 | 飞牛账号一键登录映射为本系统用户 | 🔜 待凭证 |
| 通知中心 | 分享事件推送飞牛通知 | 🔜 待凭证 |
| 共享目录存储 | 读取 NAS 共享文件夹作为存储后端选项 | 🔜 待凭证 |
┌──────────────── fnos-adapter 二进制(容器入口)────────────────┐
│ │
HTTP 12345 ──►│ bootstrap.Bootstrap() ──► *server.Hertz (FilesCodeBox 全业务)│
│ │ ▲ │
│ └── adapter.Mount(h, cfg) ─────┘ 挂载 /api/fnos/* │
│ (SSO/目录/通知/穿透) │
└──────────────────────────────────────────────────────────────┘
│ │
/app/data ◄──┘ (上传文件+SQLite+JWT密钥) /app/data ◄── redis AOF
└────────────── ${TRIM_PKGVAR} ──────┘ (NAS 共享目录)
- 库式调用:同进程
import+ 函数调用bootstrap.Bootstrap(),零跨进程开销 - 不侵入:不修改 core 原有路由,飞牛能力以独立路由组
/api/fnos/*注入(降级模式统一 503)
- 从 hub 仓 Releases 下载
fnos-v*资产中的filescodebox.fpk(或自行 打包) - 飞牛应用中心 → 手动安装 → 上传 fpk,按向导完成安装(飞牛凭证可留空,随时在应用设置补填)
- 桌面入口打开即用;数据在应用数据目录(NAS 共享路径)下的
data/(业务)与redis/(取件码)
要求:fnOS 设备可拉取
ghcr.io/filescodebox/fnos(x86/ARM 均可,镜像多架构)。
docker run -d --name filescodebox -p 12345:12345 \
-v ./data:/app/data \
-e FCB_SERVER_HOST=0.0.0.0 -e FCB_PRODUCTION=1 \
ghcr.io/filescodebox/fnos:1.2完整编排(含 Redis、健康检查、密钥引导)见 fnos/app/docker/docker-compose.yaml。
# 安装 fnpack: https://developer.fnnas.com/docs/cli/fnpack/
cd fnos && fnpack build # 产物 filescodebox.fpkfnos/ 目录即应用包定义,已对齐飞牛官方规范(manifest / app/docker / app/ui 入口+图标 / cmd 生命周期脚本 / wizard 向导 / config 资源与权限)。CI 每次推送都会跑 fnpack build 校验并产出 fpk 构件。
注意:compose 内镜像 tag 写死 major.minor(如 1.2),发版时须与 manifest 的 version 同步更新。
本仓已纳入 filescodebox 装配仓的 go.work:
# 工作区内(hub 根 make setup 拉齐全部模块仓后):联编本地 core main
cd fnos && go build ./... && go test ./...
# 独立构建:钉 go.mod 正式版本(与 CI/Docker 一致)
GOWORK=off go test ./...
# 降级模式运行(业务全功能,飞牛能力关闭)
go run ./cmd/fnos-adapter
# 启用飞牛能力(需凭证)
FNOS_ENABLED=true FNOS_APPID=xxx FNOS_APPSECRET=yyy go run ./cmd/fnos-adapter或使用 make build / test / run / fpack / docker。
fnos/
├─ cmd/fnos-adapter/ 容器入口:JWT 密钥引导 + 库式拉起 + 挂载 adapter
├─ adapter/ 飞牛 Open API 适配层(/api/fnos/*)
│ ├─ internal/fnosconfig/ 配置加载(独立子包,无环)
│ ├─ internal/client/ 飞牛 API 统一 HTTP client(签名/重试待文档)
│ └─ sso/ storage/ notify/ tunnel/ 各能力模块(凭证就绪后填实)
├─ fnos/ 飞牛 .fpk 应用包定义(官方规范)
│ ├─ manifest 应用元数据(version/platform/入口/端口)
│ ├─ app/docker/ 容器编排(app + 内置 redis,官方 TRIM_* 占位符)
│ ├─ app/ui/ 桌面入口(config)与图标(images/)
│ ├─ cmd/ 生命周期脚本(install/upgrade/uninstall/config)
│ ├─ wizard/ 安装/配置向导(飞牛凭证与 JWT 密钥)
│ └─ config/ 权限(privilege)与资源(resource: docker-project)
└─ Dockerfile 多架构镜像构建(amd64/arm64)
| 本仓 | core | 说明 |
|---|---|---|
| v1.2.2 | v0.10.0 | 跟随 core v0.10.0 安全审计加固;测试 -race 门禁;版本注入上收 kit/version |
| v1.2.1 | v0.8.0 | core 对齐(P2P 联邦接入;fnos 依赖面仅 bootstrap+logger,行为无变化) |
| v1.2.0 | v0.7.6 | 版本号与 desktop/charts 统一起始版;compose 镜像 tag 对齐 major.minor :1.2 |
| v0.3.x | v0.7.6 | 仓改名 fnos——镜像路径切换 ghcr.io/filescodebox/fnos,go module path 同步 |
| v0.2.x | v0.5.0 → v0.7.6 | 上传治理/多云存储/P0 修复;fnpack 规范化 + 内置 Redis + 向导;0.2.6 升 core v0.7.6 |
镜像:ghcr.io/filescodebox/fnos(tag 跟随 Release;0.2.x 及更早镜像名为 filescodebox-fnos、0.1.x 为 filecodebox-fnos,均已冻结)。
- SSO:
sso/sso.goticket → 飞牛用户 → 本系统用户 → JWT(待飞牛凭证与 Open API 文档) - 通知中心、共享目录存储、外网分享链接(同上)
- fnOS 真机全流程验证(安装→向导→升级→卸载)
- 飞牛应用中心上架(开发者后台未开放前经官方交流群提交)
filescodebox(装配仓)· core(业务核心)· server(独立部署壳)· frontend · charts(Helm)