Cloudreve: 从社区版升级到捐助版
Cloudreve: 从社区版升级到捐助版
1. 介绍
hi,我是筱筱,今天介绍的Cloudreve是一个开源的网盘应用,由GO语言开发,它可助你即刻构建出兼备自用或公用的网盘服务,通过多种存储策略的支持、虚拟文件系统等特性实现灵活的文件管理体验。
社区版免费,无用户限制,功能可满足个人使用,具体的介绍看这篇文章 todo,pro版有多存储策略和积分下载等功能
今天来介绍下怎么从社区版升级为pro版
文章内有完整的介绍,包括单文件启动,制作一个镜像启动和不依赖主程序的启动(推荐),建议大家完整的读过一遍后选择自己适合的方式
最重要的是别忘记备份数据,有问题欢迎评论留言
2. 大概步骤
-
有正在运行的社区版程序
新安装的可以跳转到第三步的直接启动
有经验的可以直接看第五步最终优化
-
下载key.bin文件和pro版程序
-
迁移数据
-
手动运行,检查数据
-
制作一个docker镜像后运行
3. 开始
准备工作
本文没有使用到redis/mysql等配置文件,但大体的操作步骤都是一样的
- 先看下现在使用的社区版网盘,里面有部分文件,存储用的是对象存储:
- 接着绑定下域名和授权根域名,这里我用pro.abc.com作为pro版的演示域名
- 下载对应域名的授权秘钥和主程序
怎么看自己的电脑架构:
> lscpu命令
[root@beep-1 ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
...
查找 Architecture 字段,如果输出结果中包含 x86_64 或 i686,则表示系统的 CPU 架构是 AMD(或者是 x86 架构的 Intel CPU)。如果输出结果中包含 armv7l、aarch64 或 arm64,则表示系统的 CPU 架构是 ARM。
所以我要下载的主程序就是cloudreve_3.8.4_linux_amd64
将文件解压后,取出主文件cloudreve和key.bin一起上传到服务器或自己的Nas中
然后为域名pro.abc.com添加一个解析到服务器,并且设置反向代理到5212端口.如果用的是宝塔,就添加一个网站添加反代,这块具体不细说了,大家都能明白,能访问到网盘服务就行
直接启动
// 先看下5212端口是否被占用
[root@1 proPan]# lsof -i:5212
// 启动程序
[root@1 proPan]# ./cloudreve
___ _ _
/ __\ | ___ _ _ __| |_ __ _____ _____
/ / | |/ _ \| | | |/ _ | '__/ _ \ \ / / _ \
/ /___| | (_) | |_| | (_| | | | __/\ V / __/
\____/|_|\___/ \__,_|\__,_|_| \___| \_/ \___|
V3.8.4 Commit #cfd394a Pro=true
================================================
[Info] 2024-02-05 14:11:22 Initializing database connection...
[Info] 2024-02-05 14:11:22 Start initializing database schema...
[Info] 2024-02-05 14:11:23 Admin user name: admin@cloudreve.org
[Info] 2024-02-05 14:11:23 Admin password: Xu6fSulY
[Info] 2024-02-05 14:11:24 Start executing database script "UpgradeTo3.4.0".
[Info] 2024-02-05 14:11:24 Finish initializing database schema.
[Info] 2024-02-05 14:11:24 Initialize task queue with WorkerNum = 10
[Info] 2024-02-05 14:11:24 Initialize crontab jobs...
[Info] 2024-02-05 14:11:24 Current running mode: Master.
[Info] 2024-02-05 14:11:24 Listening to ":5212"
启动成功后生成用户名和密码,同时会在当前目录生成cloudreve.db数据库文件和conf.ini配置文件
用域名pro.abc.com访问,能登录并且正常使用
如果是pro2.abc.com(已添加解析和反代,但不是授权的域名),登录后会提示错误
手动做成docker启动
现在大部分都是docker,社区版也提供了docker方式的部署,但并没有pro版的镜像,所以需要我们手动创建一个并使用.
Dockerfile文件
在**/www/wwwroot/proPan**下新建个Dockerfile文件,写入下面的内容:
FROM alpine:latest
WORKDIR /cloudreve
COPY cloudreve ./cloudreve
RUN apk update \
&& apk add --no-cache tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& chmod +x ./cloudreve \
&& mkdir -p /data/aria2 \
&& chmod -R 766 /data/aria2
EXPOSE 5212
VOLUME ["/cloudreve/uploads", "/cloudreve/avatar", "/data"]
ENTRYPOINT ["./cloudreve"]
创建个data目录,把数据库,配置文件和其他的文件夹复制进去,cloudreve和key.bin不动,目录结构是这样的:
制作镜像
// 制作之前没有pro-cloudreve这个镜像
[root@1 proPan]# docker images | grep cloudreve
xxdl_cloudreve 1.0 4caf53ee5af3 5 days ago 108MB
xavierniu/cloudreve latest 44aae96c0e0e 21 months ago 105MB
// 制作一个名为pro-cloudreve的镜像
[root@1 proPan]# docker build -t pro-cloudreve .
Sending build context to Docker daemon 50.22MB
Step 1/7 : FROM alpine:latest
... 省略
Successfully built f127e5aede51
Successfully tagged pro-cloudreve:latest
// 再次查询,已经有了镜像
[root@1 proPan]# docker images | grep cloudreve
pro-cloudreve latest f127e5aede51 31 seconds ago 111MB
xxdl_cloudreve 1.0 4caf53ee5af3 5 days ago 108MB
xavierniu/cloudreve latest 44aae96c0e0e 21 months ago 105MB
[root@1 proPan]#
docker-compose.yml
再创建一个docker-compose.yml文件
version: "3.8"
services:
cloudreve:
container_name: cloudreve
image: pro-cloudreve:latest
restart: unless-stopped
ports:
- "5212:5212"
volumes:
- ./cloudreve:/cloudreve/cloudreve
- ./key.bin:/cloudreve/key.bin
- ./data/tmp:/data
- ./data/uploads:/cloudreve/uploads
- ./data/conf.ini:/cloudreve/conf.ini
- ./data/cloudreve.db:/cloudreve/cloudreve.db
- ./data/avatar:/cloudreve/avatar
depends_on:
- aria2
aria2:
container_name: aria2
image: p3terx/aria2-pro
restart: unless-stopped
ports:
- 6800:6800
- 6888:6888
- 6888:6888/udp
environment:
- RPC_SECRET=123456789
- RPC_PORT=6800
volumes:
- /mnt/user/appdata/aria2/config:/config
- /mnt/user/fast_download/aira_down/:/data
启动镜像
// 启动镜像
[root@1 proPan]# docker-compose up -d
[+] Running 3/3
⠿ Network propan_default Created 1.1s
⠿ Container aria2 Started 1.7s
⠿ Container cloudreve Started 3.0s
// 查找镜像
[root@1 proPan]# docker ps | grep pro
91b09eb8bba5 pro-cloudreve:latest "./cloudreve" 18 seconds ago Up 15 seconds 0.0.0.0:5212->5212/tcp, :::5212->5212/tcp cloudreve
a24acb6b882f p3terx/aria2-pro "/init" 18 seconds ago Up 16 seconds 0.0.0.0:6800->6800/tcp, :::6800->6800/tcp, 0.0.0.0:6888->6888/tcp, :::6888->6888/tcp, 0.0.0.0:6888->6888/udp, :::6888->6888/udp aria2
// 查看日志
[root@1 proPan]# docker logs -f 91b
___ _ _
/ __\ | ___ _ _ __| |_ __ _____ _____
/ / | |/ _ \| | | |/ _ | '__/ _ \ \ / / _ \
/ /___| | (_) | |_| | (_| | | | __/\ V / __/
\____/|_|\___/ \__,_|\__,_|_| \___| \_/ \___|
V3.8.4 Commit #cfd394a Pro=true
================================================
[Info] 2024-02-05 15:26:11 Initializing database connection...
[Info] 2024-02-05 15:26:11 Database version fulfilled, skip schema migration.
[Info] 2024-02-05 15:26:11 Initialize task queue with WorkerNum = 10
[Info] 2024-02-05 15:26:11 Initialize crontab jobs...
[Info] 2024-02-05 15:26:11 Current running mode: Master.
[Info] 2024-02-05 15:26:11 Listening to ":5212"
注意看,日志里面并没有*Start executing database script "UpgradeTo3.4.0".和生成用户名和密码的语句,说明旧的数据库是成功使用了的
启动成功后离线下载也是可用的,具体配置看下面的图
从社区版迁移
- 备份数据
找到正在运行的社区版,把里面的文件夹备份下来,比如我的就需要把**/root/cloudreve**这个目录打包下载
uploads是本地存储的上传目录,cloudreve.db是数据库文件,请一定要认真备份!!!
volumes:
- /mnt/user/fast_download/aira_down:/data
- /root/cloudreve/uploads:/cloudreve/uploads
- /root/cloudreve/conf.ini:/cloudreve/conf.ini
- /root/cloudreve/cloudreve.db:/cloudreve/cloudreve.db
- /root/cloudreve/avatar:/cloudreve/avatar
- 解压数据
把上面备份的文件复制到对应的目录中去,也就是data这个目录里面去
- 重新启动
[root@1 proPan]# docker logs -f 91b
[Info] 2024-02-05 15:44:04 Start executing database script "UpgradeTo3.4.0".
重新查看日志会发现程序帮我们自动执行了升级脚本,所以不需要手动执行
- 验证
查看主页面,网盘名称和用户名都是原有的社区版的数据(第3的第1步里有展示),后台也显示为pro,所以数据迁移成功
4.制作公共的docker
制作并发布
docker镜像地址: xxdl/cloudreve-pro-self
每次都需要build也挺麻烦的,对我来说也多了一个步骤,不符合我懒就要懒到极致的特性,所以可以做个公共的镜像,直接使用就行
首先要知道,升级pro版的核心步骤就是主程序和key.bin,只需要创建个镜像,在使用时把这两个文件映射进去就行
所以我们的Dockerfile不用动,只需要重新创建一个主文件,是什么无所谓,然后build后上传到dockerHub,这块我用的是宝塔的可视化操作,很方便
同时把启动的compose变更下:
// 变更前
image: pro-cloudreve:latest
// 变更后
image: xxdl/cloudreve-pro-self:latest
重新启动后一切正常
- 建议启动前先手动的拉一下:docker pull xxdl/cloudreve-pro-self:latest
- 如果构建和启动都在一个目录,记得改下compose里面的 - ./cloudreve:/cloudreve/cloudreve
因为cloudreve已经在上一步被覆盖成无效文件了
- 测试环境和镜像都是amd64,按道理说只需要下载对应架构的主程序启动就行,和docker镜像的架构没有关系,这块未测
unraid下载镜像
测试了下,我的unraid配置了阿里云镜像后是能正常拉取的
5. 最终优化
以unraid的docker-compose为例:
-
拉取镜像: docker pull xxdl/cloudreve-pro-self:latest
-
备份文件 备份文件 备份文件
大部分文件应该在appdata中,一定要备份,数据无价,备份为上
-
停止当前的容器
-
获取当前的架构
lscpu 有x68_64的就是amd
-
下载key.bin文件和主程序并上传
-
修改docker-compose
// 以前以你的文件为准,主要操作就是变更镜像和添加两个目录映射
version: "3.8"
services:
cloudreve:
container_name: cloudreve
// 替换镜像
image: xxdl/cloudreve-pro-self:latest
volumes:
// 添加主程序
- /.../appdata/cloudreve/cloudreve:/cloudreve/cloudreve
// 添加key.bin
- /.../appdata/cloudreve/key.bin:/cloudreve/key.bin
...省略
- 重新启动,无报错
后续升级的话也只需要替换主文件就行了,xxdl/cloudreve-pro-self这个镜像也不用变动