今天有大事儿想分享一下,自打我做 NAS 和 Docker 科普以来,心里其实一直有一个目标。那就是让 NAS 成为一台真正家电产品,让每个人都拥有自己的数据中心、服务中心、智能家电网关。
这个想法伴随而来的行动,就是我开始用 AI 开发一些容器相关应用,目的就是让 NAS 里的 docker 服务越来越易用、越来越好用。
比如 dockports ,将容器管理里非常头痛的端口问题进行了可视化;比如 compose2docker,将存量 docker 一键导出、备份为 docker-compose.yaml 文件,方便存档恢复。
在之后,经过半年多的时间沉淀,我觉得可以把自用的 Docker 管理面板 —— TRADIS 摆上台来分享一下了。
TRADIS 取自于英剧 Doctor WHO 里的飞船 TRADIS,作为一个影视剧的忠实粉丝,觉得 Bigger inside 这句话非常使用 docker 容器。
因为我日常使用最多的 NAS 就是极空间,所以首批我适配了极空间的产品,并且对路径做了一些优化。

这个项目的初衷非常简单,就是让每个人都可以最简单的部署任何应用,而不用再找教程,直接在应用里就可以查到你想要的任何应用,然后一键部署,并且方便管理。
是的,我又干这种自掘坟墓的事儿了。我是吃这碗饭的呀!!!!
不过没关系,应用是应用,账号是账号,我觉得大家关注我也并不是因为我每天分享几个 docker 应用那么简单,而是因为我会挑选出更好的内容分享、因为我会根据我的真实感受分享。
一。Docker 管理
我将 Docker 管理分为 Compose、容器、镜像、数据卷、网络、端口六大类。
Compose 是最核心的管理功能,里面提供了性能监控、基础管理、一键更新、日志查询、Git 项目一键部署等功能,会同时展示 Compose 应用和 Docker 容器(以独立应用展示)。

compose 会提供一个详细的抽屉式卡片名单,支持对应用下的单独容器进行管理。

容器页面,会更关注单个容器输出的端口信息。整体上会更偏向一个内容查询,日志管理,终端维护的能力。

默认提供列表、卡片两种展示方式,丰富大家的展示效果。

镜像页面,重点是围绕镜像更新检测、镜像一键更新,以及镜像对应容器的管理。

如果映射了 deamon 文件的,还可以在这里配置内置的镜像加速地址,解决很多新手说的无法下载容器镜像的问题。

数据卷部分,则是围绕 docker volume 来做的。最核心的两个功能,就是容器卷文件浏览和容器卷备份。
前者支持通过浏览器页面打开查看 docker volume 内的文件,实现下载、管理;后者则通过定时任务,支持将重要的 docker volume 备份到本地、云端。

端口管理在某种意义上,是集成了我之前做的 dockports 功能,把宿主机、容器的所有端口都展示在了一起,支持设置展示范围、自动分配端口、维护端口对应服务等等。

既然有了端口,那肯定得有导航。于是我又做了一个内置 AI 功能,可以自动根据端口去发现、生成所有 HTTP 服务并形成导航。
AI 会自动进行图标生成、项目分类,并且在维护过内外网基础配置后,可以通过导航页一键打开不同网络环境下的服务地址。

🔻应用整体备份

🔻Docker 空间清理

二。服务
Docker 管理只是基础功能,因为我对 TRADIS 更深入的开发还在于服务,这里包含了 AppStore 服务、Github 应用服务、NAS 选购、教程、AI 部署、定时任务。
AppStore 是重点,我正在不断的完善和填入一些精选应用,让大家可以通过商城一键点击部署需要的容器应用。

这个 AppStore 的模板,我也开源到了 Github,这意味着所有遵循一套 JSON 的用户都可以自己维护和分享自己的模板。这些第三方模板可以通过设置里去添加,会很开放。

我会提前把需要人工确认的部分做成基础配置(也就是需要修改的),把不需要额外设置的做成高级配置(建议默认)。
如果开启了端口自动分配,那么甚至路径、端口都是全自动的点击部署就可以了。当然,部署本身也支持高级模式,可以直接对 yaml 文件进行修改、完善,已符合自己的使用需要。

AppStore 是基础功能。在此基础之上,我又做了一个更专业的工具。它可以根据用户需要自动从 Github 上发现某一类的项目,这些项目会自动生成中文简介。
当需要部署的时候,通过内置的 docker Agent 一键进行部署。

没错,AI 部署是 TRADIS 的核心功能,也是我当前版本在一直优化的东西。它基于一个 harness 后端任务,支持 git 导入部署、Github 应用发现部署、对话部署等多种方式,由 AI 根据 MCP 协议,有权限的操作 NAS 部署特定容器。

这个 MCP 协议也是 TRADIS 项目内置的,它基于应用内更底层的函数,有特定的权限、高危提醒,可以作为内置服务调用,也可以发布到局域网内供 WorkBuddy、Hermes 等外部 Agent 使用。具体的 MCP 能力可以在系统里点击查看。

那既然是我做的应用,我肯定会把自己原来的一些教程放进去。所以我又做了一个教程模块,通过 RSS 可以订阅我的账号内容,教程原封不动,支持 AI 总结。如果你看过教程,觉得有意思,可以一键将教程发给 AI 进行部署。
RSS 源,也支持第三方接入。

现在呢,我还在收拢一些定时任务,单独做了一个定时任务中心,提供容器的启停、镜像更新、构建缓存清理等等能力,可以让应用实现更自由的操作。


最后,项目嘛,有基础服务,有增值服务。所以我在思考如何做这些增值服务。
首先想到的是做了一个 NAS 导购,里面会增加市面上主流的 NAS 产品型号,并且实时更新优惠价格。里面支持不同产品的对比、专题推荐、周边购买等等,当然链接里面我会增加一个返佣链接,如果通过返佣下单的,我另外赚点返利的钱。
我始终认为,成品 NAS 的服务、质量、能力是会高于 DIY 产品的。但是 DIY 也是大家接触的一种方式,所以诸如机柜、DIY 产品也会在我的导购清单内。

第二个增值服务,就是订阅。我为部分高级功能,比如 Github 应用、AI 部署配置了订阅权限,这个只是我的一个计划,未来功能如何分配、订阅价格等等我都还没想好。
所以我当下 GO 订阅会不限量提供,这里先生成了 200 个名额 TRADIS-UZ47VNI8-FHWJYM1E-SN1QLIFH-VAZ8ILBV TRADIS-AKBQ7EQO-AFBQR1CR-V17NGJLZ-FSCQJZL8大家可以自行激活。

三。极空间部署 TRADIS
介绍完应用,我们最后再来说说如何在极空间里部署。
其实这个项目开发的时候,当时主要是想解决极空间 docker 内一些问题的,比如路径问题、compose 文件目录问题等等。
但是做着做着,没想到极空间最近 ZOS 更新大爆发,好多问题直接在系统层级就解决掉了,我也就顺带把这些服务做成了通用版本。
打开极空间 Docker 应用,创建一个 Compose 项目,在配置好项目的名字和存储位置后,先点击代码框上方额度查询路径。

这里要查询两个路径。
第一个路径用来保存 tradis 这个项目自己的数据(不建议放到其它 docker 下面,可以放,就是有点别扭)

第二个路径是平时在 NAS 里存放 docker 容器的目录,后续 tradis 会同步接管这些 compose,兼容极空间私有云内置的 docker 管理工具。
后续所有通过 tradis 部署的项目都会保存到这里。

最后,把两个路径分别填入下面的代码里,启动 Compose 即可。
services: tradis: image: coracoo/tradis:latest container_name: tradis network_mode: host restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock # 必备 #- /etc/docker/daemon.json:/etc/docker/daemon.json # 可选修改加速 - /路径1:/app/client/backend/data # 容器自身数据存储位置 - /路径2:/app/client/backend/project # compose 项目存储位置 - /备份路径3:/备份路径3 # 建议相同 environment: - BACKEND_PORT=33335 # 自定义 webui 端口 - PROJECT_ROOT=/路径2 # 和 volumes 里的路径2保持一致 - JWT_SECRET=change-me-min-32-characters - BACKUP_ROOT=备份路径3这里再来一个小技巧,daemon.json 第一次部署的时候必须要注释掉,然后回头去修改 NAS 里存在 yaml 文件再重新部署就可以用了。
这个只影响镜像加速、代理、仓库这些功能,这一套功能在极空间内置 docker 里也有,所以是否映射都问题不大。

写在最后
最后就是项目本身前期用户并不多,虽然镜像被下载超过了 50K+,但是真正和我在反馈交流的只有个别小伙伴,所以大部分功能都是根据我自己的使用需求来做的。
一定会存在一些想当然的地方,以及边边角角不完善的地方,包括服务端的网络、流量等我不知道的问题,整个工具目前还是beta频繁改版的过程中,也非常欢迎大家及时反馈问题,让我可以及时优化改进。
