基于树莓派4B+Debian-PI+KodExplorer+Aria-Pro搭建的私人云盘
本文分为上下两部分,上为本地云盘搭建教程,下为内网穿透教程
最开始打算直接用 Raspbian 的,不给打算尝试下不同的固件,因为在服务器上长期使用 CentOS ,所以打算试试树莓派版,但是只有华为有一个镜像
http://mirrors.huaweicloud.com/centos-altarch/7.8.2003/isos/armhfp/
在尝试后发现有些问题,于是再度寻找,然后找到了一个叫 Debian-Pi 的系统,有 64 位版本,其中 web 加强版集成了 web 管理页面、 docker 、 CeCOS-CaaS 、 bbr ,如果重装系统,需要部署的工具就更少,更加方便,官方宣称的文件读写速度也优化过,不过稳定性和兼容性尚待检验
https://github.com/openfans-community-offical/Debian-Pi-Aarch64
截止 2020-10-02 ,最新的 plus++ 版本(即 web 加强版)为 2020-06-22-U4 ,直接下载压缩包并解压,解压后的 img 镜像文件约有 4G 大小,选择一张 C10 速度起步的 tf 卡,建立一个空白分区并格式化为 fat32 格式(或其他可以被 win32diskimager 识别的格式),然后使用 win32diskimager 刷入固件,完成后插入树莓派开机,需要等待几分钟时间完成初始化
基础设置
自带的 WebUI 有三,但是因为 ssh 可以用软件连接,所以只需要用到 9090 端口的后台 gui 和 8443 端口的 cecos 工具,笔者因使用命令行操作,所以直接用网线直连,在路由器中找到树莓派对应的 ip ,带上端口号进入后台,用户名和密码为 pi 和 raspberry ,进去后设置 root 账号密码,并去掉锁定, pi 账户的密码可以在后台修改也可以用命令行修改,命令在 readme 里面有介绍,笔者选择在后台修改
然后使用 ssh 工具登录,初始用户密码为 pi 和 raspberry ,进去后修改密码
passwd
然后切换到 root 账户
su root 或者 sudo -i
winscp如要在root权限下操作需要在【高级-环境- SFTP - SFTP 服务器】中将默认改为下文
sudo su -c /usr/lib/sftp-server
其中路径可以在命令行中查询到
whereis sftp-server
然后禁用ipv6,当然可以不禁用,因为有些原因导致我倾向于禁掉ipv6,通过在 /etc/sysctl.conf 中添加以下语句即可,同时开启 bbr
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
然后输入以下命令使之生效
sysctl -p
可以通过以下命令检测是否开启成功,如果返回值中含有 bbr 或 fq 则开启成功
sysctl net.ipv4.tcp_available_congestion_control sysctl net.ipv4.tcp_congestion_control sysctl net.core.default_qdisc lsmod | grep bbr
然后重启系统,当然可以不重启,但重启能检验很多功能是否正常,比如 ssh ,检查越早做,后面返工的概率越低
systemctl reboot
安装防火墙 ufw ,在 CentOS 上我用 firewall ,但是,Debian上有 ufw ,这么好用为什么不用呢(
apt-get update apt-get upgrade apt-get install ufw
添加软链
ln -s /usr/sbin/ufw /usr/bin/ufw
然后修改配置文件 /etc/default/ufw 将 yes 改为 no ,取消 ipv6 相关设置
IPV6=no
开放需要的端口
ufw allow 22 ufw allow 80 ufw allow 8443 ufw allow 9090
启动防火墙,自动添加到开机启动项
ufw enable
检查是否开启对应端口,如果没有,则再添加一次
ufw status
至此,基础配置完成
挂载硬盘
如果想直接用tf卡做云盘当然可以,不过体验自然不如外接硬盘,在不熟悉的情况下,可以先用闲置硬盘练手,容错率高
首先在其他电脑上格式化移动硬盘,这样速度比较快,比如 diskgenius 就可以格式化为 ext4 ,插入移动硬盘,注意靠近网卡侧的为 usb3.0 ,实测跑满百兆带宽没问题, smb 能跑到千兆带宽,所以还需调试和优化
首先查看硬盘的 uuid ,因为如果按路径挂载,可能出现掉盘后路径变更或多硬盘无法区分的问题,所以使用 uuid 来挂载
ln -s /sbin/blkid /usr/bin/blkid
blkid
修改 /etc/fstab ,使其能开机挂载,命令最后两个参数表示不需要dump和不需要检查顺序,需要则改为 1 ,硬盘标识根据上面查到的结果修改
UUID=硬盘标识 /var/media/ssdData ext4 defaults 0 0
路径可以自行设定,然后手动创建对应路径,然后使用mount命令挂载,笔者使用的是常用路径,如修改后文记得同步修改
mount -a
KodExplorer
在尝试可道云之前尝试了 OMV5( OpenMediaVault5 ),但是发现使用非常困难,存在有大量无法解决的问题,安装时间也非常漫长,而提供的功能并没有让人眼前一亮,多数服务可以直接手动部署,经过两天的 debug 尝试,最终放弃,在对比了 NextCloud 和 SeaFile的界面后,选择了可道云 KodExplorer (笑),当然还有一个新的 KodBox ,官方宣称是代码重构后的产物,但评论反馈认为不适合个人云盘,于是选择了 KodExplorer
https://github.com/kalcaddle/KodExplorer
http://bbs.kodcloud.com/
首先界面就能眼前一亮,并且提供的功能非常多且方便,因为基于docker部署,所以去docker官网找镜像,最终找到一个基于4.40开发的固件,同时自带了 AriaNG , docker-cli 命令见 readme ,这个镜像集成了 mongodb 、 nginx 和 php ,所以可以一键布置,开箱即用
https://github.com/dennischancs/kodexplorer
docker run -d \ --name kodexplorer \ --hostname=kodexplorer \ -p 5210:5210 \ -p 5218:5218 \ -v /var/media/ssdDATA/koddata:/koddata \ -v /var/media/ssdDATA/ganaku:/koddata/Group/public/home/ssdDATA \ --restart always \ dennischancs/kodexplorer
上面为笔者的命令,其中路径更改为了挂载路径,因为默认的路径是放在 tf 卡的,而可道云的个人文件夹就在默认路径下,为了方便,都设置到移动硬盘上,减少了很多限制,如果之前用了其他路径,这里需要相应地更改,同时 restart 的参数改为了 always ,键入后便开始拉取仓库,稍等片刻即可使用,记得开放端口,首次运行需要等待一定时间,不要刷新网页,首次访问会让设置管理员密码,进去后右上角设置打开 csrf 防跨站攻击,删除掉两个游客账户,其他根据需求自行修改即可
如果部署之后需要修改路径,需要先停止 docker 然后找到容器的 ID
docker ps -a
然后根据 ID 找到文件夹
/var/lib/docker/containers/ID/
然后打开文件修改配置
hostconfig.json "Binds"项 config.v2.json "MountPoints" 项
CecOS-CaaS
既然部署完 docker 了,就体验下 cecos 。首先要运行 docker 才能运行 cecos ,端口为 8443 ,注意需要使用 https 访问,否则会显示服务器拒绝连接,初始账号密码为 admin 和 password ,登录后记得修改密码,功能本文不详细介绍,可以自行查阅,笔者主要用来查看 docker 的详情和状态
Aria-Pro
使用的是上面可道云 docker 开发者的推荐版本, github 中有 docker-cli 安装命令,修改 token 即可,安装完后需开放 6800 和 6888 端口
https://github.com/P3TERX/Docker-Aria2-Pro
安装完成在可道云顶栏点击 AriaNG 或访问 5218 端口即可打开 AriaNG 页面,在 [ AriaNG 设置 - RPC( 192.168.XXX.XXX:6800 ) - Aria2 RPC 密钥] 中添加上述 token ,然后重新载入即可使用,其他设置可以根据需求自行修改
大文件传输
这时可以尝试传输些大文件压测一下了,上传下载都是必要的,在尝试了2G文件的上传后,直接体验到了掉盘,重新挂载上传,再度掉盘
经分析,应该是供电问题,因此加了一个可以额外供电的 USB HUB 。同时,将可道云的配置参数增大,配置文件的地址可以通过下面命令获得,其中容器 ID 只要能区分出即可,不用全部输入,如果几个容器第一位完全不同,甚至输入第一位都没问题
docker ps -a docker inspect 容器ID
往下翻可以找到 "UpperDir" 即可看到红色部分路径
/var/lib/docker/overlay2/Id/diff/var/www/html/config/config.php
@set_time_limit(3600);//20min pathInfoMuti,search,upload,download... @ini_set("max_execution_time",3600); @ini_set('memory_limit','2000M');// @ini_set('session.cache_expire',3600);
然后将下面文件中的切片增大,官方推荐大小为5M,然后并发数改到15,修改后速度能提升到20MB/s左右,不过要激活页面才能稳定,否则会间歇性掉速
/var/lib/docker/overlay2/Id/diff/var/www/html/config/setting.php
'updloadChunkSize' => 1024*1024*5, //5M;分片上传大小设定;需要小于php.ini上传限制的大小 'updloadThreads' => 15, //上传并发数;部分低配服务器上传失败则将此设置为1,
重启docker后尝试下,笔者在修改到下面配置并增加HUB后可以稳定上传4G大小的文件了,暂时未测试更大的文件,稳定性相关内容会在后续更新中添加
至此,就可以开始体验私有云盘了,并且由于公共目录是映射得到的,卸载和重装可道云不会对其产生任何影响,非常舒适了
感谢
定位那个docker容器占用overlay2的问题之容器磁盘定位 https://blog.csdn.net/hnmpf/article/details/90237465
Debian 9/10快速开启Google BBR的方法,实现高效单边加速
https://www.moerats.com/archives/297/
kodbox api 配置优化
https://doc.kodcloud.com/v2/#/help/options