收起左侧

增加自定义 Docker APP 支持

20
回复
1398
查看
[ 复制链接 ]

2

主题

26

回帖

0

牛值

江湖小虾

2025-10-9 14:54:14 显示全部楼层 阅读模式

增加自定义 Docker APP 支持

背景现状

当前 fn-nas 已支持通过 Docker 部署自定义软件服务,但存在以下问题:

  1. **新增的 Docker 服务无法在 NAS 界面显示。**​用户自行运行的容器不会自动生成 NAS 应用入口或图标。
  2. 无法通过 fnconnect 进行访问转发。
    手动部署的容器无法自动映射至 NAS 的统一访问入口或子域名。

这使得自建 Docker 服务的体验与系统内置 APP 存在较大差异。


期望功能

参考 TraefikHomepageTinyauth 等项目,通过 Docker Label 机制,让容器自动与 NAS 管理界面及 fnconnect 系统集成。

目标实现

  • 通过标准化的 Docker Label:
    • NAS 界面可自动识别并显示相应 APP 图标与入口;
    • fnconnect 自动配置内网与外网的访问转发;
    • 用户可灵活控制哪些服务在 NAS 界面展示。

Label 设计建议

示例:MinIO 管理端

MinIO 是一个常用的对象存储服务,包含两个端口:

  • 9000:对象存储访问接口(API / 用户端)
  • 9001:管理控制台(Web 管理端)

以下示例展示如何让 MinIO 管理端(9001) 通过 fn-nas 自动集成:

labels:
  - "fn.enable=true"
  - "fn.minio-admin.icon=https://min.io/resources/img/logo.svg"
  - "fn.minio-admin.port=9001"
  - "fn.minio-admin.subdomain=minio-admin"

行为说明

Label 说明
fn.enable=true 控制是否在 NAS 界面中显示该容器的应用入口。对于纯后台服务(如数据库等),可省略或设为 false
fn.<name>.icon 指定该应用在 NAS 界面的图标。
fn.<name>.port 指定该应用在容器中的监听端口。
fn.<name>.subdomain 指定 fnconnect 外网访问子域名。

访问行为

环境 访问路径 说明
局域网内 http://<NAS_IP>:9001 使用局域网IP+监听端口号(fn.<name>.port)。
外网(通过 fnconnect) https://minio-admin.<fnconnect_url> 生成子域名转发入口,映射到容器服务。

功能优势

  • 统一的 Docker APP 构建规范​提供通用的 Label 标准,方便社区用户构建可识别的 fn-nas 应用。
  • 🌐 自动集成与访问转发​无需手动配置反向代理或入口,NAS 自动识别并生成访问入口与子域名。
  • ⚙️ 灵活控制显示​通过 fn.enable 控制哪些容器显示在 NAS 界面,满足多种场景(后台、前端、工具类服务)。
  • 🧩 社区生态扩展
    用户与开发者可共享基于 Docker 的 APP,实现生态快速增长。

高级功能建议

1. Auth Middleware

为 Docker Web 应用提供简单的访问控制:

labels:
  - "fn.auth.enabled=true"

当启用该参数时:

  • 系统自动在访问入口前添加统一鉴权;
  • 可与 NAS 用户体系集成;
  • 为无鉴权的 Docker Web 服务提供安全访问保护。

2. 多 Web 界面支持

部分应用(如 MinIO)同时提供多个 Web 界面:

  • API访问端(9000)
  • 管理控制端(9001)

未来可考虑通过扩展 Label 结构来支持多入口显示,例如:

labels:
  - "fn.enable=true"
  - "fn.minio-user.port=9000"
  - "fn.minio-admin.port=9001"

NAS 界面可在应用图标下展示多个入口按钮,以区分不同功能界面。


总结

通过引入基于 Docker Label 的自定义 APP 注册机制,fn-nas 将实现:

  • 自定义 Docker 应用自动显示在 NAS 界面;
  • 内外网统一访问入口(fnconnect 自动转发);
  • 灵活显示控制与潜在多入口扩展;
  • 可选的统一认证保护;
  • 促进社区贡献更多 Docker 应用,增强系统可扩展性。
收藏
送赞 8
分享

6

主题

1万

回帖

0

牛值

管理员

社区上线纪念勋章社区共建团荣誉勋章飞牛百度网盘玩家fnOS1.0上线纪念勋章

2025-10-17 17:30:13 显示全部楼层

感谢反馈,这个我们转给技术评估一下

这里是我做的一个该方案 Demo  详情 回复
2025-11-13 20:40

2

主题

26

回帖

0

牛值

江湖小虾

2025-11-13 20:40:34 楼主 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=186964&ptid=39477][color=#999999]飞牛产品同学 发表于 2025-10-17 17:30[/color][/url][/size] 感谢反馈,这个我们转给技术评估一下[/quote]

这里是我做的一个该方案 Demo

2

主题

40

回帖

0

牛值

江湖小虾

2025-11-14 10:04:45 显示全部楼层

很好的方案,也算是解开了我对官方docker访问的疑问

2

主题

6

回帖

0

牛值

江湖小虾

2025-11-17 12:32:26 显示全部楼层

我觉得 不只是用于Docker快捷方式,可以直接用户自定义图标 和链接 是最好了

这个实现难度不大, 只是从读取docker label外额外通过配置文件读取就可以,增加一个配置文件的前端管理页面也很容易,这只是一个初步的提案  详情 回复
2025-11-17 21:30

2

主题

26

回帖

0

牛值

江湖小虾

2025-11-17 21:30:56 楼主 显示全部楼层
    浮生. 发表于 2025-11-17 12:32
我觉得   不只是用于Docker快捷方式,可以直接用户自定义图标 和链接   是最好了
...

这个实现难度不大, 只是从读取docker label外额外通过配置文件读取就可以,增加一个配置文件的前端管理页面也很容易,这只是一个初步的提案

5

主题

68

回帖

0

牛值

系统先锋体验团🛩️

fnOS1.0上线纪念勋章

2025-11-27 16:41:48 显示全部楼层

这个方便啊,一键生成桌面图标了

8

主题

84

回帖

0

牛值

fnOS系统内测组

2025-11-28 09:09:33 显示全部楼层

期待,希望官方能够纳入系统。

Docker能够实现的功能太多了。希望官方给予方便,直接能生成桌面图标。

7

主题

186

回帖

0

牛值

小有名气

fnOS1.0上线纪念勋章社区上线纪念勋章

2025-11-28 16:49:14 显示全部楼层
好厉害,但是在进化一步,增加飞牛官方的宽带使用,哈哈
哪里都看到你  详情 回复
2025-11-29 16:29

4

主题

279

回帖

10

牛值

系统先锋体验团🛩️

2025-11-29 16:29:18 显示全部楼层
屯屯鼠 发表于 2025-11-28 16:49
好厉害,但是在进化一步,增加飞牛官方的宽带使用,哈哈

哪里都看到你
2025-12-9 16:01:43 显示全部楼层

简单添加 Labels 后,docker 应用瞬间显示在桌面和官方应用商店,还可以通过 fnconnect 进行访问转发。神来之笔! 这样应用生态一下丰富起来!

4

主题

39

回帖

0

牛值

初出茅庐

fnOS1.0上线纪念勋章

2026-1-10 19:21:42 显示全部楼层

这个不错

0

主题

14

回帖

0

牛值

江湖小虾

2026-2-13 16:32:21 显示全部楼层

已经用cow部署好两个docker了,现在遇到个问题。就是制定拉取的图标为什么在飞牛桌面就是不成功?统一都是飞牛的默认牛头图标是哪里配置没写对吗?

labels:
  # WatchCow 配置(自动注册为 fnOS 应用)
  watchcow.enable: "true"
  watchcow.appname: "watchcow.navidrome"
  watchcow.display_name: "Navidrome"
  watchcow.desc: "开源音乐服务器,支持多设备访问和流媒体播放"
  watchcow.version: "0.59"
  watchcow.service_port: "4533"  # 宿主机端口
  watchcow.protocol: "http"
  watchcow.path: "/"
  watchcow.ui_type: "url"
  watchcow.icon: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@main/png/navidrome.png"

watchcow.icon:这里网页直接访问能打开的,但是写进compose里貌似并没有工作
image.png依旧是这个默认图标。

擦……怎么下面发了这么多?还删不掉……麻烦管理处理下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

14

回帖

0

牛值

江湖小虾

2026-2-13 16:33:18 显示全部楼层

已经用cow部署好两个docker了,现在遇到个问题。就是制定拉取的图标为什么在飞牛桌面就是不成功?统一都是飞牛的默认牛头图标是哪里配置没写对吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

14

回帖

0

牛值

江湖小虾

2026-2-13 16:33:57 显示全部楼层

已经用cow部署好两个docker了,现在遇到个问题。就是制定拉取的图标为什么在飞牛桌面就是不成功?统一都是飞牛的默认牛头图标是哪里配置没写对吗?

labels:
  # WatchCow 配置(自动注册为 fnOS 应用)
  watchcow.enable: "true"
  watchcow.appname: "watchcow.navidrome"
  watchcow.display_name: "Navidrome"
  watchcow.desc: "开源音乐服务器,支持多设备访问和流媒体播放"
  watchcow.version: "0.59"
  watchcow.service_port: "4533"  # 宿主机端口
  watchcow.protocol: "http"
  watchcow.path: "/"
  watchcow.ui_type: "url"
  watchcow.icon: "[img]https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@main/png/navidrome.png[/img]"

watchcow.icon:这里网页直接访问能打开的,但是写进compose里貌似并没有工作依旧是默认图标。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

14

回帖

0

牛值

江湖小虾

2026-2-13 16:34:16 显示全部楼层

已经用cow部署好两个docker了,现在遇到个问题。就是制定拉取的图标为什么在飞牛桌面就是不成功?统一都是飞牛的默认牛头图标是哪里配置没写对吗?

labels:
  # WatchCow 配置(自动注册为 fnOS 应用)
  watchcow.enable: "true"
  watchcow.appname: "watchcow.navidrome"
  watchcow.display_name: "Navidrome"
  watchcow.desc: "开源音乐服务器,支持多设备访问和流媒体播放"
  watchcow.version: "0.59"
  watchcow.service_port: "4533"  # 宿主机端口
  watchcow.protocol: "http"
  watchcow.path: "/"
  watchcow.ui_type: "url"
  watchcow.icon: "[img]https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@main/png/navidrome.png[/img]"

watchcow.icon这里网页直接访问能打开的,但是写进compose里貌似并没有工作依旧是默认图标。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
可能是网络问题, https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@main/png/navidrome.png 这个cdn国内网络访问不一定稳定,可以尝试弄到本地,然后构建之后清楚一下浏览器的缓存  详情 回复
2026-2-13 20:25

2

主题

26

回帖

0

牛值

江湖小虾

2026-2-13 20:25:30 楼主 显示全部楼层
gurenn 发表于 2026-2-13 16:34
已经用cow部署好两个docker了,现在遇到个问题。就是制定拉取的图标为什么在飞牛桌面就是不成功?统一都是 ...

可能是网络问题, https://cdn.jsdelivr.net/gh/homa ... n/png/navidrome.png 这个cdn国内网络访问不一定稳定,可以尝试弄到本地,然后构建之后清楚一下浏览器的缓存
非常怪异,这是两个docker的配置,我现在都把它指向到本地存储的图标位置。刮削那个图标生效了,但是navidrome图标依然无效,其他配置几乎一模一样。  详情 回复
6 天前

0

主题

14

回帖

0

牛值

江湖小虾

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=256115&ptid=39477][color=#999999]星河流放 发表于 2026-2-13 20:25[/color][/url][/size] 可能是网络问题, https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@main/png/navidrome.png 这 ...[/quote]

image.png

非常怪异,这是两个docker的配置,我现在都把它指向到本地存储的图标位置。刮削那个图标生效了,但是navidrome图标依然无效,其他配置几乎一模一样。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
watchcow.ui_type是这句里的问题吗?url。但是为什么刮削docker也是用URL但是图标能加载出来?  详情 回复
6 天前

0

主题

14

回帖

0

牛值

江湖小虾

gurenn 发表于 2026-2-15 14:26
非常怪异,这是两个docker的配置,我现在都把它指向到本地存储的图标位置。刮削那个图标生效了,但是nav ...

watchcow.ui_type是这句里的问题吗?url。但是为什么刮削docker也是用URL但是图标能加载出来?
ui_type是控制跳转新窗口和iframe的, 你的情况大概率是浏览器缓存  详情 回复
6 天前

2

主题

26

回帖

0

牛值

江湖小虾

6 天前 楼主 显示全部楼层
gurenn 发表于 2026-2-15 14:35
watchcow.ui_type是这句里的问题吗?url。但是为什么刮削docker也是用URL但是图标能加载出来? ...

ui_type是控制跳转新窗口和iframe的, 你的情况大概率是浏览器缓存
好像确实是,今到设置里的应用这里已经能看到图标加载正常了,但是桌面的图标就是无法正常加载。问题是浏览器的缓存我已经在EDGE的设置里完全清过了,但是依旧如此。和你说的浏览器缓存是一个问题吗?  详情 回复
5 天前

0

主题

14

回帖

0

牛值

江湖小虾

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=256937&ptid=39477][color=#999999]星河流放 发表于 2026-2-15 23:09[/color][/url][/size] ui_type是控制跳转新窗口和iframe的, 你的情况大概率是浏览器缓存[/quote]

image.png

好像确实是,今到设置里的应用这里已经能看到图标加载正常了,但是桌面的图标就是无法正常加载。问题是浏览器的缓存我已经在EDGE的设置里完全清过了,但是依旧如此。和你说的浏览器缓存是一个问题吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则