Cloudreve: 从社区版升级到捐助版

104

Cloudreve: 从社区版升级到捐助版

1. 介绍

hi,我是筱筱,今天介绍的Cloudreve是一个开源的网盘应用,由GO语言开发,它可助你即刻构建出兼备自用或公用的网盘服务,通过多种存储策略的支持、虚拟文件系统等特性实现灵活的文件管理体验。
社区版免费,无用户限制,功能可满足个人使用,具体的介绍看这篇文章 todo,pro版有多存储策略和积分下载等功能

今天来介绍下怎么从社区版升级为pro版

文章内有完整的介绍,包括单文件启动,制作一个镜像启动和不依赖主程序的启动(推荐),建议大家完整的读过一遍后选择自己适合的方式

最重要的是别忘记备份数据,有问题欢迎评论留言

2. 大概步骤

  1. 购买捐助版

  2. 有正在运行的社区版程序

    新安装的可以跳转到第三步的直接启动

    有经验的可以直接看第五步最终优化

  3. 下载key.bin文件和pro版程序

  4. 迁移数据

  5. 手动运行,检查数据

  6. 制作一个docker镜像后运行

3. 开始

准备工作

本文没有使用到redis/mysql等配置文件,但大体的操作步骤都是一样的

  1. 先看下现在使用的社区版网盘,里面有部分文件,存储用的是对象存储:

image-20240204164715625

  1. 接着绑定下域名和授权根域名,这里我用pro.abc.com作为pro版的演示域名

image-20240204165012890

  1. 下载对应域名的授权秘钥和主程序

怎么看自己的电脑架构:

> 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

image-20240204170157370

将文件解压后,取出主文件cloudrevekey.bin一起上传到服务器或自己的Nas中

image-20240204170407567

然后为域名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配置文件

image-20240205141525276

用域名pro.abc.com访问,能登录并且正常使用

pro_ok

如果是pro2.abc.com(已添加解析和反代,但不是授权的域名),登录后会提示错误

pro2_err

手动做成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目录,把数据库,配置文件和其他的文件夹复制进去,cloudrevekey.bin不动,目录结构是这样的:

image-20240205151223552

制作镜像

// 制作之前没有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".和生成用户名和密码的语句,说明旧的数据库是成功使用了的

启动成功后离线下载也是可用的,具体配置看下面的图

image-20240205150618379

从社区版迁移

  1. 备份数据

找到正在运行的社区版,把里面的文件夹备份下来,比如我的就需要把**/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
  1. 解压数据

把上面备份的文件复制到对应的目录中去,也就是data这个目录里面去

image-20240205154316801

  1. 重新启动
[root@1 proPan]# docker logs -f 91b
[Info]    2024-02-05 15:44:04 Start executing database script "UpgradeTo3.4.0".

重新查看日志会发现程序帮我们自动执行了升级脚本,所以不需要手动执行

  1. 验证

查看主页面,网盘名称和用户名都是原有的社区版的数据(第3的第1步里有展示),后台也显示为pro,所以数据迁移成功

gotopro

4.制作公共的docker

制作并发布

docker镜像地址: xxdl/cloudreve-pro-self

每次都需要build也挺麻烦的,对我来说也多了一个步骤,不符合我懒就要懒到极致的特性,所以可以做个公共的镜像,直接使用就行

首先要知道,升级pro版的核心步骤就是主程序和key.bin,只需要创建个镜像,在使用时把这两个文件映射进去就行

所以我们的Dockerfile不用动,只需要重新创建一个主文件,是什么无所谓,然后build后上传到dockerHub,这块我用的是宝塔的可视化操作,很方便

image-20240205161701129

同时把启动的compose变更下:

    // 变更前
    image: pro-cloudreve:latest
    // 变更后
    image: xxdl/cloudreve-pro-self:latest

重新启动后一切正常

  1. 建议启动前先手动的拉一下:docker pull xxdl/cloudreve-pro-self:latest
  2. 如果构建和启动都在一个目录,记得改下compose里面的 - ./cloudreve:/cloudreve/cloudreve

因为cloudreve已经在上一步被覆盖成无效文件了

  1. 测试环境和镜像都是amd64,按道理说只需要下载对应架构的主程序启动就行,和docker镜像的架构没有关系,这块未测

unraid下载镜像

测试了下,我的unraid配置了阿里云镜像后是能正常拉取的

image-20240205163403360

5. 最终优化

以unraid的docker-compose为例:

  1. 拉取镜像: docker pull xxdl/cloudreve-pro-self:latest

  2. 备份文件 备份文件 备份文件

    大部分文件应该在appdata中,一定要备份,数据无价,备份为上

  3. 停止当前的容器

  4. 获取当前的架构

    lscpu 有x68_64的就是amd

  5. 下载key.bin文件和主程序并上传

  6. 修改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
...省略

image-20240205164059122

  1. 重新启动,无报错

image-20240205164750565

后续升级的话也只需要替换主文件就行了,xxdl/cloudreve-pro-self这个镜像也不用变动

6.参考

文档 - Cloudreve

为捐助版构建 Docker 镜像 - Cloudreve Forum