前言

前阵子基于老毛子路由器上搭建的 NAS 方案有几个缺陷:

  1. 性能瓶颈:加载缩略图缓慢、在同时加载多张图片、上传几十个文件时,路由器的 cpu、内存都是满载的情况,更糟糕的时候会导致路由器直接宕机卡死(都是泪)
  2. 使用 ZeroTier 实现的内网穿透其实是异地组建局域网,必须要在连接的端上安装软件。而且连接的稳定性挺迷的,有时候 zerotier-cli info 显示 ONLINE 了,ZeroTier 后台也显示两端都是 ONLINE 状态,不知道为啥还是 ping 不通(2020-11-24:已解决,路由器防火墙作祟)

基于以上原因,我购置了一个树莓派 4b(4g 内存),内网穿透方案采用了收费的NATAPP。而私有云系统则使用了 KodExplorer 的 Docker 来镜像搭建,经过这次折腾也顺便学习了 Docker 的安装和使用,Docker 的虚拟化容器方案极大的方便了原本需要各种依赖环境的系统搭建。

准备条件

  1. 树莓派 4b(4g 内存):连同盒子、TF 卡、读卡器等套装共¥ 452.00
  2. 2T 的西数红盘 + Orico 3.5 寸硬盘盒:一共¥ 598.72
  3. NATAPP 的 VIP_1 型隧道 9 元/月(二级域名 3 元/年):共¥ 12

搭建步骤

给树莓派安装 Raspberry Pi OS

将 TF 卡插到读卡器连接电脑,随后下载官方提供的Raspberry Pi Imager后,打开。在’Operating System’中选择’Erase’,选好 SD 卡,点击‘WRITE’,先将我们的 TF 卡格式化为 FAT32。

Raspberry Pi Imager

完成后再从 ‘Operating System’ 选择要刷入的系统镜像,这里我选择了’Raspberry Pi OS with desktop’,选好 SD 卡,点击’WRITE’,耐心等待即可。

修改默认密码、开启 SSH、VNC、修改软件源

镜像刷入完成后,将 TF 卡插入树莓派,然后插上网线,另一端连上路由器的 LAN 口(当然如果没有网线的话等开机后连接 WIFI 也行,但是考虑到要做 NAS 用,有线连接会更稳定些,毕竟 4B 的网口也升级成了千兆)。然后通上电源,键盘、鼠标、显示器通通连上,稍等片刻就能看到系统桌面了。

首次开机会有向导设置,到软件更新那一步先点跳过,因为后续我要自己更换国内软件源再更新。向导设置结束后,需要做一些必要的系统设置:

  • 修改系统默认密码:左上角树莓标志–首选项–Raspberry Pi Configuration–System–Change Password
    Change Password

  • 开启 SSH、VNC:这两项功能能够方便后期在通过终端(SSH)和桌面环境(VNC)远程登录树莓派。具体步骤:左上角树莓标志–首选项–Raspberry Pi Configuration–Interfaces–SSH/VNC–Enable
    SSH/VNC

  • 修改软件源(注意:不同的 Debian 版本修改的内容略有不同,具体见Raspberry Pi - Docker —— 从入门到实践

    1
    2
    3
    4
    5
    # 编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代:
    deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
    deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
    # 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
    deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

    修改完成后执行以下命令更新软件源列表、更新现有的软件

    1
    2
    sudo apt-get update
    sudo apt-get upgrade

完成上述步骤后,就可以拔掉 HDMI 线和键鼠了。

将硬盘连上树莓派

首先我将硬盘格式化为了 FAT32(本次方案对硬盘文件系统没有要求,所以 NTFS、EXT4 应该都可以),然后将硬盘装入 3.5 寸硬盘盒,通上电源,连上树莓派(记得连 USB3.0 的口,蓝色的)。由于我安装的是带桌面的系统,一般硬盘连接上就会被自动挂载了。

SSH 登录树莓派,安装 Docker

SSH 前先要获取树莓派在局域网的 IP 地址,可以在之前的步骤中,通过在树莓派的终端输入ifconfig中查看,或者进入路由器后台查看树莓派的 IP。

打开我的 2015 款 MBP,启动 iterm2,输入 ssh [email protected] (这里的 IP 地址是我局域网内的,请自行更改),输完密码后就进入树莓派的 shell 了。

下一步就要安装 Docker 了,可以通过 APT 安装或者脚本安装。我采用了脚本安装:

1
2
3
4
5
6
7
8
9
10
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

# 启动 Docker
sudo systemctl enable docker
sudo systemctl start docker

# 建立 docker 用户组
sudo groupadd docker
sudo usermod -aG docker $USER

完成后退出终端并重新登录即可。参考自Raspberry Pi - Docker —— 从入门到实践

拉取 KodExplorer 的 Docker 镜像、启动

有幸在 Docker Hub 上找到了一个比较完美的 KodExplorer 镜像,使用方法详见dennischancs/KodExplorer

由于我挂载了 3.5 寸硬盘,在端口映射的配置我做了些许修改,我输入的完整命令如下:

1
2
3
4
5
6
7
8
9
10
docker run -d \
--name kodexplorer \
--hostname=kodexplorer \
-p 5210:5210 \
-p 5218:5218 \
-v $HOME/koddata:/koddata \
-v /media/pi/WD/koddata/admin:/koddata/User/admin/home \
-v /media/pi/WD/koddata/public:/koddata/Group/public/home \
--restart unless-stopped \
dennischancs/kodexplorer

/media/pi/WD/ 是我的硬盘挂载的目录,这里我将容器内 KodExplorer 的 admin 和公共目录分别映射到了硬盘下的 admin 和 public 目录。

容器启动成功后,浏览器访问 树莓派IP:5210 就可以看到 KodExplorer Web 页面了。

内网穿透:NATAPP

NATAPP1 分钟快速新手图文教程
linux 后台运行 natapp(ngrok)教程
natapp(ngrok) Linux 开机自启动

效果预览

DZY59J.jpg

ONE MORE THING —— 私有云系统踩坑经历总结

最初是准备装 NextCloudPi 搭建私有云的,然后经历了 NextCloudPi 的 docker 容器版本问题、初始化 looping 等一系列问题后,最终放弃(主要是我不想按传统方式安装,只想通过 Docker 容器来跑,无奈问题一个接一个)。

期间也有使用国人开发的 CloudReve,相比 NextCloudPi 搭建难度异常简单,将对应架构的程序包下载下来解压、赋权执行脚本就行了:./cloudreve > cloudreve.log 2>&1 &。最后放弃的原因主要是因为功能相比 KodExplorer 少了些,也没有公共目录,其他其实都挺好,尤其是 UI,采用的 MD 风格还做了 PWA。所以如果是颜值党且不需要公共目录的话完全可以用 CloudReve 搭建私有云。

CloudReve 的 UI 是真的不错

参考链接

NextCloudPi 相关资料

EOF