Cloudreve 是什么?
Cloudreve 可以快速搭建起公私兼备的网盘系统。其在底层支持不同的云存储平台,用户在实际使用时无须关心物理存储方式。可以使用 Cloudreve 搭建个人用网盘、文件分享系统,亦或是针对大小团体的公有云系统。
- 支持本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive (包括世纪互联版) 作为存储端
- 上传/下载 支持客户端直传,支持下载限速
- 可对接 Aria2 离线下载,可使用多个从机机点分担下载任务
- 在线 压缩/解压缩、多文件打包下载
- 覆盖全部存储策略的 WebDAV 协议支持
- 拖拽上传、目录上传、流式上传处理
- 多用户、用户组
- 创建文件、目录的分享链接,可设定自动过期
- 常见视频、图像、音频、文本、Office 文档在线预览
- 自定义配色、黑暗模式、PWA 应用、全站单页应用
- All-In-One 打包,开箱即用
- Docker 部署支持
直接部署方式:
下载安装
在 Github releases 页面下载适合服务器架构的软件包,然后
# 解压获取到的主程序:
tar -zxvf cloudreve_VERSION_OS_ARCH.tar.gz
# 赋予执行权限:
chmod +x ./cloudreve
# 启动 Cloudreve:
./cloudreve
在首次启动时,会创建初始管理员账号,需注意保管管理员密码,此密码只会在首次启动时出现。如果忘记初始管理员密码,需要删除同级目录下的cloudreve.db,重新启动主程序以初始化新的管理员账户。
Cloudreve 默认会监听5212端口。此时可以在浏览器中访问 http://服务器IP:5212
进入。
更好一些的启动方式是将其加入到 Systemd 的进程守护中去:
首先新建并编辑守护配置文件 /usr/lib/systemd/system/cloudreve.service
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysqld.service
Wants=network.target
[Service]
# 将 PATH_TO_CLOUDREVE 替换为程序所在目录
WorkingDirectory=/PATH_TO_CLOUDREVE
ExecStart=/PATH_TO_CLOUDREVE/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
保存退出后就可以使用以下命令进行管理:
# 启动服务
systemctl start cloudreve
# 停止服务
systemctl stop cloudreve
# 重启服务
systemctl restart cloudreve
# 查看状态
systemctl status cloudreve
详细配置文件
首次启动时,Cloudreve 会在同级目录下创建名为conf.ini的配置文件,可以修改此文件进行一些参数的配置,保存后需要重新启动 Cloudreve 生效。
也可以在启动时加入-c参数指定配置文件路径:
./cloudreve -c /path/to/conf.ini
一个完整的配置文件示例如下:
[System]
; 运行模式
Mode = master
; 监听端口
Listen = :5212
; 是否开启 Debug
Debug = false
; Session 密钥, 一般在首次启动时自动生成
SessionSecret = 23333
; Hash 加盐, 一般在首次启动时自动生成
HashIDSalt = something really hard to guss
; SSL 相关
[SSL]
; SSL 监听端口
Listen = :443
; 证书路径
CertPath = <PATH TO ssl_key>/fullchain.pem
; 私钥路径
KeyPath = <PATH TO ssl_key>/privkey.pem
; 启用 Unix Socket 监听
[UnixSocket]
Listen = /run/cloudreve/cloudreve.sock
; 数据库相关,如果你只想使用内置的 SQLite数据库,这一部分直接删去即可
[Database]
; 数据库类型,目前支持 sqlite/mysql/mssql/postgres
Type = mysql
; MySQL 端口
Port = 3306
; 用户名
User = root
; 密码
Password = root
; 数据库地址
Host = 127.0.0.1
; 数据库名称
Name = v3
; 数据表前缀
TablePrefix = cd_
; 字符集
Charset = utf8
; SQLite 数据库文件路径
DBFile = cloudreve.db
; 从机模式下的配置
[Slave]
; 通信密钥
Secret = 12345678912345671234567891234567****
; 回调请求超时时间 (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
; 最大并行执行缩略图生成的数量,填写 -1 时会根据 CPU 核心数自动决定
MaxTaskCount = -1
; 可填写 jpg / png
EncodeMethod = jpg
; 是否在缩略图生成完毕后立刻进行垃圾回收
GCAfterGen = false
; 缩略图质量
EncodeQuality = 85
并不是所有内容都需要,按需增减即可。
其中比较有用的是
- [Database]小结 控制数据库的种类和连接
- [Redis]小结 以使用Redis加快页面访问速度
- [SSL]小结 添加HTTPS方式增强安全性
Docker 方式部署
创建基础文件夹
<PATH TO uploads>
上传目录<PATH TO config>
配置文件存放目录<PATH TO db>
数据库目录<PATH TO avatar>
avatar头像目录<PATH TO ssl_key>
SSL证书目录
创建配置文件
在 <PATH TO config>
目录内新建 conf.ini
文件,内容如下:
# conf.ini
[Database]
DBFile = /cloudreve/db/cloudreve.db
# 若要启用HTTPS就添加如下内容
# crt_file 和 key_file 替换为自己的ssl证书
[SSL]
Listen = :443
CertPath = /etc/ssl_key/crt_file.crt
KeyPath = /etc/ssl_key/key_file.key
启动容器
docker run -d \
--name cloudreve \
-e PUID=1000 \ # optional
-e PGID=1000 \ # optional
-e TZ="Asia/Shanghai" \ # optional
-p 5212:5212 \
--restart=unless-stopped \
-v <PATH TO uploads>:/cloudreve/uploads \
-v <PATH TO config>:/cloudreve/config \
-v <PATH TO db>:/cloudreve/db \
-v <PATH TO avatar>:/cloudreve/avatar \
-v <PATH TO ssl_key>:/etc/ssl_key \
xavierniu/cloudreve
- 首次启动后请执行 docker logs -f cloudreve 获取初始密码。
为了方便管理,可以使用 docker-compose 或者在 Portainer 中用 Stack 部署
version: "3.1"
services:
cloudreve:
image: xavierniu/cloudreve:latest
container_name: cloudreve
network_mode: host
ports:
- "5212:5212"
environment:
- PUID=1000
- PGID=100
volumes:
- <PATH TO uploads>:/cloudreve/uploads
- <PATH TO config>:/cloudreve/config
- <PATH TO db>:/cloudreve/db
- <PATH TO avatar>:/cloudreve/avatar
- <PATH TO ssl_key>:/etc/nginx/ssl_key
restart: unless-stopped
- 首次启动后请执行 docker logs -f cloudreve 获取初始密码。
- 若使用 Portainer 则直接查看log获取初始密码。
升级
首先停止并移除正在运行的容器,然后拉取最新镜像
docker stop cloudreve \
&& docker rm cloudreve \
&& docker pull xavierniu/cloudreve
之后重复上面的运行步骤再次启动容器即可。