金就砺则利

——荀子

✍文章痕迹

写作时间线

2023-01-29

  1. 安装原版系统,解决了连接问题
  2. 安装OMV(失败)

2023-01-31

  1. 安装了arozOS系统
  2. 实现了内网穿透
  3. 文章主体完成

2023-02-01

润色文章

2023-02-01

  1. 部署了alist网盘聚合系统
  2. 增加了alist服务5244端口映射到https://hub.si-on.top,(公共文件与https://cloud.si-on.top内容相同)

2023-02-04

  1. 补充了内网穿透安装的一些截图
  2. 补充了亮灯状态的解释

2024-05-27

  1. 整理了使用Docker的一些笔记

楔子

春节期间拾掇了过去一年中各个设备上的照片,并转移到了家里专门备份的300G硬盘上,期间居然在十年前的一个1G内存卡发现了小时候的一部分照片,十分欣慰,原本以为永远找不到了。

在整理完之后,又纠结了许久,终于下了狠心,断舍离,脱离对物品的执着!对把手机、相机都格式化了,新的起点,忘记过去吧!

又过了几天,想去回味回味,但觉着硬盘弄来弄去太麻烦,一旁正在认真吃灰的树莓派4B突然蹿入眼帘,emm,就决定是你了!物品准备:

  • 树莓派4B(32G的SD卡一张)
  • 一块闲置的硬盘
  • 散热风扇
  • 连接线若干(网线、电源线、USB线+合理的排线)

安装与连接

官方镜像

最好的还是官方的,下载树莓派专用镜像烧录软件: https://downloads.raspberrypi.org/imager/imager_latest.exe

里面的系统是比较全的,完全不需要在网上找镜像,软件里包含的镜像主要有:

  • Raspberry Pi (32/64)
  • Ubuntu
  • Manjaro
  • RISC OS Pi
  • 3d打印专用
  • 媒体播放专用
  • 家庭助手
  • 其他特殊用途
  • 自定义镜像

笔者觉得选择64位最简版本的Raspberry Pi OS Lite (64-bit)进行烧录就挺好,又快又不会有太多软件上的问题。

第三方NAS系统

ArozOS系统应该是除了OMV之外最好的,由于我安装OMV时失败了,故选择了这个系统,优点是非常简便,树莓派的安装镜像地址在仓库的读我文档里:tobychui/arozos: General purposed Web Desktop Operating Platform / OS for Raspberry Pis, Now written in Go! (github.com)

ssh连接

无屏幕连wifi

该文章Site Unreachable提供了六个方法来连接wifi。

在没有屏幕/HDMI/HDMI转接头等情况下,我们就需要盲连(无头骑士),操作很简单,在烧录的时候配置一下信息即可。

咱们这里是通过手机热点来创建来一个局域网,树莓派连接后通过手机上的termux查询ip,最后通过电脑连接上树莓派。

termux上使用ip neigh来查看ip

安卓上还有一个名为RasPi Check的软件,可以监控树莓派的状态,很是好用:

手动设置

烧录完成后,在SD卡boot分区新建文件为userconfig.txt,内容为:

1
pi:$6$Q7yQqYO94B9fI9jn$trNI8/yvcZ8WYleaYKN5qlrzQ3AhZXLZtcNkYJlSH16xGloh2ZiM4KeAay8GSBoQ09LZI/wMOxM3qeou7uZXq.

通过路由器管理面板找到树莓派的ip(笔者这里是直接网线连接的),然后用电脑借助ssh连接,scp传递文件。

1
2
ssh pi@192.168.101.??
密码:raspberry

指示灯状态解读

LED 颜色 功能 正常状态
ACT 🟢 card status 闪烁:SD卡正在活动(类似电脑的硬盘灯)
PWR 🔴 power 不闪烁:正常
FDX 🟠 full duplex 亮:全双工/不亮:半双工
LNK 🟠 link 亮:网络连接成功
100 🟠 100 Mbps 亮:100Mbps/不亮:1o Mbps

常见亮灯状态

换源

一切正常的话,会进入到树莓派的终端,现在就可以自由操作了,第一步先解决网络情况:

  1. 树莓派更换清华源(直接参考清华源的说明文档即可)

raspbian | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

  1. 新增github临时hosts(救急用)

Github hosts地址

  1. 更改DNS解析配置/etc/resolv.conf中的nameserver8.8.8.8或其他大厂的DNS,不然之后内网穿透会报错。
  2. VPN(特殊情形)
    1. 下载gephARMv7,并上传至树莓派(ssh附带的scp命令可以实现)
    2. 更改文件访问权限 chmod u+x geph4-client-linux-armv7
    3. 运行该程序 ./geph4-client-linux-armv7 connect --username xxx --password xxx --socks5-listen 0.0.0.0:9909
    4. 更改节点:先获取节点地址 ./geph4-client-linux-armv7 sync --password xxx --username xxx 然后在结果中寻找节点地址,节点地址的形式:xx-xx-xx.exits.geph.io,头一个xx是国家代码。结束目前的迷雾通进程,用如下的命令重新运行一次:./geph4-client-linux-armv7 connect --password xxx --username xxx --socks5-listen 0.0.0.0:9909 --exit-server "节点地址"

内网穿透

通过Cloudflare的cloudflared工具实现内网穿透。具体步骤如下:

  1. 打开域名管理页下的access,提示转移到Zero Trust,在Zero TrustAccess-Tunnels下新建tunnel (隧道)。
    打开access
    新建tunnel
  2. 填写隧道名称,选择操作系统(树莓派4B2023年系统,选择Debian-arm64-bit),生成安装代码(代码由三部分组成:下载、安装、自动配置,最主要的是最后一部分)。
    生成安装代码
  3. 由于网络问题,可以用其他方式下载cloudflared-linux-amd64.deb然后上传并安装,最后执行服务安装指令。成功时的状态
    这样以后,就可以在小小的树莓派上安装各种服务,大玩特玩了,跟VPS一样的体验!

成果

  1. 低成本NAS
  2. 小小的、低速的、无成本的、数据由自己掌握的云端服务器
    实体

软件部署

挂载硬盘

  1. 查看硬盘信息
1
2
3
4
5
6
7
8
9
10
sudo fdisk -l

# 部分输出信息
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: 545050A7E680
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7FE2BF3D-2689-4FBD-B25E-82E03198B626
  1. 查看分区的UUID
1
2
3
4
5
6
7
8
9
10
11
blkid /dev/sda2

# 输出信息
/dev/sda2:
LABEL="🐟"
BLOCK_SIZE="512"
UUID="2C622BE6622BB38C"
TYPE="ntfs"
PARTLABEL="Basic data partition"
PARTUUID="80436b2c-489b-4ae1-83bf-642ae75a05f9"

  1. 挂载到/media/fish目录
1
2
3
4
5
sudo mkdir /media/fish
sudo mount /dev/sda2 /media/fish

# 取消挂载
sudo umount /dev/sda2
  1. 自动挂载[1]:修改/etc/fstab文件
1
UUID=2C622BE6622BB38C       /media/fish        ntfs    defaults,nofail,x-systemd.device-timeout=1,noatime 0 0

运维平台

就我个人使用体验来看,宝塔适用于服务器上的运维,1panel在自己的小服务器上运行更丝滑,当然因人而异。因为后者开源,更新及时,所以目前一直在用。

两者的安装都很简单:

  • 宝塔通用安装脚本:
1
sudo curl -sSO http://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh
  • 1Panel 的Debian安装脚本:
1
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

arozOS自编译

1
curl -L https://raw.githubusercontent.com/tobychui/arozos/master/installer/install_for_pi.sh | bash

由于自编译时需要安装Go框架,但网络问题无法解决(谷歌连接太慢),遂放弃自编译,选择镜像进行烧录(见§第三方NAS系统)。

在SD卡刷镜像安装成功后,升级问题又难以解决,现在的固件时1.120,最新的beta时2.10,更新是OTA模式的,需要借用作者开发的一个名为aroz-online/launcher: The ArozOS launcher for over the air (OTA) updates (github.com)的工具,但我chmod 775后出现Segmentation fault错误,可能是用户组的问题,无妨无妨,1.120够用了。

*OpenMediaVault安装

openmediavault 是一个基于 Debian 的完整网络附加存储 (NAS) 解决方案。

  • 适用于 x86-64 和 ARM 平台
  • 具有完整的 Web 管理界面
  • 启用后可以通过 SSH 进行控制
  • 可以使用各种不同的协议访问文件存储,例如 作为 FTP、SMB/CIFS 或 NFS,对于用户和组,也可通过访问权限管理进行控制
    OpenMediaVault主要用于家庭环境或小型家庭办公室,但不限于这些场景。这是一个简单易用的开箱即用的(out-of-the-box)解决方案,每个人都可以安装和管理,无需网络和存储系统的专家级知识。该系统建立在模块化设计之上,安装基本系统后可以通过插件轻松扩展。其他第三方 插件可通过OMV-Extras存储库获得。

参考官方安装方法:在 Debian 上的安装 — openmediavault 6.x.y 文档与清华源帮助:OpenMediaVault | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
手动安装 openmediavault 密钥环:

1
2
3
apt-get install --yes gnupg
wget -O "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc" https://packages.openmediavault.org/public/archive.key
apt-key add "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc"

添加包存储库:

1
2
3
4
5
6
7
8
9
10
11
cat <<EOF > /etc/apt/sources.list.d/openmediavault.list
deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public shaitan main
deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages shaitan main
## Uncomment the following line to add software from the proposed repository.
# deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public shaitan-proposed main
# deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages shaitan-proposed main
## This software is not part of OpenMediaVault, but is offered by third-party
## developers as a service to OpenMediaVault users.
# deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public shaitan partner
# deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages shaitan partner
EOF

安装 openmediavault 软件包:

1
2
3
4
5
6
7
8
9
10
11
12
export LANG=C.UTF-8
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none
apt-get update
apt-get --yes --auto-remove --show-upgraded \
--allow-downgrades --allow-change-held-packages \
--no-install-recommends \
--option DPkg::Options::="--force-confdef" \
--option DPkg::Options::="--force-confold" \
install openmediavault-keyring openmediavault

omv-confdbadm populate

正常的话,到这一步就结束了。但谁让我命途多舛,偏偏又遇到了一个问题,而且搜了好久都找不到解决办法,遂放弃OMV,如有人能解决,我感激不尽。

1
2
3
4
5
6
7
> Errors were encountered while processing:
proftpd-core
proftpd-mod-vroot
openmediavault
proftpd-mod-crypto
proftpd-mod-wrap
proftpd-basic

Alist 网盘Hub

安装

1
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install
进行中
1
2
3
4
5
6
下载 Alist latest ...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
18 12.3M 18 2395k 0 0 11032 0 0:19:33 0:03:42 0:15:51 9959

配置

Guide | AList文档 (nn.ci)

安装后进入localhost:5244即可进入管理界面,然后参照说明文档进行配置,并添加多个云盘。
成果


  1. 参考此教程:浅析fstab与移动硬盘挂载方法 - Steins;Lab ↩︎