这篇文章上次修改于 1055 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
声明
本文未经允许禁止转载,且不得用于商业用途。
BILIBILI@Ancha安茗
前言
网上的NAS搭建教程其实并不算少,但是延伸到树莓派,延伸到OMV5,再延伸到Docker,其实并不算多。从OMV5的安装部署到Docker的安装,镜像的部署,到最终功能的实现,其实是需要一定的基础知识储备的,同时也应该做好大量试错的准备,我想这些都难不倒聪明的你。
这篇文章删删改改好多次,刚开始是打算面向新手的教程,但是由于我能力有限,且篇幅实在过长没有重点,因此还是把重点放在排错上,更多的会讲述可能会遇到的问题,问题的原因以及可能的解决方法,很少讲述相关的基础知识,希望大家有兴趣能够自行学习。由于自身才疏学浅,本文在分析原因和提供解决方法的时候会大量使用可能
这个词,仅作参考。
你可能需要了解:Linux的基础知识(用户及文件权限),网络的相关概念(TCP/IP),OpenMediaVault的使用方法,Docker的基本原理及使用方法。
想要动手实践的你请先看完整篇文章,我会以常规部署后报错并解决的流程讲述这次搭建过程,因此有很多错误可以事先避免,节省时间,提高效率。
前期准备工作
这部分网上教程众多,我们只提供一些镜像和工具的官网下载地址,讲述可能会遇到的问题,比较简略。
过程概述
- 准备镜像以及工具
- 烧写镜像
- 创建SSH文件
- 连接电脑或路由器
- SSH连接,更改密码
镜像及文件
- Raspberry OS 64位/Raspberry OS 32位
- Raspberry Pi Imager/Win32DiskImager/Roadkil's Disk Image
- PuTTY/JuiceSSH(Android)
烧写镜像
你可能会在下面两种种情况遇到报错。
- 开始烧写镜像时报错
- 烧写过程中报错
可能的原因:文件占用,Windows系统占用。
解决方法:删除所有分区,烧写过程中避免打开资源管理器。
在烧写完成后你可能会遇到下面这个问题。
- 烧写完成后看不见分区
可能的解决方法:重新插拔SD卡。
你可能会用到:
磁盘管理:右键此电脑->管理->磁盘管理
。
系统初始化
由于OMV5安装完成后无法使用WiFi,因此仅作为记录。
在boot
分区创建文件。
ssh
# 空文件。
wpa_supplicant.conf
# 修改ssid和psk。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={
ssid="YOUR-WIFI-SSID"
psk="Your-WIFI-PASSWOED"
key_mgmt=WPA-PSK
}
网络连接
可以连接电脑或者路由器,但是在这个项目中没有必要现在连接WiFi。
在连接电脑后,你可能会遇到下面的问题。
- 没有找到到树莓派的IP地址
- 树莓派没有网络
可能的原因:系统不作为网关,没有为树莓派分配一个iP地址,且树莓派没有与外部网络的连接。
可能的解决方法:将WLAN网络分享给以太网,系统将作为网关(192.168.137.1
)为树莓派分配一个IP地址,树莓派能够上网。
你可能会用到:
网络连接设置: 设置->网络和Internet->以太网->更改适配器选项
WLAN共享:右键WLAN->共享->允许其他网络用户通过此计算机的Internet连接来连接
SSH连接
默认用户名:pi
默认密码:raspberry
你可能会遇到以下问题。
- 连接被拒绝
可能的原因:用户名和密码错误,SSH未开启。
可能的解决方法:检查用户名和密码,检查是否创建了SSH文件,检查系统是不是Raspberry OS,查询对应系统的用户名密码。
小结
这部分比较简单,同时网上的教程非常多,因此只是讲了一下我遇到过的和可能会遇到的一些问题,这些问题非常容易解决,一般没有什么难度,毕竟这是上手树莓派的基本嘛,折腾树莓派,刷系统也是一种浪漫啊。
安装配置OMV5
由于是在树莓派上运行OMV系统,性能受限,也毕竟不是主流的X86架构,又因为OMV5的版本比较新,支持的插件不多,难免会有一些BUG。正是因为这些原因,才有了这篇文章。
过程概述
- 运行官方安装脚本查看报错信息
- 查询无法连接的网址的真实IP地址
- 再次运行官方安装脚本
- 重启后登录OMV后台
- 配置网络
- 配置基本设置,硬盘,文件系统
- 添加或管理用户和用户组
- 创建共享文件夹,分配权限
- 在
SMB/CIFS
中设置共享
安装OMV5
官方暂时没有提供树莓派可用的OMV5镜像,只提供了手动的命令行安装方法,详情移步官方文档。
我们按照官方提供的命令来安装。
更新索引:
sudo apt update
进入Downloads
目录下下载并运行OMV官方安装脚本:
cd Downloads/
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
# 报错:连接被拒绝。
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|::|:443... failed: Connection refused.
你可能会遇到以上报错。
可能的原因:由于DNS污染导致找不到正确的IP地址。
可能的解决方法:我们通过访问IP地址查询网站可以查找到raw.githubusercontent.com
的真实IP地址,目前我们得到的是199.232.68.133
。
编辑hosts
文件:
sudo nano /etc/hosts
在最后一行追加内容(IP地址根据实际情况修改):
# GitHub Start
199.232.68.133 raw.githubusercontent.com
# GitHub End
保存后重新运行安装命令,等待安装完成并重启,根据网络情况可能需要1小时以上,建议喝杯茶睡个觉。
你可能会用到:
IP地址查询:ipaddress.com/ip138.com
配置OMV5
重启后树莓派的IP地址会发生变化。
默认用户名:admin
默认密码:openmediavault
基本配置
如Web管理员密码,时区等。
也可以选择性的开启一些监测功能。
配置网络
我们需要删除原来的eth0
,重新添加以太网,IPv4选择静态
(连接路由器的话选择DHCP
,并在路由器后台为树莓派分配静态IP地址),子网掩码为255.255.255.0
,IPv6选择DHCP
后保存。
接着添加WiFi(连接路由器无需添加),IPv4和IPv6都选择DHCP
后保存。
在应用后。你可能会遇到一个报错。
可能的原因:一般是设置的IP地址与当前访问的不同而无法连接,说明设置生效了。
可能的解决方法:忽略。
配置硬盘
需要注意的事项:
- 外置机械硬盘为了安全起见一定要注意供电
- 固态硬盘实测可以直接使用
第一次使用的硬盘可以选择擦除硬盘后创建文件系统,建议使用ETX4。
你可能会遇到的问题。
- 在添加共享文件夹等其他操作时不显示外置硬盘设备
可能的原因:一般第一次使用不会出现这个问题,在重新安装OMV后大概率会在添加共享文件夹等操作时显示不出设备,可能是系统后台自动挂载了,处于安全考虑无法选择。
可能的解决方法:在文件系统
中卸载分区后重新挂载。
配置用户及用户组
善用用户以及用户组。每个使用者设置一个用户,每个需要读写共享文件夹的服务分配一个用户,把它们分配到对应的用户组中,并设置各自相应的权限,保证每个用户只能在规定的权限范围内读写文件,不能越权操作。
贯彻这样的原则,这样能够保证数据的相对安全,且更加方便管理。
同时,对于不需要登录SSH的用户,为了安全起见,我们应该把这些用户的Shell
修改为/usr/sbin/nologin
,确保这些用户无法使用命令行。
你可能会在删除默认的pi
用户时报错并遇到以下问题。
- 无法登录SSH
可能的原因:报错是因为无法删除默认的pi
用户,但是该用户可能已经不在任何一个用户组中,也不在ssh
用户组中。
可能的解决方法:重新添加pi
用户并把该用户分配到ssh
用户组中。
配置共享文件夹
我们首先也是关注权限问题,通过ACL
可以设置每个共享文件夹的用户,用户组以及其他用户的权限,根据每个共享文件夹的用途来设置。
如一个共享文件夹需匿名可访问,我们应该把其他用户的权限设置为读和执行,确保匿名用户可以正常进入文件夹读取文件。
在将根目录设置为共享文件夹以后,你可能遇到下面这个问题。
- 所有子文件夹匿名访问时都被拒绝,无法访问
可能的原因:根目录的其他用户的权限为无
,没有执行权限,目录的执行权限代表相应用户能否进入这个文件夹。
可能的解决方法:在根目录的权限设置中,为其他用户开放执行
的权限。
配置NFS服务
这个共享服务不是必须的,这个服务一般是Linux之间共享文件使用的,在这里讲的原因是后续Docker可以选择挂载CIFS卷和NFS卷,而NFS是需要手动配置的,因此在这里讲一下,一般挂载CIFS卷就可以了。
那么,既然我们能够选择CIFS卷,为什么还要专门多开一个服务用来给Docker挂载呢?
这个问题需要说明一下,在Docker中,挂载CIFS卷是需要设置账号密码的,并且是明文。而NFS不是基于账号认证的,只要在NFS服务端的配置中设置成127.0.0.1
,那么这个共享是十分安全的。
当然,由于有root用户权限才能够操作Docker,因此在一般情况下,只要为Aria2下载服务单独创建一个用户,且仅下载目录有权限读写,那么这样设置一般也是十分安全的。
在NFS中,我们需要指定客户端和特权,并重新修改扩展选项,这些扩展选项的功能这里仅仅讲使用的这几个,更多请自行查阅相关文档。
- sync:同步模式,内存数据实时写入磁盘
- all_squash:客户端上所有用户在使用NFS共享目录时都被压榨(映射)为一个普通用户
- anonuid/anongid:配合
all_squash
使用,定义被限定用户的UID和GID
需要注意的是,NFS的共享路径与SMB/CIFS不同,为/export/共享文件夹
。
你可能会用到:
查询用户ID:
id 用户名
需要注意的设置
在修改系统->OMV-Extras->设置->常规设置
的源时,你可能会遇到以下问题。
- 报错,且无法正常更新和安装
可能的原因:报错原因暂不清楚,对于无法正常更新和安装。推测相关进程被占用。
可能的解决方法:尽量不去设置源,如报错后无法正常更新,重启能够解决。
在卸载一些插件,如Downloader 5.1
时可能会遇到错误。
- 报错,插件实际已经卸载,但是在服务菜单中还留有
Downloader
子菜单
可能的原因:插件的BUG或者OMV的兼容问题。
可能的解决方法:只能说安装了就别卸载了吧,免得心烦。
小结
其实这部分内容说难不难,如果只是想要作为一个网盘实现文件的共享的话,到这里就可以结束了。同时你应该学习一些Linux基本的权限管理,配置安全组等来提高NAS的安全性,也应该进一步了解OMV和相关功能的使用方法。在没有刚需的情况下,也需要避免直接将NAS暴露在公网下。
由于OMV5的插件支持不多,如果对插件有需求的小伙伴可以考虑安装OMV4。同时由于未知原因(网络或者BUG),也没有搜索到相关问题,因此如果十分追求稳定性也可以考虑安装OMV4。
在本节的实践中,我们可能会面对很多小问题,但大多数可能会遇到的问题我们已经讲过了,几乎都能很快解决,因此,如果想做的话,就放手去做吧!
接下来是通过Docker以及Aria2镜像实现的远程下载功能,我们会通过图形化和命令行两种方式来安装部署。那么,你更青睐哪种呢?
安装配置Docker
由于Docker的部署方便,轻量化,性能高等特点,在没有插件支持的情况下,我们能够很方便地部署一些扩展服务,进一步丰富完善NAS的功能。
Portainer是图形化的Docker的可视化管理工具,本身也是通过Docker镜像的方式安装运行的,因此部署起来十分方便,没有难点。唯一的难点就是我们对Docker有一定的基本了解才容易上手,但是Docker的学习成本极低,相信你都看到这儿了,对你来说一定没有什么问题吧?
过程概述
- 安装Docker
- 部署Portainer(命令行非必须)
安装Docker(图形化)
我们通过OMV后台系统->OMV-Extras
的Docker
选项卡来进行安装管理Docker。
部署Portainer(图形化)
通过在Docker
按钮的右边这个按钮就可以进行Portainer的安装管理了。
安装完成后通过9000端口访问,第一次使用需要创建一个管理员账号。
安装Docker(命令行)
sudo apt install docker-ce -y
我们这里安装的是社区版。注意,如果在没有安装OMV之前单独安装Docker,需要先手动添加镜像源等,具体请看官方文档。
同时,在OMV后台也可以看到Docker被安装了。
部署Portainer(命令行)
其实Portainer能做的,命令行都能够完成,如果大家想要用命令行完成下面所有的部署,其实可以不使用Portainer。但是我们把这个当作接下来部署Aria2之前的开胃小菜。
需要注意的是,使用Docker需要root权限,建议切换到root用户操作或在每句命令前加上sudo
。
# 拉取镜像,不指定版本号默认最新
docker pull portainer/portainer
# 创建卷
docker volume create portainer_data
# 创建容器并运行
# 官方提供的命令中有8000端口的映射,但是没有说是干什么用的,我们平时也用不到,干脆这里就不配置了
docker run -d -p 9000:9000 \
--name Portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer
小结
这一部分十分简单,需要讲的细节都在上面讲完了,没有什么难点,熟悉Docker和Portainer后,如果对Docker感兴趣,你可以更加深入系统地学习一下Docker,它的学习成本并不高,相当容易理解,并且这会让你接下来部署Aria2更加得心应手。
部署Aria2
Aria2可谓是新生代的下载神器,除了迅雷专属链接和ED2K,其他的基本协议,包括BitTorrent 都支持,速度可观,不吸血。
Aria2的部署不难,难就难在Docker创建并挂载CIFS或NFS的数据卷,这里的报错是十分多的,各种各样的都有,如果没有基础的小伙伴上来直接莽,可能还真会被难住。但是不要慌张,接下来的内容都将会是重点,特别是在各种报错上,帮助大家排查错误,成功部署。
过程概述
- 为Aria2服务单独建立用户
- 拉取镜像(非必须)
- 创建
aria2_config
数据卷 - 创建
aria2_downloads
的CIFS/NFS数据卷 - 挂载数据卷,映射端口,设置环境变量等
- 创建容器
拉取镜像(图形化)
我们在DockerHub上搜索Aria2的镜像,并在筛选条件上勾上ARM
和ARM 64
,在这么多的结果中,我们选择superng6/aria2
这个镜像,进入页面后我们也能看到作者写的关于这个镜像的介绍。
在网上搜索的教程大多是X86架构的,镜像并不通用,不能拿来直接使用。
我们通过Portainer后台拉取镜像。
你可能会用到:
DockerHub:DockerHub
创建数据卷(图形化)
这一步是重中之重,如果配置出现差错,这一步可能需要重复多次。
首先创建config数据卷。只要起个名字就可以了。
接下来是本文最难的点,主要是协议问题,权限问题和路径问题,我们可以在这里创建NFS的数据卷和CIFS的数据卷,这两种都是可以的,个人更推荐CIFS的方式,可以少开个服务,前提是为此单独创建了用户。
我们先讲NFS数据卷,创建NFS数据卷,前提是要先配置好NFS服务,我们在前面讲过。
我们在创建NFS数据卷的页面中,保持默认的选项,把其他所有需要填写的填写上。
然后我们再讲CIFS数据卷。同样的,保持默认选项,把其他所有需要填的都填上,这里我们需要输入一个账号,如前面所说,为此专门建立一个用户单独设置权限比较妥当。
注意,NFS数据卷的文件夹路径与CIFS数据卷的并不相同,在前面多出一个/export
,望注意。
一般情况下,我们都会去这样设置,但是到了创建容器的时候总是频繁报错,而所有的报错的源头都是因为这个数据卷,无论是NFS数据卷也好,还是CIFS数据卷,都是差不多的错误。很难想到这其实是协议版本的问题。
NFS数据卷的协议版本应该为NFS
,CIFS数据卷的协议版本应该是CIFS v1.0
。如下。
到此,只要服务正常,文件夹路径没错,用户名密码没错,一般是没有其他问题了。
你可能会用到:
查看NFS共享目录:
showmount -e IP地址
创建容器(图形化)
第一步,填写名称,镜像,根据镜像作者提供的文档映射需要的端口。
在这里填写镜像,创建容器时会自动拉取,前面单独拉取镜像只是走个流程。
紧接着,我们需要挂载之前创建的数据卷。
我们还需要设置环境变量,使用命令行是需要在创建时就指定的,我们这里可以偷个懒,跳过这一步,等创建好镜像以后可以再回来修改,系统会为我们自动添加好所有环境变量。
这里我们需要修改的有SECRET
,FA
,PUID
,PGID
。具体每个环境变量的意义也可以参考作者提供的文档。
作者的建议是SECRET
使用UUID,这里我们为了演示删除了一半。
FA
必须修改,实测除了默认的falloc
以外都可以。这里推荐trunc
。
PUID
和PGID
根据自己的情况修改。
重启容器设置为除非手动停止。
全部设置好,保证没有问题后,直接创建容器就可以了。此时,你可能会遇到一系列问题。
- 找不到文件夹路径
- 链接被拒绝
- 其他各种有关数据卷的错误
可能的原因:数据卷的协议版本错误,数据卷中挂载的文件夹路径错误,相关服务没有开启,用户名密码错误。
可能的解决方法:仔细!仔细!仔细核对,勇于尝试!绝大多数都是数据卷的问题,对照上面的设置好好排查!只要有耐心就一定能成功!
同时你还可能还会遇到其他问题。
- 容器创建后立刻自动停止
可能的原因:镜像的架构不同,无法运行。
可能的解决方法:在DockerHub中寻找镜像时,筛选符合CPU架构的镜像。
你可能会用到:
查询用户ID:
id 用户名
查看NFS共享目录:
showmount -e IP地址
拉取镜像(命令行)
同样,例行先拉取。
# 不指定版本号默认最新
docker pull superng6/aria2
你可能会用到:
DockerHub:DockerHub
创建数据卷(命令行)
由于在之前已经把相关问题全部讲过了,因此这里直接一步到位。
相关参数请根据需要替换。
# 创建config数据卷
docker volume create aria2_config
# 创建downloads数据卷(NFS)(二选一)
docker volume create -o type=nfs -o device=/export/Downloads -o o=addr=127.0.0.1,rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14 aria2_downloads
# 创建downloads数据卷(CIFS)(二选一)
# 注意修改用户名密码
docker volume create -o type=cifs -o device=//127.0.0.1/Downloads -o o=username=AriaDownLoads,password=DownLoadsTest,vers=1.0 aria2_downloads
创建容器(命令行)
这里创建容器时把环境变量也带上。由于行数过多,建议复制出来修改后粘贴到终端。
需要修改PUID
,PGID
,SECRET
,FA
,其他根据需要修改。
其中PUID,
PGID`值需为0,否则无权限下载文件。
# 注意修改环境变量
docker run -d \
--name=aria2 \
-e PUID=1026 \
-e PGID=100 \
-e TZ=Asia/Shanghai \
-e SECRET=yourtoken \
-e CACHE=512M \
-e UpdateTracker=true \
-e FA=falloc \
-e QUIET=true \
-e RECYCLE=true \
-e MOVE=true \
-e SMD=false \
-e ANIDIR=ani \
-e MOVDIR=movies \
-e TVDIR=tv \
-e CUSDIR=cusdir \
-p 6881:6881 \
-p 6881:6881/udp \
-p 6800:6800 \
-v aria2_config:/config \
-v aria2_downloads:/downloads \
--restart unless-stopped \
superng6/aria2
小结
这部分也算是一个综合应用了,把之前的OMV和现在的Docker和Aria2正式连接起来,有一定难度,但是既然我都把避坑方法都写在这里了,还有什么好怕的呢,只要动手能力够强,没有什么是完成不了的。刚开始我在创建容器的时候频频出错,没有思路,也搜索不到相关问题的文献,然后我就一口气把NFS,Samba以及Docker全都自学完了,回过头多测试几下就出来了。
因为Docker类似于虚拟机引擎,容器好比是一个子虚拟机,所以一般怎么折腾都不会坏,大胆尝试就行了。
在接下来,我们会使用AriaNG来管理Aria2。
AriaNG的部署与调试
只要我们能够把上面的Aria2搭建完,后面的就都没有什么难度了。
AriaNG是Aria2的图形化Web前端,有的Aria2镜像也同时集成了AriaNG,其实没有什么必要,一个容器运行一个服务就可以了,而且AriaNg相当于客户端,我们随便找一个在线Web页面就能够使用,因此搭建AriaNG服务不是必须的。
不过既然要挥洒笔墨,不如就贯彻到底了,我们顺便把AriaNG的部署也讲了,有需要的人可以尝试一下。
过程概述
- 部署AriaNG(非必须)
- 调试下载功能
AriaNG部署(图形化)
我们这里使用p3terx/ariang
这个镜像,当然在DockerHub上找其他镜像也完全没问题。
我们根据作者的说明文档映射端口后直接创建就可以了。创建后通过6880
端口访问。
你可能会用到:
DockerHub:DockerHub
AriaNG部署(命令行)
# 创建镜像时会自动拉取镜像,不指定版本号默认最新
docker run -d \
--name AriaNG \
--restart unless-stopped \
-p 6880:6880 \
p3terx/ariang
你可能会用到:
DockerHub:DockerHub
调试下载功能
我们访问任何一个AriaNG的页面都可以远程管理我们的Aria2。在这里我们需要设置一下AriaNG来连接我们树莓派上的Aria2服务。
填上我们树莓派在局域网中的地址和密钥后刷新页面即可生效。密钥就是我们Aria2服务SECRET
环境变量的值。
本着人人为我我为人人的精神,我们应该到Aria2设置->BitTorrent设置
中设置一个最小做种时间
的值以便于我们在BT下载完成之后做一段时间的种。同时我们还可以设置最小分享率
,最大上传速度
等增加上传速度和上传量,这里只是做一个示范,但是作为一个合格的种子选手,我们也可以适当增加分享率和做种时间。
到此,你可以找一些资源来试着下载一下了。在这一步,你可能会遇到一些问题。
- 下载时文件卡在0%不动
- 下载错误,提示文件系统错误等字样
可能的原因:这里一般是文件分配方法的问题,或者资源无效,又或者是6881的TCP/UDP端口未开放。
可能的解决方法:我们可以去Aria2配置文件中修改(不建议),也可以修改容器的环境变量FA
。一般如果前面设置了就没有问题。也可以换一个确定有效的资源再下载尝试,记得检查是否放行了6881的TCP/UDP端口。
或者连接问题。
- Aria2状态一直是连接中
可能的原因:IP地址错误或密钥错误。
可能的解决方法:检查IP地址是树莓派的内网地址,检查密钥与环境变量或配置文件中的密钥相同。
你还可能遇到上传上的问题。
- 做种时上传没有速度或很慢
可能的原因:其他客户端获取不到我们树莓派的IP地址,或运营商封禁6881
端口。
可能的解决方法:在路由器中映射BT的6881-TCP/UDP(ALL)
端口(待验证)。如果是运营商屏蔽,可以尝试去配置文件中修改端口(注意容器映射端口)。
又或者是下载问题。
- 下载速度在3M左右上不去
可能的原因:树莓派3B的话实测4.5M/S的速度差不多是极限速度了,在下载时BT上传没速度也有这的功劳,树莓派3B的Wifi模块实在是不给力啊!同时WiiFI的信道干扰对下载速度也有一定影响。
可能的解决方法:憋着!要么换个4B,不光能当下载机,还能部署个Minecraft-Server服务(DockerHub有相关镜像)。
你还会遇到一个小问题。
- 在AriaNG中设置的配置被重置了
可能的原因:Aria2容器的/config
文件夹映射到了容器卷中,容器重启时可能会导致容器中的文件丢失。
可能的解决方法:把/config
文件夹直接映射到主机目录中。
你可能会用到:
在线AriaNG地址:sleele.gitee.io/ariang.mayswind.net
小结
AriaNG很好上手,设置也十分简单,跟着一步步下来没有什么难点。
对于是否使用其他人搭建的AriaNG服务的话,如果你的树莓派只是在内网使用的话,可以使用别人部署好的服务,如果是在公网上的话,使用自己搭建的会比其他人搭建的稍微安全一些,或者考虑用更加安全的RPC协议来管理吧。
我认为在BT下载方面,树莓派既然是24小时开机的,WiFi不管多少流量都是一个价,那对于做种就没有必要太吝啬,防止下一个吸血雷的诞生,从我做起。
结语
写教程类的太累了,前前后后8000多字写了一个多星期,写了好几版草稿。最开始我时打算写面向新手的教程的,详细到OMV,Portainer的使用方法,但是最后我并没有写,主要就是如果每一个点都要一点点解释是在太慢太长了,同时也没有所谓的重点了,何不让大家自己去学习呢,我相信能看到这儿的你一定不简单吧?
全网可能都没有类似的教程了,本文在排错上也花费了不少的笔墨,虽然开头写着是你们可能会遇到的问题,但文章当中写到的每一个问题一定都是我遇到过的,并且通过搜索引擎搜索,或者直接去学习相关的知识,才最终得以解决。一块小小的树莓派并不值钱,但是在玩树莓派的过程中同样学到了不少的知识,也许没有这个树莓派,我一辈子都不会点开B站收藏夹中吃灰的学习视频吧?
只有一条评论 (QwQ)
陈夼发:文章真不错https://www.renhehui.com/renhehui/2432.html