先说结论:这套组合跑下来的体验,对一台几十块钱收来的三盘位矿渣来说,真的能称得上“全能”。我手上这台OES Plus,矿难退役后一直吃灰,最近翻出来刷成Armbian搭配CasaOS,当家庭NAS用了一个多月,下载、影音、备份、远程访问全都在上面跑,稳定性比我预想中好太多。如果你手里也有这类ARM小主机,或者正准备低成本组一台NAS,这篇实战记录可以直接照着抄作业。
OES Plus这类设备,和玩客云、斐讯N1、黑豹X2本质上是同一批产物——矿潮时代量产的ARM小板子,硬件被挖矿需求打磨得很扎实,退役后却很尴尬:官方系统没了支持,刷机教程零零散散,很多人买回来只会刷一个电视盒子系统,或者干脆吃灰。但它的底子其实很适合做NAS:瑞芯微RK3328四核A53、千兆网口、原生SATA盘位,功耗还低。这套配置放今天依然能打,关键就看你愿不愿意折腾。
这篇记录会覆盖我从拆机、刷机、装CasaOS到部署日常应用的全过程,包括中途踩过的各种坑。适合谁看?预算有限、有一定动手能力、想用最低成本把矿渣变成一台能长期运行的NAS的人。纯粹想要插上就用、零折腾体验的,还是老老实实买成品NAS,别在这条路上浪费时间。
1. 矿渣OES Plus的硬件底细与选型思路
1.1 这台机器的硬件到底什么水平
先给不太了解OES Plus的朋友交代一下硬件底子。这台机器不同批次可能稍有差异,但核心配置基本是同一套:瑞芯微RK3328四核Cortex-A53处理器,主频1.5GHz,搭配1GB DDR3内存和8GB eMMC存储,板载一个千兆网口,最大亮点是有三个原生SATA硬盘位。接口方面通常带USB 3.0和USB 2.0各一个,有些批次还带HDMI输出,整机用12V DC供电。
我特意做了个参数表,方便你看完心里有数:
| 项目 | 常见参数 | 说明 |
|---|---|---|
| CPU | RK3328 四核 A53 @ 1.5GHz | 低功耗方案,解码能力强,转码一般 |
| 内存 | 1GB DDR3(部分2GB) | 建议跑轻量服务,别硬塞太多容器 |
| 系统存储 | 8GB eMMC | 装系统够用,数据别放这里 |
| 硬盘位 | SATA × 3 | 这是它比玩客云、N1强得多的核心原因 |
| 网口 | 千兆 RJ45 | 跑满SATA读写基本没问题 |
| 功耗 | 待机约8-12W,带盘约15-25W | 比X86 NAS省电太多 |
三盘位的价值,用过NAS的人应该都懂。玩客云只能外挂USB硬盘,N1也一样,USB转接SATA在长期稳定性上始终是个隐患。OES Plus则是原生SATA口直接插盘,供电和信号都走标准通道,做NAS的底子就正多了。
1GB内存是这个机器最大的短板。装完Armbian和CasaOS之后,系统加基础服务大概吃掉五六百兆,再跑两三个Docker容器就比较紧张了。我的建议是不要试图把它当成全功能服务器,专注做好下载、影音、备份这几件事,它完全能胜任。
1.2 为什么选Armbian+CasaOS而不是黑群晖或飞牛OS
这是很多人看到这标题的第一反应。现在ARM矿渣刷机的可选系统其实挺多:黑群晖有人做适配,国产的飞牛OS风头正盛,OpenMediaVault也能装,为什么我坚持选Armbian+CasaOS?我给你掰开揉碎讲。
先说黑群晖。群晖系统本身确实强大,但ARM架构的黑群晖适配一直是小众中的小众,驱动、引导、DSM版本匹配折腾起来非常痛苦。而且1GB内存跑DSM本身就吃力,照片索引、缩略图、套件安装都是内存大户。为了一个“看起来很群晖”的系统,把大部分时间耗在引导和驱动上,我觉得不划算。
再说飞牛OS。它最近确实火,UI做得也用心,对新手友好,但问题在于它默认按X86体系优化,虽然出了ARM版,对OES Plus这类三盘位小主机的硬件兼容性还在磨合期。另外飞牛OS更偏向一个完整的成品系统,自由度相对低一些,折腾空间不如“Linux底子+Docker应用”的组合来得大。
OpenMediaVault则刚好反过来,功能扎实但对新手不太友好,插件体系学起来有一道坎,UI交互也有点老派。
反观Armbian+CasaOS这套组合,优势非常清晰:
- Armbian是专门为ARM设备优化的Debian发行版,内核、驱动、电源管理做得成熟,社区资源丰富,RK3328的适配很完整。
- CasaOS的定位是不抢Docker风头,所有应用都跑在Docker里,系统本身非常轻量,UI简洁到像在操作一台手机。
- 出了问题好排查,因为底层就是标准的Linux,任何Debian教程都能直接用。
这套组合的本质是“标准Linux内核 + 可视化Docker管理面板”。系统稳不稳定看Armbian,应用多不多看Docker生态,面子里子都可以自己掌控。
2. 刷机前准备:固件、烧录工具与MaskROM模式
2.1 镜像选择和烧录工具
刷机最忌讳的就是拿到一个固件就开刷,装备没备齐就开始动手。OES Plus刷Armbian之前,我建议先花半小时把工具和镜像准备妥当,后面会顺畅很多。
Armbian镜像去哪下?优先去Armbian官方仓库找,搜索关键字用“RK3328”或者“X96 Max”“Station M1”这类同芯片设备。OES Plus本身不一定有官方专用镜像,但RK3328是通用芯片,内核里对同芯片设备的支持可以复用,所以通常拿Station M1的镜像就能引导,登录系统后再换合适的dtb即可。
烧录工具方面,给新手两个方案:
- 如果你打算从U盘或TF卡启动,用balenaEtcher写盘就行,图形界面操作,点一下就好了。
- 如果你想把Armbian直接刷进eMMC(我推荐这个方案,跑起来更稳),那就需要瑞芯微官方的RKDevTool,搭配驱动工具DriverAssitant。
对OES Plus这种自带eMMC的机器,我建议直接刷eMMC,否则每次启动都要靠U盘顶着,盘位本来就宝贵,再插个U盘怪别扭的。
另外别忽视给机器供电的适配器。很多矿渣到手时原装电源已经不见或者老化,我见过不少刷机失败、频繁重启的案例,最后查出都是电源电流不够。OES Plus建议用12V 2A以上的电源,不要拿乱七八糟的杂牌适配器凑合。
2.2 拆机短接、驱动安装与进入MaskROM模式
瑞芯微芯片刷机,第一步就是让电脑识别到设备。OES Plus背后通常有reset孔或者主板上有调试触点,不同批次位置不太一样,所以拆机之后先拍照留档,看清主板丝印再操作。
进入刷机状态有两种常见模式,搞清楚它们区别很重要:
- Loader模式:系统还能启动,只是挂了刷机驱动,工具里会显示“LOADER”字样。
- MaskROM模式:底层bootrom引导的救砖模式,通常通过短接两个触点实现,RKDevTool里显示“MaskROM”。
OES Plus大多通过短接主板上的两个触点进MaskROM。具体操作:机器断电,用镊子短接触点不松手,插上USB线,再上电,等RKDevTool识别到设备后松开镊子。
USB线也有讲究,要接主板上标着OTG或有固件刷写标识的那个USB口,而且要确认你拿的是数据线不是纯充电线。很多朋友一开始“点连接没反应”,多半就是这两个原因:接口插错了,或者线只能充电。
驱动安装放在刷机软件之前。在Windows上先装DriverAssitant,装完重启一次,再接设备。如果设备管理器里还能看到黄色感叹号,右键手动更新驱动,路径指到DriverAssitant的驱动目录就行。
这一步没什么技术含量,核心就两个字:耐心。短接点找不到就多看拆机图,驱动装不上就重启再试,几乎没有解决不了的。
3. 刷入Armbian完整过程与初始化
3.1 用RKDevTool把Armbian写进eMMC
这一步我把完整流程写下来,你照着操作基本不会歪。
Armbian镜像通常是.img文件,先解压出来。打开RKDevTool,软件界面一般分“升级固件”和“烧录”两个页面,对于eMMC写入,我们用“下载镜像”这种通用方式操作。
实际操作步骤:
- 在RKDevTool里选择“设备分区表”,加载镜像自带的parameter文件。
- 给每个分区指定镜像路径,通常boot分区放kernel和dtb,rootfs分区放Armbian的根文件系统。
- 确认所有分区项勾选正确后,点击“执行”开始写入。
听起来简单,但这里有个细节要注意:不同镜像自带的parameter不一样,如果你拿到的镜像没有配套parameter文件,可以直接用万能表的方式——只烧一个rootfs分区,手工把镜像全部内容写进去。不过新手更推荐的做法是找对应设备或同芯片设备的现成刷机包,别人验证过的东西比自己摸索要省事太多。
写入过程中,RKDevTool会显示进度条,几GB的镜像在USB 2.0速度下可能要等几分钟。写入完成后,点击“复位设备”,拔掉USB线,接上显示器和网线,通电开机。
如果屏幕上能看到滚动日志并最终停在登录提示符,就说明刷写成功。如果没有输出,多半是电源供电不稳或者dtb不匹配,这个放后面问题排查部分细说。
3.2 首次登录:改时区、换软件源、开启SSH
系统起来之后,默认账号root,初始密码1234,第一次登录会强制改密码。修改完成后会让你创建一个新用户,建议创建一个日常用的普通用户,别什么事情都用root扛。
接下来马上要做的几件事,按顺序来:
修改root密码和创建用户之外,第一步是确认网络。插着网线的状态下,执行ip a看看有没有拿到IP地址。如果拿到,直接用SSH连接后续操作会更顺手;没拿到就先查网线、查路由器,别急着往后面走。
第二步是换软件源。你人在国内的话,Debian官方的源可能慢得怀疑人生。编辑/etc/apt/sources.list,把源地址换成国内镜像源。改完记得执行apt update验证一下,能正常索引就说明源没问题。
第三步设置时区和时间同步。执行timedatectl set-timezone Asia/Shanghai,再apt install -y chrony或者直接用systemd-timesyncd配合ntp服务器,保证日志时间准确。这一步看似不起眼,后面跑Jellyfin、看日志都离不开。
最后是加固SSH。编辑/etc/ssh/sshd_config,把PermitRootLogin改成prohibit-password,然后创建SSH密钥,把公钥放进~/.ssh/authorized_keys。这样至少比裸奔密码登录安全一个量级。
3.3 三盘位硬盘挂载与目录规划
系统跑稳了,就该接硬盘了。OES Plus的三个SATA盘位,我用下来觉得最合理的规划是:
- 盘1:影音库,放Jellyfin的媒体文件,电视剧电影都往这里丢。
- 盘2:下载暂存区,给qBittorrent这类工具做下载目录,下完想保留的手动归类到盘1。
- 盘3:备份盘,同步重要照片和文档,平时不怎么读写。
如果你手里只有一两块盘,也不用纠结,一块盘做数据盘也完全没问题,CasaOS对单盘的体验最省心。
硬盘插入后,执行lsblk确认识别到了哪些盘。新盘要先分区格式化,我习惯用整个盘建一个分区ext4文件系统,简单干净:
sudo fdisk /dev/sda # 按 n 新建分区,然后 p、w 保存 sudo mkfs.ext4 /dev/sda1建好文件系统后,创建挂载点并挂载:
sudo mkdir -p /mnt/disk1 sudo mount /dev/sda1 /mnt/disk1但这样重启就失效了,要把挂载写进fstab。先查看分区的UUID:
sudo blkid /dev/sda1然后把对应行加到/etc/fstab:
UUID=你的UUID /mnt/disk1 ext4 defaults,noatime 0 2写完执行sudo mount -a验证,没报错就说明配置正确。注意noatime这个参数,可以减少不必要的磁盘写入,对延长硬盘寿命和降低功耗都有帮助。
4. 安装CasaOS并部署常用应用
4.1 CasaOS一键安装与初始化
Armbian已经跑稳,硬盘也挂好了,接下来就可以装CasaOS了。CasaOS的定位我之前说过,就是一个轻量的家庭云操作系统外壳,核心是Docker。所以安装CasaOS之前,最好先把Docker装好,虽然官方脚本会顺带装,但自己装一遍更可控。
CasaOS官方提供了一个一键安装脚本,Armbian下直接执行:
curl -fsSL https://get.casaos.io | sudo bash脚本会检测系统、安装Docker、拉取CasaOS镜像,整个过程网速好的话十分钟内能完成。如果中途卡住,多半是网络拉取Docker官方源不稳定,可以先去配一个Docker镜像加速器,再重新执行脚本。
安装完成后,浏览器访问http://你的IP地址,首次进入会让你创建后台用户。这里注意,CasaOS的管理员账号和系统的root是两套体系,别搞混。创建完账号就进入主界面了,左侧是应用商店、文件管理、存储管理、设置这些模块。
存储管理里能看到你刚才挂载的硬盘,把硬盘“接入”到CasaOS后,它就能在文件管理和应用里直接用了。这一步如果看不到硬盘,回去检查挂载点权限,给CasaOS使用的目录设置好读写权限,一般就能解决。
4.2 用Docker部署Jellyfin、qBittorrent和Alist
CasaOS应用商店里确实有很多一键安装的应用,Jellyfin、qBittorrent、Aria2这些都有,直接点安装就行。但我更推荐在终端里自己用Docker命令行部署,原因有三个:版本更新及时、参数可控、出问题容易排查。
先看Jellyfin。RK3328这颗芯片有硬件解码能力,但1GB内存注定了别给它太重的任务。我的部署命令是:
docker run -d \ --name jellyfin \ --restart unless-stopped \ -p 8096:8096 \ -v /mnt/disk1/media:/media \ -v /opt/jellyfin/config:/config \ -v /etc/localtime:/etc/localtime:ro \ jellyfin/jellyfin:latest部署完打开http://IP:8096完成初始化,媒体库路径填容器内的/media,对应的宿主机文件放在/mnt/disk1/media下就行。要注意目录权限,Jellyfin容器默认用户可能没有权限读你宿主机目录,先执行chmod -R 755 /mnt/disk1/media,确保容器能读。
再看qBittorrent,挂到下载盘:
docker run -d \ --name qbittorrent \ --restart unless-stopped \ -p 6881:6881 -p 6881:6881/udp -p 8080:8080 \ -v /mnt/disk2/downloads:/downloads \ -v /opt/qbittorrent/config:/config \ lscr.io/linuxserver/qbittorrent:latest初始用户名admin,密码在容器日志里,进去后马上改掉默认密码。注意把监听端口6881做好端口映射,否则下载速度会受影响。
Alist就没什么好说的了,网盘挂载神器:
docker run -d \ --name alist \ --restart unless-stopped \ -p 5244:5244 \ -v /opt/alist:/opt/alist/data \ xhofe/alist:latest首次使用执行docker exec -it alist ./alist admin获取管理员密码。Alist支持阿里云盘、夸克网盘、天翼云盘等一堆网盘,我一个多盘用户主要用它把网盘内容统一管理起来,通过WebDAV挂载到本地后,Jellyfin也能直接读网盘里的视频,实用性拉满。
4.3 开启SMB共享,让手机电视直接播放
光有Docker应用还不够,日常用得最多的其实是SMB文件共享。手机、电视、电脑直接访问NAS上的文件,靠的就是它。
CasaOS内置的文件管理可以简单共享,但功能比较基础。想要更灵活的控制,装个samba服务:
sudo apt install samba -y编辑配置文件/etc/samba/smb.conf,添加共享目录:
[data] path = /mnt/disk1 browseable = yes read only = no guest ok = yes create mask = 0755重启服务:
sudo systemctl restart smbd如果客户端访问需要账号密码,加一个samba用户:
sudo smbpasswd -a root电视端用SMB连接的话,填NAS的IP、共享名、账号密码就行。实测RK3328的千兆网口跑SMB的读写,机械硬盘基本能到90-110MB/s的水平,1080P原盘播放毫无压力,4K高码率的片子也能勉强扛住,只要别多条设备同时高并发读写就行。
5. 外网访问:动态公网IP与DDNS的完整落地
5.1 先确认家里宽带到底有没有公网IP
NAS建好了,光在家里局域网访问总觉得差点意思,出门在外能连回去才叫真正的“自建云”。但很多朋友上来就配端口映射,结果怎么都连不上,问题很可能出在最前面:你家宽带压根没有公网IP。
判断方法很简单:登录你的路由器或光猫后台,看WAN口IP地址;再用手机浏览器打开一个显示IP的网站,看出口IP。两者一致,说明你有公网IP,可以放心搞DDNS;一个是私网地址一个是公网地址,那就说明运营商给你的是大内网,常规DDNS方案直接报废。
没有公网IP也不是死路,可以走异地组网工具,比如Tailscale、ZeroTier这类。它们的思路是让NAS和你手机电脑组成一个虚拟内网,不管在哪里都像在局域网一样访问。这类工具对NAS玩家很友好,配置也简单,没有公网IP的场景我建议直接走这个路线。
5.2 用ddns-go把动态IP绑定到域名
确定有公网IP之后,下一步就是把动态变化的IP绑定到一个固定域名上。我目前用的是ddns-go,一个开源小工具,支持阿里云、腾讯云、Cloudflare等多个DNS服务商。
部署命令:
docker run -d \ --name ddns-go \ --restart unless-stopped \ -p 9876:9876 \ -v /opt/ddns-go:/root \ jeessy2/ddns-go启动后打开http://IP:9876,填写DNS服务商的AccessKey ID和Secret,选择要解析的域名子域名,间隔设为5分钟,保存就行。它会自动检测公网IP变化并更新解析记录。
这里有个安全细节:ddns-go管理界面的9876端口不要直接暴露到公网,只让内网访问就好。配置完成后,在公网用域名:端口访问时,解析到的就是你当前家里的公网IP。
5.3 端口映射与安全加固
域名能解析到你家里了,但数据要进到NAS,还得在路由器上做端口映射。把公网的一个高位端口,比如8443,映射到内网NAS的某个服务端口。
做端口映射这块,我的安全基线是:
- 不要直接映射CasaOS的80或443端口,选一个高位端口减少扫描命中概率。
- SSH端口不要对外,或者改成非标端口,并且只允许密钥登录。
- 下载工具的Web管理界面,比如qBittorrent的8080,不要暴露到公网,在外面想管理就通过前面说的异地组网工具进入。
- 如果只是自己访问,优先走异地组网,端口映射留作电影播放、文件下载这些场景。
记住一句话:暴露给公网的东西越少,这套系统睡得越安稳。家里的NAS不是商业服务器,不追求“所有功能外部可访问”,安全边界收得越紧,出问题的概率越低。
6. 折腾实录:常见问题与避坑经验
6.1 刷机不识别、引导失败、无IP这些问题怎么查
折腾这类矿渣,一定会碰到各种怪问题。我把自己踩过的坑整理成速查表,你遇到能少走很多弯路:
| 故障现象 | 可能原因 | 排查方向与解决方法 |
|---|---|---|
| RKDevTool连不上设备 | 驱动没装好 / USB线不能传数据 | 重装DriverAssitant,换根数据线,确认接的是OTG口 |
| 刷完开机无输出 | 供电不足 / dtb不匹配 | 换12V 2A以上电源,重新刷写,换dtb试 |
| 开机后没有IP | DHCP没获取 / 网线问题 | 看路由器客户端列表,手动设置静态IP,换网线 |
| SMB播放卡顿 | 无线连接速率低 / 老电视只支持SMB1 | 用有线连接,开启SMB2/3,或改用WebDAV |
| 硬盘频繁掉盘 | SATA供电不足 / 线材老化 | 换电源,检查SATA线,不行就减少盘位数量 |
| Jellyfin转码卡顿 | 1GB内存太小 / 转码任务重 | 前端设备直接原始码率播放,关闭转码 |
无IP这个问题经常让人抓狂。我的经验是先接显示器和键盘,直接在终端里看系统有没有起来,再ip a看网口状态。很多“无IP”其实是网线没插紧或路由器没识别,换个口重启路由器就解决了。
还有一个隐藏坑是主板上那颗eMMC过热。夏天室温高,长时间跑下载,eMMC芯片温度能飙到80度以上,表现就是系统突然卡死几秒甚至掉盘。加一块小散热片贴在eMMC芯片上,立竿见影。
6.2 三盘位的散热、噪音和硬盘休眠优化
三盘位的双刃剑在于:容量扩展性确实好,但三块机械盘同时转起来,散热和噪音对家用环境是一个实打实的考验。我实际用下来,OES Plus原装风扇基本是“拖拉机”级别,声音不小,而且风道设计一般。
散热优化就三件事:换风扇、加散热片、清灰。风扇找一个4cm规格的静音款,电压电流匹配好,噪音能降一半多。CPU和eMMC上都补铝散热片,配合机箱风扇形成风道,温度能控制在可接受范围。
噪音问题更关键的是硬盘休眠。建议把硬盘休眠时间设短一点,比如20到30分钟无访问就挂起。系统层面可以用hdparm设置:
sudo hdparm -S 240 /dev/sda240代表20分钟无访问进入休眠。注意,休眠状态不代表不通电,只是盘片停转,响应访问时会有一个唤醒延迟,但换来的是安静和寿命,值。
6.3 CasaOS与Docker使用中的几个坑
最后聊几个我实际使用中遇到的CasaOS相关坑。
首先是CasaOS应用商店更新慢的问题。商店里的应用版本往往不是最新的,如果你需要最新版,直接去Docker Hub或用docker run手动拉。CasaOS本身不限制你手动跑容器,两种方式可以共存,我现在的做法是:商店里有的、平时不怎么更新的用CasaOS管,需要常更新、要自定义参数的就自己用docker命令跑。
其次是空间占用问题。Docker默认把数据放在/var/lib/docker,如果你没单独给系统分区扩容,eMMC那点容量很快就会被镜像和容器日志塞满。我的解决办法是把Docker的数据目录迁移到大容量HDD上,或者定期清理无用镜像:
docker system prune -f最后是备份习惯。CasaOS的配置、Docker容器、数据盘要做到三层隔离:配置定期导出,容器用docker-compose文件管理(方便重建),数据盘重要内容单独备份到另一块盘或者网盘。矿渣尤其要养成这个习惯,因为硬件随时可能出问题,数据没了就真的没了。
另外说一句,飞牛OS最近确实火,如果你手里有配置更高的设备,可以去试试,体验一下成熟成品系统的便利性。但针对OES Plus这种1GB内存的三盘位ARM小机,我依然认为Armbian+CasaOS这套组合是省心且灵活的答案。
折腾矿渣的乐趣,不在于机器本身多强,而在于用最低的成本撑起一套用得顺手的家庭服务。这台几十块钱的OES Plus跟着我跑了这一个多月,下载、影音、备份、远程访问全都稳定运行,已经把本钱赚回来了。如果你也有一台吃灰的矿渣,不妨试着给它一条新命,说不定你的体验比我还好。