MENU

Cloudreve + Openwrt Minio 云盘方案

July 29, 2022 • 默认分类,Openwrt阅读设置

使用Cloudreve 对接Minio
想弄个私有云盘,原来想用可道云,但是感觉太臃肿,实际使用起来也有一些问题。无法上传文件,所以换了Clodreve,可以直接使用 亚马逊S3 存储策略对接Minio
我的Minio是使用家里面的软路由搭建的,环境为Linux Openwrt 5.4 aarch64版本,这里aarch64其实就是arm64,直接使用Minio的arm64二进制文件启动,然后外接了一块机械硬盘,挂载到/mnt目录
全部步骤如下

搭建Cloudreve

这里教程很多,我直接跟着一篇文章走的,但是后面找不到了,没收藏,具体步骤如下

环境:CentOS8 安装宝塔面板
安装Nginx 用来反向代理Cloudreve
如果想使用MySQL来驱动Cloudreve可以安装Mysql,我使用了MySQL5.7

安装完成后创建/www/wwwroot/cloudreve文件夹
Cloudreve下载链接
https://github.com/cloudreve/Cloudreve/releases
下载对应的版本,使用下面命令查看系统版本

[root@VM-16-5-centos ~]# uname -m
x86_64

所以我下载amd64版本
完成后将Cloudreve的Linux amd64文件上传上去
62e377fe308bb.png

然后面板软件商店设置搜索 supervisord 安装
进入Supervisor,点击添加守护进程
名称随意,我填的 Cloudreve
运行用户,我填的 root
运行目录,我填的 /www/wwwroot/cloudreve
启动命令,我填的 /www/wwwroot/cloudreve/cloudreve
62e377fe74559.png
然后启动即可,启动后点击日志查看,会输出默认用户名和密码,还有IP地址
由于我使用反向代理,所以就不用去服务器防火墙开启5212了
接着创建一个网站,然后设置反向代理
62e61ebd03f35.png
然后就正常解析域名绑定就可以了,访问域名登录即可,Cloudreve就算搭建完成了
这时候默认使用的数据库是SQLite,我这边切换到MySQL,方法如下
在Supervisor停止Cloudreve,然后在cloudreve目录下会有一个conf.ini,打开编辑填入以下内容

[Database]
; 数据库类型,目前支持 sqlite/mysql/mssql/postgres
Type = mysql
; MySQL 端口
Port = 3306
; 用户名
User = Cloudreve
; 密码
Password = password
; 数据库地址
Host = 127.0.0.1
; 数据库名称
Name = Cloudreve
; 数据表前缀
TablePrefix = cd
; 字符集
Charset = utf8

保存后创建对应的数据库即可,然后在Supervisor重新启动,这时候Cloudreve会重新初始化,以前的数据就没了,依然去日志查看默认用户名和密码

搭建Minio

这边建议访问国际版官网 https://min.io/ 因为中国版的下载地址已经西内了,不过可以参考国内版的文档
打开后点击Download,选择对应的版本即可,我这里是Linux Openwrt 5.4 aarch64,你们如果是其他的系统,下载对应的版本。具体依然可以使用下面命令

# root @ OpenWrt in ~ [13:45:50] 
$ uname -m
aarch64

选择对应版本
62e37acb4cb17.png
由于是Linux,所以直接wget下载就可以了,我这里放在了根目录下

# root @ OpenWrt in / [13:46:05] 
$ mkdir minio
$ cd minio
$ wget https://dl.min.io/server/minio/release/linux-arm64/minio
$ chmod +x minio

然后需要去Openwrt挂载磁盘,一般情况下会自动挂载,这里具体方法可以百度
62e37bf1b60c8.png
挂载完成后就可以启动Minio了

# root @ OpenWrt in /minio [14:17:09]
$ ./minio server /mnt/sda1

Minio会输出默认的地址和控制台地址,通常默认端口号为9000,控制台端口号为随机
这时候我们依然使用Supervisor来对它进程守护,Openwrt可以在后台安装Supervisor,其他系统自行百度,安装完成后进行设置
初始化全局配置文件

# 初始化全局配置文件
touch /etc/supervisord.conf
echo_supervisord_conf > /etc/supervisord.conf

编辑全局配置文件

vim /etc/supervisord.conf

将文件底部的[include] 分区注释符号;删除,加入新的配置文件包含路径

[include]
files = /etc/supervisor/conf/*.conf

创建 Cloudreve 应用配置所在文件目录,并创建打开配置文件

mkdir -p /etc/supervisor/conf
vim /etc/supervisor/conf/minio.conf

填入以下内容,这里
program:minio是应用名称
command
--console-address 为控制台端口号
--address 为端口号
/mnt/sda1是挂载的地址
/minio/minio是程序的地址,我的在根目录下,具体换成你的

directory是Minio的目录,我的在根目录下的minio,所以直接填/minio
stderr_logfile和stdout_logfile是log文件地址
user是运行的用户,这里写的root
MINIO_ROOT_USER 控制台账户
MINIO_ROOT_PASSWORD 控制台密码

[program:minio]
command=/minio/minio server /mnt/sda1 --console-address ":9001" --address ":9000"
directory=/minio
autostart=true
autorestart=true
stderr_logfile=/var/log/minio.err
stdout_logfile=/var/log/minio.log
user=root
environment=MINIO_ROOT_USER=admin,MINIO_ROOT_PASSWORD=password

通过全局配置文件启动 supervisor

supervisord -c /etc/supervisord.conf

日后你可以通过以下指令管理 minio 进程

# 启动
supervisorctl start minio

# 停止
supervisorctl stop minio

# 查看状态
supervisorctl status minio

这时候一般情况下,访问软路由:9001就可以打开控制台了,默认用户名和密码是minioadmin
然后就是使用Cloudreve对接minio,这里需要你的路由器有端口映射功能,还需要DDNS
我这里的DDNS设置如下
62e37f731fec1.png
然后就是开放端口
62e37f733526d.png
这时候就可以使用站长工具扫描一下端口号是否正常
62e37fe7971d8.png
接下来还没完,如果你的Cloudreve开启了HTTPS,那么Minio也需要开启HTTPS,这里我经过测试,使用CDN来开启是最简单和最好用的,如果参考Minio的文档上传证书文件的话,Minio的删除会出现问题,而且需要修改hosts文件。如果不使用cdn直接使用DDNS的域名,会出现问题
bug:我这里台式机网线接入通过192.168.31.2网关,无法访问,手机和台式机使用无线或者更改网关为192.168.31.1跨域正常访问,不知道怎么回事,有大佬可以解答一下吗?拓扑图如下
62e383c9550b7.png
先说一下临时解决办法,经过测试是此设备无法通过公网IP访问到内网,貌似是死循环了,也就是公网IP指向内网IP,内网IP又是网关,网关指向公网IP一直循环,但是无线却正常,总之解决办法就是在电脑添加hosts文件,把域名指向内网IP,也就是192.168.31.2
如果不使用CDN,还有一种办法就是可以使用NGINX反向代理,不过还不如直接在Minio开启https,开启https之后貌似会影响,
由于下载会走CDN,如果大文件下载会很消耗流量,建议还是直接ddns域名+端口,在minio开启https,又或者使用Cloudflare,不过这样下载速度就很慢了,毕竟免费,无奈国内的免费CDN均不支持非标端口,比如360的又或者创宇的加速乐,只能用80端口,还有百度的免费cdn,全部不支持非标端口。
EXE和APK文件的删除,这个问题貌似是Cloudreve导致的,官方回应是

This means that you already have a lock and we couldn't lock your resource. This is not a MinIO version-related problem you have conflicting locks on the object i.e

Either you are trying to delete while uploading - please provide a reproducer

具体怎么回事,我还需要测试,刚才测试小文件exe正常
方法如下
新建CDN,回源地址填你的DDNS域名,端口号为9000,回源协议为HTTP 申请一个证书配置到CDN,开启强制HTTPS,缓存设置为不缓存,智能压缩(gzip压缩)需要关闭,具体看图片
62e3815064153.png
62e38150c0d3a.png
62e381562fa80.png

OK后访问一下域名,如果跳转到域名:9001,应该就没问题了,如果想让控制台也在公网访问,你可以再创建一个CDN,也可以直接使用DDNS域名跟端口号9001访问

接下来就是Minio的设置了,进入管理后台创建一个存储桶
62e61ebc2db48.png
这里容量我选择的1TB
然后添加一个AK SK
62e377ff07735.png
AK和SK最好保存一下,因为SK是只显示一次的,我们一会需要在Cloudreve填写
然后设置一下区域,我设置的cn-north-1,在Cloudreve直接选择China Beijing
62e61ebcac8da.png
最后需要设置一下跨域
62e61ebbe24cb.png
这里建议填*,我填网盘地址还是会被拦截,不知道应该填什么

接下来就可以去Cloudreve添加存储策略了,选择Amazon S3
62e621341ef7e.png
填完直接下一步就行了,最好会让你设置跨域,我们前面已经设置好了,这里直接跳过就行,其实这里应该参考Cloudreve文档手动设置跨域,不应该填*,但是我在Cloudreve文档没找到设置办法

Last Modified: April 14, 2024