小米路由器Docker部署可道云:零成本搭建家庭私有网盘
2026/9/16 9:02:42 网站建设 项目流程

家里这台小米万兆路由器上岗之后,干得最多的活儿不是跑满万兆内网,反而是待在弱电箱里默默跑Docker容器。起因很朴素:一块淘汰笔记本上拆下来的2.5英寸机械硬盘一直在抽屉里吃灰,加上前几年买过的云盘会员到期后没再续,几十G的文档和照片散落在三台设备上,找起来相当痛苦。于是我把目光投向了这台常年通电、自带万兆网口、内存还不算小的小米万兆路由器——与其再花两三千块搞一台NAS,不如先用Docker在路由器里装一个可道云(Kodexplorer)私有网盘,把家庭轻量数据共享这件事跑起来。

这篇文章会把从开启Docker、准备外置存储、创建可道云容器,到调优和解决运行一个月后遇到的各类问题的完整过程都整理出来。适合手里正好有支持Docker的小米路由器、又不想为轻度网盘需求额外添置硬件的人参考,也适合刚接触Docker、想找一个轻量容器练手的朋友照着操作。整篇文章的核心思路就一句话:路由器这种低功耗常驻设备,不用来跑私有网盘属实可惜,但选对软件、规划好存储路径、把坑提前避开,才能真正稳定用起来。

1. 部署前先想清楚:路由器做网盘的边界在哪

1.1 小米万兆路由器的Docker到底能做多重的活儿

小米万兆路由器定位在高端家用路由,它的硬件底子决定了它不是一个全功能NAS,但扛住轻量容器完全没问题。你要先建立这个预期:Docker环境运行的是像可道云这类轻量应用,做文件存储、在线预览、相册备份很合适;但如果想在上面跑GitLab、视频转码服务、大型数据库这类重负载任务,CPU和内存很快会吃紧,发热量也会让你心里没底。

我个人的体会是,把路由器Docker当作“常驻在弱电箱里的轻量服务器”来用,心态就对了。它最大的优势有两个:第一,7x24小时在线,家里网络不断它就不断,比开着台式机当网盘要省电得多;第二,不占额外空间、没有风扇噪音,功耗只有几瓦到十几瓦,整体成本几乎为零。一个很直观的对比是,一台入门级NAS的起售价往往在一千块以上,而且同样是ARM架构、同样是低功耗设计,性能未必比这台路由器的处理器强多少。所以只要应用选得足够轻,这条路完全走得通。

1.2 可道云Kodexplorer为什么比Nextcloud更适合路由器

市面上的私有网盘方案不少,常见的是Nextcloud、ownCloud、可道云(Kodexplorer)和它的新版本KodBox。很多人一上来就想着上Nextcloud,因为它名气大,但这里我强烈建议路由器场景优先考虑可道云,原因有两点。

一是依赖复杂度。Nextcloud不是单纯一个PHP应用,它还需要搭配数据库(MySQL/MariaDB或PostgreSQL)、Redis缓存等组件,Docker部署时往往要同时起三四个容器,对路由器的内存和闪存都是不小负担。而可道云Kodexplorer的开源版是一个单容器应用,核心程序只依赖PHP运行环境,不需要外部数据库,文件索引直接走文件系统,部署和迁移都极其简单。

二是资源占用。可道云Kodexplorer镜像体积小,运行内存占用通常在几百MB以内,和一台同时跑数据库+Web服务的Nextcloud容器组相比压力小得多。至于KodBox——它是可道云的新一代产品,界面更现代、功能更丰富,但底层依赖更多,镜像也更大,放在路由器上明显不如Kodexplorer轻盈。对路由器这种内存按GB算、闪存可能只有几个GB的环境来说,“够用且轻”是第一原则。

1.3 开工前的硬性条件清单

如果你想复现这个方案,先对照一下手里的条件:

  • 一台支持Docker的小米路由器,常见的是小米万兆路由器、小米路由器AX9000等偏高端型号,方向正确的前提下,固件需要升级到包含Docker服务的最新版本
  • 路由器上至少有一个可用的USB接口,建议USB 3.0接口,方便挂载外置存储
  • 一块外置存储设备,可以是USB闪存盘、移动硬盘或固态硬盘。我最推荐USB固态硬盘、其次是有独立供电的移动硬盘盒,直接插机械硬盘裸盘容易被供电不足坑到,后面细说
  • 准备一台电脑或手机用于访问路由器后台和网盘页面,系统不限

如果这些条件都满足,就可以开始下面的步骤了。规划好存储位置是整件事能否长期稳定运行的关键,这一步千万别跳过。

2. 打开Docker开关,把“存储根据地”挪到USB硬盘

2.1 路由器后台里的Docker入口藏得有点深

小米路由器默认管理地址是192.168.31.1,进入后台后,Docker入口不是摆在首页的。以小米万兆路由器当前固件为例,通常路径是进入“高级设置”或“应用中心”页面,找到一个叫Docker的图标。如果找不到,先检查固件版本:进入系统升级页面,看是否有新固件可更新,很多型号的Docker功能是后来通过固件下放的,出厂初始版本不一定带。

部分早期固件打开Docker入口后还需要手动点击“开启Docker服务”按钮,等待系统完成初始化。这个过程会生成Docker所需的基础目录和运行时,需要一点耐心等它转完。如果升级到最新固件后依然没有任何Docker入口,那可能是你这台型号本身没有开放这个功能,这种硬件层面的限制没法绕过,只能换设备或者考虑其他方案。

2.2 外置盘选型和文件系统格式尽量一次到位

这是整篇文章里我最想让大家重视的一步。Docker容器本身和镜像都要占用路由器内置存储,而内置存储不但容量小,还承担着系统日志和其他固件数据的写入。如果直接把可道云的数据放在内置分区,用不了多久就会遇到磁盘写满、容器崩溃的问题。

因此,外置USB盘不仅是网盘的数据仓库,也应该作为Docker的“数据盘”来使用。具体来说,打开路由器后台的“存储管理”页面,查看插入的USB设备是否被正确识别。如果没有识别,先重新插拔或格式化调整分区表格式后再试。

文件系统格式方面,推荐exFAT或ext4。exFAT的兼容性更好,Windows和路由器都能正常读写;ext4是Linux原生的文件系统,权限支持最完整,如果有Linux使用经验就用它。不太建议用NTFS,虽然路由器能识别,但NTFS在Linux环境下没有完整的权限模型支持,后面可道云写文件时会出现各种诡异的权限拒绝问题,排查起来很费劲。如果你已经在用NTFS且数据不多,我建议直接备份后重新格式化成exFAT,省得后面踩坑。

2.3 修改Docker根目录,别让内置存储一天爆满

在Docker功能页面里,通常会有“存储设置”或“根目录设置”选项,默认值是指向路由器的内置分区。我们需要把这个根目录迁移到USB外置盘上,一般路径类似/mnt/xxx/usb,不同固件版本显示不完全一样,你只要在设置界面的下拉列表里找到容量最大、指向USB设备的那一项即可。

这一步的本质,是把所有Docker镜像、容器元数据都放到大容量外置盘上,内置闪存只跑系统和路由功能,压力瞬间小很多。操作完成后,可以再回到存储管理页面看一眼已用空间,确认镜像存储位置确实变了。

我见过不少人忽略这一步,结果拉了两个镜像就把路由器内置空间占满,然后后台页面各种报错。所以记住:在拉取可道云镜像之前,先改Docker根目录,这个顺序不能反。

3. 创建可道云容器:镜像选择与参数逐项拆解

3.1 拉取镜像前做一件小事:配置镜像加速

Docker Hub在国内网络环境下访问速度经常不理想,拉取大镜像时那种“转圈半小时”的体验极其磨人。解决方法是给Docker配置镜像加速。在Docker设置页面里通常有“镜像加速”或“Registry镜像”配置项,填入一个可用的加速器地址保存即可。常见的公共加速地址可以在网上搜到一批,如果某个地址失效了就换一个,前提是填入的地址需要满足可访问性。

配置完成后,到镜像管理界面搜索kodexplorer,找到官方镜像kodcloud/kodexplorer,点击下载。镜像不大,正常网络下一两分钟就能拉完,如果迟迟没有进度,检查一下加速地址是否配置正确,或者把路由器暂时断电重启后再试。

3.2 容器参数这样填,每个字段都有讲究

镜像下载完成后,点击“创建容器”(部分版本的入口叫“运行”或“部署”),关键参数我拆开讲,这样你可以理解每一步为什么要这么填,而不是机械照抄。

容器名称:填写“kodexplorer”或任意你记得住的名称,这个只影响管理界面的显示,不涉及功能。

端口映射:宿主机端口填8080,容器端口填80。为什么不用80直接映射?因为路由器管理界面本身占用了80端口,再用80起容器会直接冲突,容器会一直起不来。8080只是示例,如果这个端口也被占用,换成18080、18081都行,只要记住你填的数字,后面访问地址要用它。容器内端口80不要改动,那是可道云PHP服务监听的固定端口。

目录映射:把宿主机的一个目录挂载到容器的 /var/www/html。这里需要先在外置盘上建一个目录,比如 /mnt/xxx/usb/kodexplorer,然后在创建容器时把“存储”或“卷”设置里的容器路径填成 /var/www/html。这个目录将来既是可道云的程序目录,也是所有网盘文件的存放目录,一举两得。之所以把整个程序目录都挂出来,背后的逻辑很实在:以后想备份,直接把外置盘上这个目录拷贝一份就行,不用进容器折腾,即使容器挂了重建一个,数据也毫发无损。

重启策略:容器创建页面一般有“总是重启”“容器退出时重启”等选项,务必选择“总是重启”(Always)。设置后路由器断电重启或Docker服务重启时,容器会自动拉起来,否则就得手动点启动,体验大打折扣。

网络模式:保持默认的bridge网桥模式即可,不需要host模式,端口映射已经满足访问需求。

有部分固件的Docker管理界面会提供“高级设置”里的终端功能,如果你熟悉命令行,也可以在终端里用docker run命令创建,效果一样。但绝大多数人用后台表单就够了,重点是把上面四个参数填对。

3.3 首次访问与初始化:设置密码,别跳过

容器启动后,浏览器输入 http://192.168.31.1:8080,看到可道云的安装欢迎页面就说明容器跑起来了。首次进入会要求你设置管理员账号和密码,这一步千万别跳过、更别用弱密码——私有网盘里放的往往是全家人的照片和工作文档,密码管理意识从第一天就要到位。

初始化过程中还可能让你选择数据存储目录,直接保持默认的 /var/www/html 即可,因为这个路径已经映射到外置盘了。初始化完成后,登录进去会看到一个浏览器端的文件管理器界面,可以新建文件夹、上传文件,界面风格和传统网盘很像,学习成本几乎为零。

3.4 验证部署是否成功:上传下载一轮实测

初始化完成后,不要急着投入使用,先在网页里做一些基本操作验证系统健康度。创建几个测试文件夹,分别上传一个几MB的小文件、一个几百MB的大文件,再下载下来对比文件大小和MD5是否一致。同时在路由器的容器列表页面观察一下容器的CPU和内存占用,如果可道云页面响应流畅、CPU占用不高,说明部署基本没问题。

如果上传下载出现异常卡顿甚至中断,先别急着怪路由器性能,优先检查USB外置盘的读写速度和供电稳定性,因为大部分文件传输问题反而出在存储这一环。

4. 跑通之后:上传限制、目录规划与多设备使用

4.1 上传大小限制不止一层,要拆开看

可道云刚部署完时,如果直接用网页上传超过几十MB的文件多半会失败,这不是网盘软件坏了,而是PHP上传限制没有放开。常见的限制有两层:PHP的 upload_max_filesize 和 post_max_size 参数,以及可道云自身的上传配置。

登录可道云后台,进入“系统设置”或“应用设置”里找到文件上传相关的配置项,把单文件大小限制调到你需要的数值,比如2048MB。但很多时候只改这里还不够,因为PHP默认配置的上传上限可能只有2MB或8MB。这时需要进入容器的终端,找到PHP配置文件 php.ini,把 upload_max_filesize 和 post_max_size 都改成适当大小,比如1024M,然后重启容器使配置生效。不同镜像版本php.ini的路径可能不同,一般是 /usr/local/etc/php/php.ini 或 /etc/php/ 目录下,在终端里用 find / -name php.ini 找一下即可。

这两层配置都改完后,大文件上传就不会再报错了。这里提醒一句,大文件上传非常考验USB外置盘的写入速度和稳定性,如果是机械硬盘且USB口供电不足,传大文件时盘可能直接掉线,后面会专门讲这个问题。

4.2 数据目录规划:别把容器数据和生活数据混在一起

运行一段时间后,外置盘上会出现两类数据:一类是Docker镜像和容器相关的系统数据(在Docker根目录下),另一类是可道云里存放的实际文件(在你自己指定的kodexplorer数据目录下)。这两类数据的备份策略和关注度完全不同,所以从一开始就要把它们在逻辑上分开。

我的建议是在外置盘根目录建两个目录,比如 /mnt/xxx/usb/docker 作为Docker根目录,/mnt/xxx/usb/kodexplorer 作为可道云数据目录。这样做的最大好处是,日常备份只需要关心kodexplorer这个目录就行,Docker容器随时可以重建,不心疼;如果整个盘要换,也只要把这两个目录整体拷贝到新盘,再在Docker设置里指过去即可。这种“数据与运行环境分离”的思路,玩Docker时间久了你会发现走到哪儿都适用。

4.3 局域网多设备访问:手机、电脑、电视盒子都能用

可道云部署好之后,同一局域网内的任何设备都可以通过浏览器访问。手机和平板上直接输入 http://192.168.31.1:8080 登录即可,电脑上同样如此。不需要装任何客户端,这一点比很多商业网盘还要省事。

实际体验下来,最常用的场景有三个:把手机里的照片通过网页上传到网盘备份;把电脑上的工作文档拖到网盘里统一管理,换电脑时直接下载;在电视盒子上装个浏览器或通过文件管理器访问网盘,放视频和音频文件。注意可道云对视频格式的支持取决于浏览器或播放器的解码能力,常见的MP4格式在大部分设备上都能在线播放,MKV等格式可能需要下载后播放。

这里有个小技巧:如果家里的路由器开了访客网络或AP隔离,访客设备是访问不了网盘的,这是正常现象,不要以为是网盘出了问题。在同网段内的主力设备访问即可。

5. 一个月实测:性能表现、稳定性问题与排查全过程

5.1 读写速度和实际体感

先说大家最关心的速度。我的外置盘是一块USB 3.0接口的SSD,在局域网内通过可道云上传下载文件,实际速度大约在30-60MB/s之间,瓶颈主要在路由器的USB控制器和Wi-Fi无线链路。有线连接的电脑能跑得更稳定,Wi-Fi 6手机在近距离下速度也很可观。几十MB的文档和照片几乎秒开,单个1GB左右的大文件传输需要一点时间,但整体体验在“轻量私有网盘”这个定位上完全合格。

如果你是机械硬盘,速度会明显下降,日常小文件使用没问题,但传大量小文件或超大文件时会比较吃力。CPU占用方面,我观察过文件传输时路由器CPU的负载,偶发能到50%-80%,日常待机时容器几乎不吃CPU,内存占用则稳定在两三百MB左右。所以只要不是同时在路由器上跑一堆其他容器,这个方案相当稳妥。

5.2 踩坑记录:三个问题把我折腾到半夜

第一个坑是供电不足导致的USB设备掉盘。起初我用的是2.5英寸机械硬盘直接插路由器USB口,开始两天一切正常,第三天开始出现可道云页面打不开、提示文件操作失败的情况。进路由器存储管理页面一看,USB盘直接不显示了。反复插拔后恢复,一会儿又掉,典型的供电不足症状。机械硬盘启动瞬间需要较大电流,路由器的USB口供电能力有限,扛不住这种冲击。

解决办法是不要直插机械硬盘,改用带独立供电的硬盘盒,或者直接换USB闪存盘/USB固态硬盘。我后来换成了SSD,再没出现掉盘问题。如果你实在想用机械硬盘,至少确保你的硬盘盒有外接电源口,这是绕不过去的硬件限制。

第二个坑是NTFS文件系统的权限问题。刚开始因为旧硬盘本来就是NTFS格式,图省事没格式化就直接挂载了。结果可道云安装后能浏览目录,但创建文件夹时反复提示“目录不可写”或“权限不足”。查了一圈发现是NTFS挂载后Linux权限模型支持不完整,Docker容器内以www-data用户写入时没权限。最后把数据备份出来,将硬盘格式化成exFAT重新挂载,问题才彻底消失。

第三个坑是在Docker根目录没有迁移到外置盘之前,我拉了一个镜像后路由器内置存储空间告急,页面提示“no space left on device”,那时候容器根本启动不了。这个坑前面已经提前预警了,这里再强调一遍:迁移Docker根目录的操作一定要在拉镜像之前完成,不然轻则镜像拉不下来,重则路由器系统分区写满后各种异常。

5.3 容器备份与恢复:数据比容器珍贵得多

运行一个多月里,我养成了一个习惯:每隔一两周把外置盘上的kodexplorer数据目录用移动硬盘或电脑拷贝一份,作为冷备份。可道云容器本身随时可以删除重建,重建过程十分钟都用不了,但里面的文件如果丢了就真的没了。所以容器的备份不是重点,数据的备份才是核心。

如果哪天容器状态异常,处理思路也很简单:在Docker管理界面把kodexplorer容器停止并删除,然后用同样的参数重新创建一个新容器,挂载同一个数据目录,启动后你的文件会原封不动地出现在可道云里。这个“容器可重构、数据不落地”的设计思路,就是当初为什么坚持把整个 /var/www/html 目录挂出来的原因。

6. 安全加固:私有网盘别裸奔在局域网上

6.1 改掉默认端口,加一层登录保护

可道云默认的管理员账号密码如果保持简单口令,内网里任何设备都能轻易登录。这还不算最危险的——如果你的路由器误开了UPnP或者曾被配置过端口转发,网盘服务暴露到公网后,分分钟就会被全网扫描器盯上,暴力破解只是一个晚上之间的事。

所以三个最基本的动作必须做:一是可道云后台把管理员密码改成高强度密码(大小写字母+数字+符号,至少12位);二是把访问端口从常见的8080改成不常被扫描的端口,比如18080、28456之类;三是如果路由器支持,开启可道云的登录验证码功能。改完端口后,下次访问要用新端口。

6.2 关于外网访问,我的态度是“默认关闭”

很多人部署完网盘之后的第一反应是想在外面也能访问家里的文件,这种需求我太理解了,但实际上非常不建议把可道云直接通过端口转发暴露到公网。家用宽带的公网IP不是固定不变的,做端口转发相当于把网盘的登录页面直接放在公网上,哪怕密码再强,面对自动化攻击工具的持续尝试,心理压力也不小。

更稳妥的做法是,网盘服务保持只在内网可用,外网访问需求不强烈就先放弃;如果实在有需求,建议通过路由器或独立设备上配置成熟的安全远程访问机制,比如加密隧道等方式实现,不要直接裸奔。安全访问的方式有很多,但前提是你要清楚自己在做什么,对默认开放端口这件事保持足够的警惕。

6.3 固件、镜像和数据的定期维护

最后聊聊长期维护。我的习惯是每隔一段时间去看看路由器固件有没有更新,Docker镜像有没有新版本。可道云的更新比较简单:先停止容器,备份数据目录,给容器换上新版本的镜像标签重新创建容器,再启动即可。需要注意,重新创建容器时,所有参数要原样填写,尤其是目录映射必须指向原数据目录,千万不能搞混。

另外,如果路由器本身需要重启,不用担心容器不会自动恢复,因为前面设置了“总是重启”策略,路由器和Docker服务起来后容器会自动拉起来。几个月的实测中,这套组合的稳定程度是让人放心的,部署完成后基本处于“忘记它存在”的状态。

我自己实际用下来的最大感受是:小米万兆路由器跑可道云的组合,最适合的场景就是家庭内部的重要文件共享和集中备份,它不像商业网盘那样有免费空间限制,也不像全功能NAS那样需要精力和预算去维护。一块闲置的SSD加一个免费的开源镜像,就能把全家电子资料统一收口,这种“手边刚好的设备”恰好被派上用场的成就感,比单纯买一台新NAS要强得多。如果你也正好有这台路由器和一块闲置硬盘,大胆照着上面的步骤去试,遇到问题回头再看一遍踩坑部分的排查思路,大概率就能自己解决了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询