在探索 Syncthing 的时候,偶然听有人建议说让我不要把数据存储放阿里云了,不如直接用斐讯 N1 做个软路由,数据放家里省钱省事儿…于是我开始去了解:斐讯 N1 是个什么鬼?原来 N1 开发的本源是作为一个挖矿机,因为斐讯翻车成了众人的闲置物品。在大神手里,垃圾都能变废为宝,况且 N1 盒子本身具有良好的性能和外观,还能轻松定制化,于是被广大爱好者折腾成了电视盒子、软路由、NAS、游戏机等等。
经过一番了解,我打算把 N1 改造成自用 NAS,挂个下载器,运行个小网站什么的。于是年轻人第一次安装了拼多多,花了 92RMB 包邮买了套全新未拆以及一根刷机用双公头 USB 数据线。在选购的时候,发现这盒子早一些时候只卖六十几,现在因为货源吃紧在慢慢涨价,而且有商家明目张胆地刷了系统再加价卖,从 90 到 160 不等。原来这还是个理财产品呢!
1. 斐讯 N1 刷机准备工具
- N1 一台
- USB 双公口线一条
- 4G 以上 U 盘一个,新 U 盘可能有兼容性问题(最好是 USB2.0 设备或 SD 卡加读卡器)
- 可以运行安卓 adb 工具的电脑一台,Win/Mac/Linux 都行
- 下载相关工具和固件(百度网盘 | Google Drive )——目前(2024/06/06)整整五年过去了,本文这套系统一直正常、稳定的运行中
2. 斐讯 N1 系统降级、刷机
网上大部分人刷机都是用作电视盒子的,毕竟这玩意儿支持 4K 价格便宜性能足接口还多,但是我电视本来比较新,而且非常讨厌用多个遥控器,所以不打算用 N1 看电视。托各位大神的服,网上已经有非常易用的刷机工具和详细的教程,此处不再赘述,详细的可以看这个视频。只需要注意:
- 准备一只有线鼠标,接入 N1 盒子最靠边的 USB;
- 准备一条双公头 USB 数据线,接入电脑与 N1 盒子HDMI 接口旁的 USB;
- 刷机时最好将 N1 盒子用 HDMI 连接电视/显示器;
- 刷机时务必用网线连接 N1 盒子与路由器。
降级之后 N1 成了个扩展性极强的电视盒子,无任何限制需要什么装什么,页面清爽无广告…我试了一下并不喜欢,觉得有点儿 LOW,不如大厂出品的那么统一协调——尽管它们广告很烦人。
3. 斐讯 N1 刷入 Armbian
Armbian 是专为 ARM 系统开发的轻量级 Debian 系统。首先下载对应的系统文件(5.77),然后把系统先写入事先准备好的 U 盘。我比较推荐 USB Image Tool,先将 U 盘重置接着将下载的 img 文件恢复进 U 盘。数分钟后系统刷入 USB ,电脑多了个 boot 分区并且会提示你格式化 U 盘,不理它。本来咱们可以愉快的查到盒子上启动了,但是据说原版系统空闲时负载比较高,咱也不懂它只好跟着大佬脚步走。
打开/boot/dtb
,用这个文件替换掉原有的 dtb 文件,然后修改根目录下文件uEnv.ini
的第一行为dtb_name=/dtb/meson-gxl-s905d-phicomm-n1.dtb
,完成后把 U 盘插到 N1 上边儿加电启动。
要说 Linux 就是快啊,数秒之后便开机成功,咱们输入root
账户的默认密码1234
,执行./install.sh
将 Armbian 写入内部存储 eMMC。顺利的话很快完成,然后拔掉电源拔掉 U 盘,重新启动后即可 SSH 远程登陆进行接下来的工作——请注意:最好给 N1 固定一个 IP 地址。
4.1 Armbian 安装 OMV
OpenMediaVault 是一个基于 Debian 的开源 NAS 解决方案,具有 Web 可视化操作,可以通过各种插件来增强。如果你是个 Linux 小白,要求不高想轻松的使用 Linux 作为 NAS 系统,OMV 应该是个不错的选择。在安装之前建议先修改系统的更新源:
cd /etc/apt cp sources.list sources.list.bak vim sources.list
按 d
删除全部内容,按 i
粘贴以下内容,完成后按Esc
然后:wq
保存并退出,完成后可输入apt update
查看是否有问题;操作不熟也可以用如 WinSCP 之类的 FTP 工具直连修改。请注意以下源似乎已经失效了!
deb https://mirrors.ustc.edu.cn/debian stretch main contrib non-free #deb-src http://httpredir.debian.org/debian stretch main contrib non-free deb https://mirrors.ustc.edu.cn/debian stretch-updates main contrib non-free #deb-src http://httpredir.debian.org/debian stretch-updates main contrib non-free deb https://mirrors.ustc.edu.cn/debian stretch-backports main contrib non-free #deb-src http://httpredir.debian.org/debian stretch-backports main contrib non-free deb https://mirrors.ustc.edu.cn/debian-security/ stretch/updates main contrib non-free #deb-src http://security.debian.org/ stretch/updates main contrib non-free
接入输入armbian-config
,在弹出的可视化选择窗中依次选择Software-Softy
,往下翻找到 OMV,按空格键选择后再按回车安装。
经过一段时间安装完成后,在浏览器打开 N1 的地址,输入预置的用户名密码admin/openmediavault
即可登入 OMV 的管理页面。熟悉后台之后建议第一步工作先更改管理页面端口和密码,后台管理页面清爽,各个模块简单明了,支持中文,上手很快。
3.2 Omv 挂载共享磁盘
似乎在 Linux 的概念里,系统盘和数据盘是绝对分开的,因此在默认不挂载外接存储的情况下 OMV 没办法共享出可用的文件夹。因此咱们在 N1 盒子上外接必要的 USB 存储,然后依次点选存储器-文件系统-选中需要挂载的硬盘-挂载硬盘
,应用生效后把整个磁盘按可读可写(建议)方式共享出来。最后,为应对 Windows 复杂的文件共享系统,建议设置一个带密码的用户。
以上的工作只是设置了对应的共享文件夹,我们还需要打开相应的网络文件共享协议,并关联到上文具体设置的文件夹才能实现真正的文件共享。我本人主要是安卓电视和笔记本电脑访问这套文件系统,因此需要打开SMB/CIFS
和NFS
两项服务,启用对应协议后添加共享,参考如下图设置。
设置比较简单,但是要实现 Windows 电脑访问共享比较复杂(看运气)~
Windows/iOS/Android 共用一套数据库和文件
磁盘共享成功后,电视上的 Kodi 用 NFS 协议直接就能找到硬盘里面的硬盘/图片等等,看电影什么的非常方便。Kodi 是一款多平台家庭影院系统,功能强大且具有高度的可定制性:能安装皮肤定义想要的界面,也可以安装不同插件实现各种复杂的功能,这里就不展开了。
3.3 文件下载服务
直接在 OMV 插件库里面安装openmediavault-transmissionbt
插件,这个插件可以实现和迅雷几乎一样的功能,比方说磁力链接、限速、线程选择、可选下载等等。
3.4 在这台 OMV 上部署小网站,Kodexplorer
4. 部署 FRP 内网穿透
普通用户家里边的宽带一般是没有公网地址的,因此无法通过互联网访问网内的应用和服务。NAS 没有公网 IP 是很不方便的,比方你在百无聊赖的办公室突然发现一个不错的电影,想回家之后立刻就看,怎么办呢?难道还在办公室苦哈哈的下载拷进 U 盘?何不直接远程访问上文的 BT 下载器,让家里边的小盒子安安静静的下载呢。
这就需要内网穿透技术了,一般是反向代理和动态域名解析(DDns)两种方式,市场里花生壳、ngok 比较出名,不过不推荐给个人用户使用。这里介绍用轻量化开源系统 FRP 实现反向代理,它可以使处于内网或防火墙后的设备对外界提供服务,支持 HTTP、TCP、UDP 等众多协议。
上图是反向代理的一个简单拓扑,FRP 本是国人开发的开源系统,在其项目页也有非常详细的帮助文档,这里简单记录下。首先你需要一台有公网 IP 地址的服务器,然后下载您系统对应的文件,解压进入到程序目录后首先修改配置文件。相应的服务器端只需要该frps.toml
,客户端(内网服务器)修改frpc.toml
,看看以下我内网服务器的配置文件:
serverAddr = "server ip"
serverPort = 8855
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 8856
[[proxies]]
name = "syncthing"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8384
remotePort = 8857
[[proxies]]
name = "omv"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 8858
[[proxies]]
name = "bt-downloader"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8081
remotePort = 8859
[[proxies]]
name = "filesExplorer"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8082
remotePort = 8860
公网服务器配置文件frps.toml
的配置如下,其实就是定义了 FRP 所绑定的端口号。注意在防火墙上方通所涉及的端口:
bindPort = 8855
应该很容易理解哈?修改完成后将对应的程序和配置文件上传到内外网服务器上的特定位置,并赋予其正确的可执行权限,最后让 FRP 在后台运行就行啦——请注意:在对 FRP 执行操作均需要进到 frpc/frps 文件所在目录,并且记得在防火墙开放对应的端口。
使用以下命令启动服务器:./frps -c ./frps.toml
使用以下命令启动客户端:./frpc -c ./frpc.toml
我的远程服务器一般不会关机,但是 N1 很有可能经常关机(省电),所以还得利用systemctl
来让 FRP 开机自启,这里简单记录一下。systemctl
是一个强大的命令行工具,用于与 systemd
交互和管理系统服务。它可以启动、停止、重启服务,检查服务状态,启用或禁用服务开机启动,管理系统的运行级别(targets),以及查看和分析系统日志,极大地简化了系统和服务管理的复杂性。
首先需要用systemctl --version
命令查看您的服务器中是否已经存在 systemctl 工具,如果提示没有则运行apt install systemd
安装它。然后使用文本编辑器 (如 vim) 在 /etc/systemd/system
目录下创建一个 frps.service
文件,用于配置 frps 服务。参考下我的配置:
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动 frps 的命令,需修改为您的 frps 的安装路径
ExecStart = /www/server/frp/frps -c /www/server/frp/frps.toml
[Install]
WantedBy = multi-user.target
systemctl --version
然后使用 systemd 命令管理 frps 服务,并且让 frps 保持开机启动:
# 启动 frp
sudo systemctl start frps
# 停止 frp
sudo systemctl stop frps
# 重启 frp
sudo systemctl restart frps
# 查看 frp 状态
sudo systemctl status frps
# 保持 frp 开机启动
sudo systemctl enable frps
通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。请确保替换路径和配置文件名称以匹配您的实际安装,frpc 那头如法炮制就不再赘述了。
5. 后记
本文还没写完就有人推荐我使用群晖了,用下图给你做个解释:因为 N1 小啊,省电(至多 24W)啊!你看这宽高深各 40/15/20CM 的小置物架可以把我的无线路由器、NAS、存储和供电全部装下,其他系统恐怕有点儿难度吧?
事实上我公司还有台崭新的 HTPC,Intel Celeron 887 1.5 GHz/2 GB DDR4/320 GB HDD
,性能强过斐讯 N1 许多倍,但是想想耗电量和尺寸,觉得实在没必要折腾,以后用得上的时候再搞吧。
[…] 在 N1 上刷 Debian,安装 OMV(OpenMediaVault)作为小型家用 Nas 使用 […]