FN软仓:不是又一个商店,是开商店的工具
FN软仓:
一个飞牛nas系统(FNOS)的三方应用商店部署系统项目。
它由两半组成:一个能自己部署的服务端,一个装在飞牛里的客户端。
服务端跑起来,你就有了一个"源"。
客户端装进去,你就有了一个"前台"。
两半可以只用一半——不想折腾的人光装客户端就行,只想做后端的人服务器跑起来就能收工。
下面按"有哪几个部件、各自能干什么、五种情况怎么用"来讲。
一、两个部件,四种组合
1.服务端:
是一个 Docker 镜像,默认 5660 端口,IPv4/IPv6 双栈。跑起来之后浏览器打开就是完整后台:上货、开发者、统计、加速线路、推送、邮件,全在里面。
2.客户端:
是一个 FPK,装到飞牛应用中心。它自己不带任何内容,内容全来自它连的"源"。
3.组合起来是四种用法:
四种用法
FN软仓客户端旧版首页二、客户端有两个模式,这个选择决定一切
第一次打开会让你选,之后按这个模式走:
1.用户模式:预置官方源,锁死,删不掉。界面就是个正常商店,搜、看、装、更新。后台每次启动会把官方源地址强制覆盖成默认值,所以旧地址被换掉时你不需要手动改。
2.极客模式:不预置任何源,第一次进来是空的,要你自己填源地址。填几个都行。极客模式启动时还会把残留的官方源槽位清掉,保证列表里只有你放进去的东西。
这就是两种完全不同的产品:
用户模式是"给你一个商店";
极客模式是"给你一个前台,货架自己接"。能接自建的源,也能接友店的源,还能两家一起接。
多个源是并发拉的,合并时按"应用 ID + 平台"去重,同名同平台只留版本高的那个。所以接三个源不会看到三条重复记录。
三、服务端里有什么
四块。
1. 上货:三种方式同时开着
自己传【服务端全托管模式】。 选一个 FPK,服务端把 manifest 拆开,名字、版本、架构、简介、依赖、标签全读出来;图标从包里抽出来,转成 PNG 并压到 2048 以内;上传完应用就在列表里了,不用再填表。上限单包 512MB,批量一次 2GB,截图单独换,单次 64MB。不想下载再上传,就贴个 URL 让服务端自己去拉。
挂外链【服务端半托管模式】。 只登记元数据,下载地址填fpk直链(Git类平台的 Release 或自己的 CDN)。客户端点安装,服务端回 302 把请求甩过去,包不经你的机器。你 NAS 上只多一条记录,不多一个字节。
招商【开发者系统模式】。 开发者申请入驻,你审批,系统发他一个 Token。之后他自己登后台传包、改简介、提版本,提交的改动进审核队列,你点了通过才生效,通过或驳回都会给他发通知。每个开发者自动汇总成一个独立子源,**他不用建仓库、不用买服务器、也不用知道源文件该长什么样**。
2. 分发:一次安装要过四道
客户端点"安装"之后,服务端要决定这个包从哪儿出去:
1. 本地有这个 FPK → 直接给文件
2. 只登记了外链 → 302 跳过去
3. 配了加速线路 → 后台配一批加速站,服务端定时探测(默认 10 分钟一轮,单次探测 10 秒、抓 0.5MB),按实测速度排序,把名次写进下发列表,最多 10 条
4. 客户端逐条试 → 首包 5 秒没动静就换下一条,整轮 50 秒封顶
下载地址是每次请求现算的,不是写死在包里。所以你换线路、加镜像、改目录,已经发出去的客户端不用动。
3. 运营:后台能看到什么
- 下载量:按应用、按天、按平台分开记,同一设备 60 秒内重复下载只算一次
- 设备:客户端 ID、版本、架构(x86/ARM/未知)、在线离线,能筛能导 CSV
- 评分:终端用户打分,后台可看
- 推送:定向消息、强制更新,按设备或版本下发
- 邮件:开发者申请、上架更新、源状态、周报,五个开关各自独立。上架更新在一轮检测里会合并成一封,不会刷屏
- 限速与封禁:按时间窗和请求数限流,超了封一段时间,可以拉白名单
- 备份恢复:整个 data/ 打包带走,恢复时有白名单和路径穿越拦截
4. 开发者:一套完整的分账台
申请 → 审批 → 发 Token → 自助提交 → 变更审核 → 通知 → 数据看板。开发者能看到自己应用的下载量、上架状态、被驳回的原因,也能自己撤回还没审的改动。
这套东西的意义是:你想让别人往你的商店上货,不用先教他写 JSON。

四、五种玩法
玩法一:我只是想装应用
装客户端,选用户模式。结束。
你得到的是:多源缓存、装得稳。图标、预览、安装包都落盘,源站抽风时照样能翻能装(30 天没用到的自动清)。
玩法二:手上有一堆自己攒的包
适合:自己改的包、内部工具、家里人用的东西、不想公开的东西。
1. 一台能跑 Docker 的机器,`docker run` 起服务端
2. 后台批量传包,图标自动抽,不想传就贴外链
3. 客户端选极客模式,把这个源的地址填进去
你可以只让自己用(局域网),也可以开个端口给朋友(公网 + 反代)。数据在你机器上,删了就真没了。
玩法三:我是个开发者,只想发自己的包
两条路,看你想要什么:
想要省事:找已经在运营的源主申请开发者账号。审核过了拿 Token,自己登后台传包,改简介、发新版本都不用等排期,也不用为了一个版本号去改一次仓库。
想要自己掌控:包留在自己的Git类平台的 Release 或自己的 CDN上,只把元数据登记到某个源里,填成外链。**包的所有权在你手上**,哪天不想托管了,撤掉那条记录就行,源主那边一个字节都没存过你的东西。
玩法四:我想做一个对外的商店
这是它作为"模板"的完整形态。

1. 跑docker服务端 + 配BASE_URL和ADMIN_PASSWORD + 反代(可选,Range、302、超时三项要配对)
2. 后台配加速线路(针对Github,可选),服务端自己测速排序
3. 开放开发者入驻,设审核习惯
4. 配邮件,开发者申请、上架、源故障都推到邮箱
5. 客户端选极客模式,源管理填写自己的BASE_URL(可以公布出去给客户端用户用)
后面日常只做两件事:审开发者的提交、看统计。剩下的(选线、测速、图标缓存、封禁)系统自己在跑。

玩法五:我已经有几个源,只想统一看
不部署服务端,只装客户端,极客模式把几个源地址都填进去。
你得到的是一个合并列表:同名同平台取最高版本,图标统一走本地缓存,哪家的源挂了不影响另外几家。相当于给自己做了个聚合前台。
五、跟友店是什么关系
不是竞品,是不同层。这话不是客套。
友店做的是内容运营:把应用聚起来、维护源站、跟着版本更新、扛住流量。这活又累又不讨好,总得有人干。
FN软仓做的是工具。友店愿意,可以拿它当后端;普通用户装了 FN软仓客户端,在极客模式里把友店的源加进来,照样逛、照样装。客户端连图标的地址都做了兼容——友店把加速前缀写死在图片地址里,它也能剥掉重找,图片不会白一片。
所以你装它,不用卸掉别的。它更像个能同时看几家店的前台。
六、从哪开始
想清楚你属于哪种人:
- 只想装应用 → 装客户端,用户模式
- 有自己的包要发 → 起服务端,客户端极客模式接自己
- 只想发自己的包 → 找个源主申请开发者,或者挂外链
- 想运营一个商店 → 起服务端 + 配BASE_URL和ADMIN_PASSWORD + 加速线路 + 客户端填源地址
- 已经有几个源 → 装客户端,极客模式全接进来
商店可以有很多个。开商店的工具,之前没有。
