文章目录
关于V3
Cloudreve V3是一款支持通用云存储驱动的公有云文件系统网盘程序,以web形式管理,可在几分钟内帮助您构建自己的云。提供免费版及收费版本,目前很多网盘程序,均采用Cloudreve进行架构。
具有以下特色:
支持本机,从机,七牛,阿里云OSS,腾讯云COS,又拍云,OneDrive(包括世纪互联版)作为存储端
发布/下载支持客户端直传,支持下载限速
可对接Aria2离线下载
在线压缩/解压缩,多文件打包下载
覆盖全部存储策略的WebDAV协议支持
拖拽上传,目录上传,流式上传处理
文件拖拽管理
多用户,用户组
创建文件,目录的共享链接,可设置自动过期
视频,图像,音频,文本,Office文档在线预览
自定义配色,黑暗模式,PWA应用,全站单页应用
多合一打包,开箱即用
在沉寂将近一年后推出了全新的V3版本,曾经在本站介绍过V2版本,是基于php+mysql开发的。V3版本直接重构,采用go语言开发,直接将所有文件及环境打包成程序,大大降低了使用者的门槛,真正做到了3分钟即可部署一个公、私均可使用的网盘环境,并且用的全部是自己的壳子,摒弃了phpthink,安全性会更高。同时文件仅有一个,这就让Win系统临时搭建网盘简单易行,基本上一个U盘即可搭建一个公司的多用网盘系统。不过同样的,作为长久的生产系统,PHP+MYSQL比较适合网站。
编译安装(非必须)
注:这个完全是喜欢折腾的人才搞的飞机哈,时间比较少,不喜欢折腾的小伙伴,直接看快速编译即可,因为官方已经编译好了。
当然了没有你的系统的话,你只能手动编译了,目前有linux32位和64位,win系统64位的。如果你想修改程序的某些参数的话,例如标题、css文件等等,那么你就需要自行编译了。
安装依赖环境
使用yum安装,比较简单,将来更新也会方便点。本人用的是centos7-64BIT系统,采用的是PR的主机。
#升级yum yum update
#安装下yum的epel源
安装Golang
#先输入go version命令查看下版本,如果有并且版本比1.13高,跳到下一步。如果没有执行以下命令安装
yum install golang
#安装完继续执行go version
#go1.13.6 linux/amd64,证明安装完毕且版本符合
安装yarn
curl –silent –location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
#如果你的环境没有安装node.js,例如我基本上是全新环境,执行以下命令
curl –silent –location https://rpm.nodesource.com/setup_8.x | sudo bash –
#再执行以下命令即可
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
#yum安装
sudo yum install yarn
#最后运行下,测试看看安装好了没,以及环境变量是否添加
yarn –version
1.22.4
贴出我的安装图片,每个人环境不一样,可能提示也不一样,甚至需要的东西都不一样,可能环境集成的好坏差异,供参考
安装statik打包工具
开始构建
克隆代码
centos6可能需要升级git
构建静态资源
# 进入前端子模块 cd assets # 安装依赖 yarn install # 开始构建 yarn run build
完成后,所构建的静态资源文件位于 assets/build 目录下。
你可以将此目录改名为statics 目录,放置在 Cloudreve 主程序同级目录下并重启 Cloudreve,Cloudreve 将会使用此目录下的静态资源文件,而非内置的。
嵌入静态资源
# 回到项目主目录 cd ../ # 安装 statik, 用于嵌入静态资源 go get github.com/rakyll/statik # 开始嵌入 statik -src=assets/build/ -include=*.html,*.js,*.json,*.css,*.png,*.svg,*.ico -f
编译项目
# 获得当前版本号、Commit export COMMIT_SHA=$(git rev-parse --short HEAD) export VERSION=$(git describe --tags) # 开始编译 go build -a -o cloudreve -ldflags " -X 'github.com/HFO4/cloudreve/pkg/conf.BackendVersion=$VERSION' -X 'github.com/HFO4/cloudreve/pkg/conf.LastCommit=$COMMIT_SHA'"
首次编译时,Go 会下载相关依赖库,如果您的网络环境不佳,可能会导致这一步速度过慢或者失败。你可以使用 GOPROXY.IO 加快模块下载速度。
编译完成后,会在项目根目录下生成最终的可执行文件cloudreve
构建助手
build.sh
./build.sh [-a] [-c] [-b] [-r] a - 构建静态资源 c - 编译二进制文件 b - 构建前端 + 编译二进制文件 r - 交叉编译,构建用于release的版本
交叉编译
交叉编译前,你需要启用CGO ,正确安装目标平台的 GCC 工具链,并将CC 环境变量设定为对应平台的GCC 编译工具。
比如,在 Linux/AMD64 宿主平台上交叉编译 Windows/AMD64:
export GOOS=windows export GOARCH=amd64 export CC=x86_64-w64-mingw32-gcc export CGO_ENABLED=1 go build
快速部署
创建目录
先创建目录,并进入
#创建一个存放Cloudreve程序的目录,我这样创建是为了将来搭建网站环境反代程序的
mkdir -p /www/web && cd /www/web
下载程序
选择你对应的版本(也可以用git,我环境没装算了),下载
官方地址:https://github.com/cloudreve/Cloudreve/releases
#现在还是测试版,我选择的是V3-beta3,我去竟然还win64位的 wget https://github.com/cloudreve/Cloudreve/releases/download/3.0.0-beta3/cloudreve_3.0.0-beta3_linux_amd64.tar.gz
解压源码
tar -zxvf cloudreve_3.0.0-beta3_linux_amd64.tar.gz
给程序赋权
chmod +x ./cloudreve
参考图片
启动程序
启动cloudreve程序,在启动前最好先放行5212端口如何放行下面有,(暂时先不要去添加系统变量、开机启动之类,先调试好再去搞也来得及)
./cloudreve
故障排查
这个时候在浏览器打开你的网站应该就可以了,如果不可以请继续向下看(PR带的系统是默认端口是关闭的,但是搬瓦工是开启的)
#我的提示是5212端口,不知道你们的是不是 http://xxx.xxx.xxx.xxx:5212/
如果在浏览器打不开,应该是防火墙没打开,这个时候应该查看下端口,我就是这个原因。
先按住Ctrl+C先临时退出cloudreve
#查看开放的端口: firewall-cmd --list-ports #放行5212端口 firewall-cmd --zone=public --add-port=5212/tcp --permanent #重启防火墙以便生效 systemctl restart firewalld.service
#注意:因为第一次运行都会创建管理员帐号,所以你第一次运行失败的话,就必须进入同目录下将cloudreve.db文件删除
#之后再重新运行cloudreve ./cloudreve
此时候再打开浏览器应该就可以了。
注意第一次运行的时候会有点卡,没有缓存等。
打开浏览器输入上面的账户和密码登录即可。
功能预览
存储策略
离线下载
带多用户系统及组权限
后台运行及开机启动
官方文档上给出了两个方案一个是systemctl管理(centos7版本自带的,我肯定选这个),另外一个是通过Supervisor管理,这个需要先安装Supervisor。
两个方案二选一即可,我推荐centos7的用户选择systemctl去管理。
systemctl
新建一个cloudreve.service,添加到开机启动项里面就可以了,我不喜欢用vim命令,所以我本地建好了直接传上去的(不推荐,编码弄错会启动不了的)。怎么用都行,自己开心就好。
用Vim直接创建编辑
# 编辑配置文件 vim /usr/lib/systemd/system/cloudreve.service
cloudreve.service文件内容,记得把路径替换成你自己的文件路径。自己本机创建好cloudreve.service传到/usr/lib/systemd/system/这个目录下面,可能需要权限。
PS:官方给的配置文件少什么了一个service的类型,就是红色字体的那个地方
[Unit] Description=Cloudreve Documentation=https://docs.cloudreve.org After=network.target Wants=network.target [Service] Type=simple
WorkingDirectory=/www/web ExecStart=/www/web/cloudreve Restart=on-abnormal RestartSec=5s KillMode=mixed StandardOutput=null StandardError=syslog [Install] WantedBy=multi-user.target
注:这里有个小插曲,我按照官方文档配置,总是启动不了,搞了4次还是不能启动,程序单独运行就无问题,没有办法只能挑个service文件下载下来改下传上去了。后来对比下发现少什么了一个Type
更新重启服务
# 更新配置 systemctl daemon-reload # 启动服务 systemctl start cloudreve # 设置开机启动 systemctl enable cloudreve
管理命令
# 启动服务 systemctl start cloudreve # 停止服务 systemctl stop cloudreve # 重启服务 systemctl restart cloudreve # 查看状态 systemctl status cloudreve
Supervisor
首先安装supervisor,已安装的可以跳过
# 安装 supervisor sudo yum install python-setuptools sudo easy_install supervisor # 初始化全局配置文件 sudo touch /etc/supervisord.conf sudo echo_supervisord_conf > /etc/supervisord.conf
编辑全局配置文件:
sudo vim /etc/supervisord.conf
[include];
[include] files = /etc/supervisor/conf/*.conf
创建 Cloudreve 应用配置所在文件目录,并创建打开配置文件:
sudo mkdir -p /etc/supervisor/conf sudo vim /etc/supervisor/conf/cloudreve.conf
根据实际情况填写以下内容并保存:
[program:cloudreve] directory=/home/cloudreve command=/home/cloudreve/cloudreve autostart=true autorestart=true stderr_logfile=/var/log/cloudreve.err stdout_logfile=/var/log/cloudreve.log environment=CODENATION_ENV=prod
其中以下配置项需要根据实际情况更改:
directory
command
stderr_logfile
stdout_logfile
通过全局配置文件启动supervisor:
supervisord -c /etc/supervisord.conf
管理 Cloudreve 进程:
# 启动 sudo supervisorctl start cloudreve # 停止 sudo supervisorctl stop cloudreve # 查看状态 sudo supervisorctl status cloudreve
反向代理
在自用或者小规模使用的场景下,你完全可以使用 Cloudreve 内置的 Web 服务器。但是如果你需要使用HTTPS,亦或是需要与服务器上其他 Web 服务共存时,你可能需要使用主流 Web 服务器反向代理 Cloudreve ,以获得更丰富的扩展功能。
你需要在Web服务器中新建一个虚拟主机,完成所需的各项配置(如启用HTTPS),然后在网站配置文件中加入反代规则:
server
location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://127.0.0.1:5212; }
其他问题
1、Win系统下,直接下载解压,在CMD内输入即可运行。
2、端口修改,在程序砼目录下,打开conf.ini,修改把5212替换成你想要的端口即可,记得换完之后要设置防火墙。
[System] Mode = master Listen = :5212 SessionSecret = 系统生成 HashIDSalt = 系统生成
3、密码忘记怎么办
直接删除程序同目录下的cloudreve.db文件,之后手动运行下程序就可以重新创建。
4、文件配置
conf.ini
-c
./cloudreve -c /path/to/conf.ini
其中完整的conf.ini文件如下
[System] ; 运行模式 Mode = master ; 监听端口 Listen = :5000 ; 是否开启 Debug Debug = false ; Session 密钥, 一般在首次启动时自动生成 SessionSecret = 23333 ; Hash 加盐, 一般在首次启动时自动生成 HashIDSalt = something really hard to guss ; 数据库相关,如果你只想使用内置的 SQLite数据库,这一部分直接删去即可 [Database] ; 数据库类型,目前支持 sqlite | mysql Type = mysql ; 用户名 User = root ; 密码 Password = root ; 数据库地址 Host = 127.0.0.1 ; 数据库名称 Name = v3 ; 数据表前缀 TablePrefix = cd ; 从机模式下的配置 [Slave] ; 通信密钥 Secret = 1234567891234567123456789123456712345678912345671234567891234567 ; 回调请求超时时间 (s) CallbackTimeout = 20 ; 签名有效期 SignatureTTL = 60 ; 跨域配置 [CORS] AllowOrigins = * AllowMethods = OPTIONS,GET,POST AllowHeaders = * AllowCredentials = false ; Redis 相关 [Redis] Server = 127.0.0.1:6379 Password = DB = 0 ; 从机模式缩略图 [Thumbnail] MaxWidth = 400 MaxHeight = 300 FileSuffix = ._thumb
使用 MySQL
cloudreve.db
[Database] ; 数据库类型,目前支持 sqlite | mysql Type = mysql ; 用户名 User = root ; 密码 Password = root ; 数据库地址 Host = 127.0.0.1 ; 数据库名称 Name = v3 ; 数据表前缀 TablePrefix = cd
更换数据库后,所有的数据将会丢失,建议一开始使用的时候就及时配置
使用 Redis
[Redis] Server = 127.0.0.1:6379 Password = your password DB = 0
记得把数据库添加进去