项目简介
实现将任意 Docker 容器应用一键添加至飞牛 OS(fnOS)桌面,安装专属 .fpk应用包后自动生成桌面快捷图标,可视化绑定 Docker 服务,点击图标可直接跳转对应服务页面。
核心功能特性
一、基础安装与管理入口
- 应用中心标准化安装
上传 .fpk安装包即可,依托 fnOS 官方 app_service机制自动注册桌面入口,安装完毕桌面直接生成程序图标。
- 可视化 Web 管理面板
无需登录 SSH 终端,访问地址:http://<NAS_IP>:5558/,也可直接双击桌面图标一键打开;面板内完成全流程可视化配置。
- 双操作模式兼容
图形化面板 + SSH 命令行工具 /usr/fn-docker-desk/fn-docker-desk.sh并行使用。
二、Docker 容器桌面管理
- 自动扫描列出本机全部正在运行的 Docker 容器、端口映射信息;
- 一键执行「添加至桌面」「移除桌面图标」;
- 支持自定义配置:桌面显示名称、访问端口、自定义图标(本地上传图片 / 填入图片 URL)。
三、智能图标自动匹配(四级优先级兜底)
- 从容器内部文件抓取 favicon 图标(通过
docker cp读取常见图标路径);
- 访问容器 Web 服务自动抓取网页 favicon;
- 内置 30 + 主流应用图标库(ghproxy、jsdelivr 网络加速);
- 兜底方案:生成文字首字母渐变风格占位图标。
四、桌面注入稳定保障
- 适配多版本 fnOS 前端选择器,搭配特征探测容错机制;
- 依托
MutationObserver实时监听页面变化,桌面 React 前端重渲染后自动恢复自定义图标;
- 每次修改系统网页文件前自动备份至路径
/usr/fn-docker-desk/backup/;
- systemd 托管后台服务,设备开机自动执行注入配置,重启配置不丢失。
五、安全备份与一键还原机制
- 前置自动备份:修改系统 Web 资源前自动归档备份;
- 一键还原逻辑优化:
- 仅清除用户自行添加的 Docker 桌面图标,保留本程序自身桌面入口;
- 不会整体覆盖系统原生安装包,保护应用商城内已安装的官方应用;
- 还原后锁定 “纯净还原模式”,不会自动重建图标,重新添加容器即可恢复使用;
- 配套操作日志查看、备份文件下载、历史记录一键回滚。
安装方式
方式一:应用中心手动安装(推荐)
- 下载安装包:
fn-docker-desk_1.0.6_all.fpk;
- 登录 fnOS 桌面,打开「应用中心」→左下角「手动安装」;
- 上传 fpk 文件并确认安装;
- 安装完成桌面自动出现「飞牛桌面图标」快捷方式,点击进入管理面板;
- 若程序未自动启动,进入应用中心找到对应应用手动点击启动。
方式二:SSH 命令行安装
bash
sudo appcenter-cli install-fpk /path/to/fn-docker-desk_1.0.6_all.fpk --volume 1
sudo appcenter-cli start fn-docker-desk
使用指南
1、Web 管理面板
访问 http://<NAS_IP>:5558/,面板划分三大功能分区:




| 栏目 |
核心功能 |
| 运行中的容器 |
展示容器名称、镜像来源、映射端口;点击「添加到桌面」弹窗自定义配置 |
| 桌面图标 |
已绑定的桌面快捷方式列表,支持一键移除指定图标 |
| 系统文件备份 |
历次系统文件修改的备份记录,支持下载存档查看 |
顶部快捷按钮:应用配置生效、一键还原原生桌面、页面刷新。
配置新增 / 删除图标后,浏览器按下 Ctrl+Shift+R 强制刷新桌面即可生效。
2、SSH 命令行使用
配置快捷调用别名
bash
fn-docker-desk() { bash /usr/fn-docker-desk/fn-docker-desk.sh "$@"; }
常用示例指令
bash
# 查看所有运行中容器
fn-docker-desk list
# 一键添加容器至桌面(自动识别端口、图标)
fn-docker-desk add jellyfin
# 自定义名称、端口、图标添加容器
fn-docker-desk add jellyfin --name "我的影视库" --port 8096 --icon https://example.com/jellyfin.png
# 添加自定义网页链接图标
fn-docker-desk add-custom --title "导航主页" --url http://192.168.31.200:8080
# 查看已添加桌面图标
fn-docker-desk ls
# 查看备份列表
fn-docker-desk backups
# 一键还原桌面
fn-docker-desk restore
完整命令对照表
表格
| 命令 |
功能说明 |
list |
枚举运行中容器,自动解析服务访问地址 |
add <容器名> [可选参数] |
将指定容器绑定桌面,支持自定义名称、端口、图标地址 |
add-custom |
创建独立自定义网页链接桌面图标 |
remove <序号/图标名称> |
删除指定桌面图标 |
ls |
查看当前已挂载的全部桌面图标 |
backups |
查看系统文件历史备份清单 |
apply |
将当前配置重新注入桌面并持久化保存 |
status |
查看程序后台运行状态 |
restore |
一键恢复 fnOS 原生干净桌面 |
技术实现原理
- 程序注册
遵循 fnOS 官方 fnpack 打包规范,安装时写入 ui/config配置,同步写入 PostgreSQL 数据库 appcenter数据表,应用中心识别后生成程序原生桌面图标。
- 前端脚本注入
程序启动后向系统文件 /usr/trim/www/index.html注入 JS 脚本(携带版本标识避免重复注入),同时修补系统还原包 /usr/trim/share/.restore/www.zip,防止系统重置配置丢失。
- 桌面渲染逻辑
注入脚本监听桌面渲染完成,读取配置文件 /userimg/fn-docker-desk.json,动态生成和原生图标结构一致的跳转链接;配置读取失败时回退至后端接口 /api/icons拉取数据。
- 持久化保障
systemd 守护进程 fn-docker-desk.service开机自动执行注入;用户配置、备份数据存放于持久卷 /usr/local/apps/@appdata/fn-docker-desk,重装、升级应用数据不会丢失。
内置自动适配图标清单(30 + 主流应用)
jellyfin、emby、plex、alist、qbittorrent、transmission、aria2、portainer、nginx、mysql、mariadb、postgres、redis、mongodb、nextcloud、homeassistant、n8n、gitea、gitlab、grafana、prometheus、uptime、vaultwarden、immich、photoprism、syncthing、frp、ddns-go、watchtower、code-server、jenkins、sonarr、radarr、nastool
版本迭代记录
表格
| 版本号 |
更新内容 |
| 1.0.6 |
遵循官方 fnpack 规范打包,修复程序自身桌面图标无法注册问题;2. 修复脚本 CRLF 换行格式异常 |
| 1.0.5 |
一键还原保留本程序图标,仅清理用户自定义图标;2. 管理面板屏蔽自身图标,仅管理用户添加项 |
| 1.0.4 |
修复还原操作误杀后台进程;还原后锁定纯净还原状态 |
| 1.0.3 |
还原操作彻底清空图标配置、持久卷数据与本地备份记录 |
| 1.0.2 |
优化还原逻辑,不再覆盖系统原始资源包,保护商城已装应用;清理持久卷备份数据 |
| 1.0.1 |
修复点击桌面图标被浏览器弹窗拦截的问题 |
| 0.x 初始版 |
基础能力:容器探测、图标自动抓取、前端注入、基础一键还原功能 |
常见问题排查
-
添加后桌面图标不显示
绝大多数为浏览器缓存导致,按下快捷键 Ctrl+Shift+R 强制刷新页面即可。
-
fnOS 系统升级后自定义图标消失
系统升级会覆盖前端页面文件,进入应用重启程序,或执行命令 apply 重新注入配置。
-
fnOS 大版本更新后图标失效
桌面前端 DOM 结构、CSS 选择器发生变更,等待工具适配新版本选择器即可。
-
执行一键还原后想要重新使用
还原后进入纯净锁定模式,在 Web 面板重新添加任意容器图标,自动解除锁定恢复正常使用。
声明:此应用是图省事用ai写的。目前测试未发现问题。因免费共享,对使用本软件出现的一切问题概不负责。
重要注意事项
- 本工具会修改 fnOS 系统 Web 目录文件(
/usr/trim/www/index.html),属于非官方层面深度定制操作;
- Web 管理面板未内置账号鉴权,仅限内网可信环境使用,异常情况可随时执行一键还原恢复系统原状;
- 还原机制安全隔离,不会卸载本程序、不会破坏应用商城内官方安装的应用。