小米AX9000部署私有网盘实战

1.准备

AX9000是小米出品的一款高端家用路由器,支持Wifi6及外接硬盘,路由器性能强悍,笔者在产品首发时花990元购了一台,目前看价格一路飙涨到1500元,笔者的华为AX3000今年也出现了同样情况,电子消费品逆势上涨实不多见,主要还是市场缺芯导致。
前天看论坛有消息说该路由器支持Docker我觉得路由器的小伙伴鸭梨不小

随手查了小米官方消息,AX9000固件刷开发版本支持了Docker功能
小米路由器AX9000开发者版本Docker功能介绍 - 小米社区 (xiaomi.cn)
一想到小米手机客户端上自带的网盘管理功能效果差的吐血,笔者决定尝试搭建一个家庭网盘试试效果。
准备材料:
1.AX9000路由器一台
2.移动硬盘(也可以用大容量U盘替代)
3.橙子一只(没有橙子的同学也可以用桔子代替)

材料

2.升级固件

下载固件
参考官方指导到该页面进行固件下载(43Mb的bin文件) MiWiFi – 下载

ax9000

安装固件
进入开发者版本管理后台(默认为192.168.31.1或miwifi.com),输入管理密码,然后进行--常用设置--系统状态,然后选择手动升级固件。
版本查看

手动升级

升级中

升级中,整个升级实际约2分钟完成,可以用手机难连通后,刷新PC页面重新进入管理后台,再次看版本已经变化,高级菜单中也已经出现了Docker的菜单。


新版本

docker

3.Docker环境安装与准备

接下来我们安装Docker运行环境,安装要求:
1安装前需要确认你的硬盘或U盘已经连接到路由器,并且可以被正常识别
2.设备需要>32G,且必须是ext4格式

安装要求

很遗憾,笔者移动硬盘是windows系统下用,一直是用NTFS格式,200G碎片文件复制到电脑上估计要小半天,决定先以docker功能验证为首要目标,暂时不迁移文件,验证通过后视方案再进行下一步。
移动硬盘

翻箱倒柜,总算找出一个满足条件的设备,没错就是它,这个当年性能小霸王:
usb3.0

将U盘格式化U盘为ext4
由于ext4是linux文件系统格式,笔者电脑为win10系统,处理起来稍复杂。
下载软件DiskGenius进行分区处理:
分区

保存并格式化

安装Docker环境
u盘连接到路由器,重新执行docker安装:
安装过程

开启docker环境

点击安装第三方管理按钮,安装第三方管理工具进行docker管理。
安装需要几分钟时间,安装完毕后,点击管理docker按钮,进行管理界面,输入账户和密码(均为admin):
管理docker

管理docker界面

从上图可以看到,当前环境中只运行了Portainer自身这个容器,暴露了9001外部端口。
到这里,我们的容器环境已经准备完毕。

4.网盘选择

我们这次目的是安装一个网盘软件,要求能够PC访问,移动端有App可以访问(必须支持IOS系统),最重要是支持镜像部署方式,基于这个前提我们开始软件的选型:
目前主流的几款:NextCloud/ownCloud/seaFile
以前笔者玩过Seafile这款软件,seafile是一款类似百度网盘的软件,其支持web/pc客户端/移动客户端多种终端,而且支持多账户协同,很适合小团队文件共享。
Nextcloud和ownCloud师出同门,这款两产品也支持web/pc/移动版本,功能上和seafile没太大差异。

seafile是python语言写的,国人开发的;nextCloud和ownCloud是php语言写的,外国人开发的;笔者多年前做过短期的PHP开发,讨厌PHP,基于这两个原因优先选择seafile尝试。

5.安装seafile网盘

注意
路由器是ARM架构,通常我们用的镜像是无法在ARM平台上正常运行的,需要找专用于ARM的镜像,百度了下,有人已经将seafile编译并发布了arm镜像,在树莓派部署Seafile最佳实践 - 知乎 (zhihu.com)
如果没有找到arm镜像,则需要自己下载源码编译了。

搜索镜像

挑选镜像及版本

找到正确的镜像信息,复制标准的镜像名称及版本,本例复制的是:jmujmu/seafile-pi:8.0.7
下载镜像

镜像下载会比较慢,玩docker的同学都了解该原因,你也可以添加私有或国内镜像地址来进行加速:
镜像地址

下载完成

由于网盘应用需要存储文件到U盘,而容器的机制默认是将文件存储在容器内部,一旦容器销毁重建,则文件会丢失,因而我们需要将文件映射到实体的USB设备上。


创建外部映射目录

管理界面中,切换到containers菜单,选择add container

创建容器

容器配置

文件映射

环境变量

以上全部参数配置完毕后,点击Deploy the container按钮创建容器,创建完毕如下图:
容器运行

容器是运行正常然而访问发现提示502错误
502

查询日志,发现如下错误
'''waiting for mysql server to be ready: %s (2003, "Can't connect to MySQL server on '127.0.0.1' ([Errno 111] Connection refused)"),'''
对方给的docker-compose.yml是将应用和数据库放在一个容器里跑,初步看有一个custom templates的功能支持自定义yaml,这种不提供命令行模式操作yaml,出错时排查较麻烦,笔者决定采用常规操作,将应用和数据库分离,数据库单独起一个容器。
数据库容器部署
和上面部署应用的步骤大致一样,先创建数据库的文件映射到U盘,然后拉取镜像:mariadb:10.5
mariadb:10.5

创建并启动数据库镜像
配置信息

数据库

然后将数据库的IP地址记下,并写入seafile应用的环境变量中使用,seafile所有环境变量清单如下:
环境变量

配置完毕后,重新启动容器,发现应用已经可以访问,应用部分日志如下:

port of seafile fileserver:   8082
port of seahub:               8000
When problems occur, Refer to
        https://download.seafile.com/published/seafile-manual/home.md
for information.
Starting seafile server, please wait ...
** Message: 15:02:28.337: seafile-controller.c(536): No seafevents.
Seafile server started
Done.
Starting seahub at port 8000 ...
----------------------------------------
Successfully created seafile admin
----------------------------------------
Seahub is started

6.seaFile网盘使用

使用浏览器访问网盘路径,由于我们是将容器80映射成1800的外部端口,所以访问地址为:http://miwifi.com:1800/

登录页面

安装完毕后,此时ax9000实际跑了3个容器,而小米官方也是建议不超过3个。由于该路由器内存只有1个G,同时由于笔者容器都是在U盘上跑,I/O的瓶颈也是个大的问题,期间一度把路由器控制台也拖死,最后只能采用强制断电重启。
一段时间实测下来稳定性很差,页面经常打不开,更别提上传文件了,后面下功夫切换到移动硬盘验证效果也不行,有机会将数据库切换到公有云服务试试。
路由器挂掉

7.安装ownCloud网盘

虽然踩了前面的坑,但终归也有收获,安装过程轻车熟路了,直接切换ownCloud,停掉数据库和seaFile容器,搜索ownCloud镜像,注意镜像要选择支持ARM版本的。


搜索镜像

选择镜像

下载镜像

创建本地存储映射

创建容器

创建容器

目录映射

环境变量

运行正常
初始化界面

PC主界面

IOS移动端版本

移动版本支持手机端照片与视频备份,这个功能很有用,只是从当前时间产生的新照片才能自动上传备份,历史的数据还是需要自行处理。

8.问题

注意事项
1.注意外接设备的容量,文件格式;此外还要考虑I/O读写是否达标
2.注意镜像的格式,需要是ARM
小插曲
即将收工时,发现我们准备的原材料还有一个貌似没用上,没错,就是那个橙子!
此时,发现橙子已经被路由器成功加热完毕。
是不是很好奇橙子的作用?原因是(强行解释中。。)
1.降温,路由器刷机安装软件会发热,科学论证,橙子的内部结构有很好的吸热效果,实测发现橙子果然起到了很好的降温作用!
2.成功完成一件事总要有点奖励和仪式感嘛,这个橙子就是完工的证明和最适合的奖励!

8.小结与展望

本文演示了AX9000的例子,未来智能设备将是新型家庭标配(厨电,热水器,窗帘,智能温控,加热与加湿,视频,监控,门锁等方方面面),此外云主机及云端服务也会逐步从toB下沉到toC的家用市场,路由器也在尝试不只提供网络传输功能,未来智能路由设备还将提供云接入与安全能力,路由器将有机会成为控制的枢纽,也将有可能发展成为家庭版云端一体的边缘服务器或连接器。
但要想做到一个终端及应用治理多家厂商的设备及服务,技术并不是主导因素,更多的是商业模式及行业标准化进程,兼顾开放性与标准化,仍然有很长一段路要走。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容