# Page-2:服务部署

编写日期:2021年10月1日
首发日期:2021年10月2日
最后编辑日期:2021年11月14日

WARNING

注意:本节中所设置的各个网络地址只是个人制作时使用的,如有能力者可参考文章底部的“资料与来源支持”设置自己喜欢的网络地址。

# 基础环境

  • 宝塔面板基础套件(安装教程)

    • Docker管理器

    • 堡塔应用管理器

      这里默认你已经具有了该基础

  • Docker网络环境配置

    创建自定义网络

    sudo docker network create --subnet=172.18.0.0/24 docker-1
    
    1

    说明:这里选取了172.18.0.0网段,也可以指定其他任意空闲的网段,docker-1为自定义网桥的名字,可自己任意取名。
    注意:这里子网掩码要使用255.255.255.0也就是IP后面的那个24,因为后面要使用iptables配置路由表,我之前使用255.255.0.0 无法配置.所以这里配置成24。

    shengchenghaxi

    这里输入命令后会生成一段哈希值。
    创建网桥之后,使用“ifconfig”查看 会多出一个网桥,该网桥在docker启动或者重启之后,会自动显示出来。

    chaxunip

    所以他是永久存在的,可以使用命令“docker network rm docker-1”移除网桥。

# Cloudreve部署

基于Docker

docker run -d \
  --name cloudreve \
  -e PUID=1000 \ # optional
  -e PGID=1000 \ # optional
  -e TZ="Asia/Shanghai" \ # optional
  --network docker-1 \ # 使用前面准备的网卡
  --ip 172.18.0.2 \ # 基于网卡指定容器IP
  --restart=unless-stopped \
  -v <PATH TO uploads>:/cloudreve/uploads \
  -v <PATH TO temp>:/downloads \ #1
  -v <PATH TO config>:/cloudreve/config \
  -v <PATH TO db>:/cloudreve/db \
  -v <PATH TO avatar>:/cloudreve/avatar \
  xavierniu/cloudreve:latest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • PUID以及PGID的获取方式详见

    为什么要使用PUID和PGID参见Understanding PUID and PGID (opens new window)

    假设当前登陆用户为root,则执行“id root”就会得到类似于下面的一段代码:

    uid=1000(root) gid=1001(root)
    
    1

    则在运行命令中的PUID填入1000,PGID填入1001

  • <PATH TO uploads>:上传目录, 例如/sharedfolders

  • <PATH TO temp>: 临时下载文件夹,需要与Aria的/downloads对应,例如/dockercnf/aria2/temp(如不需要离线下载功能#1可以删除)

  • <PATH TO config>: 配置文件夹,如/dockercnf/cloudreve/config

  • <PATH TO db>: 数据库文件夹,如/dockercnf/cloudreve/db

  • <PATH TO avatar>: 头像文件夹,如/dockercnf/cloudreve/avatar

示例:

  1. 先获取PUID和PGID

    输入“id root

    chakanuid

    则在运行命令中的PUID填入0,PGID填入0

  2. 启动容器

    docker run -d --name cloudreve -e PUID=0 -e PGID=0 -e TZ="Asia/Shanghai" --network docker-1 --ip 172.18.0.2 --restart=unless-stopped -v /PAN/A/uploads:/cloudreve/uploads -v /PAN/A/downloads:/downloads -v /DockerConfig/Cloudreve/config:/cloudreve/config -v /DockerConfig/Cloudreve/db:/cloudreve/db -v /DockerConfig/Cloudreve/avatar:/cloudreve/avatar xavierniu/cloudreve:latest
    
    1

    shoucizhixingcloudreve

    首次输入命令后,会下载镜像,等待下载完毕会生成哈希值即表明启动成功

    也可以在宝塔面板查看,镜像是存在,容器是否是否启动成功

    dockerzhanshi

    至此其实已经完成了Cloudreve的安装,添加反向代理后即可正常访问网站

    shoucianzhuangwanbi

    提示:如果至此你已经打算开始使用了,可以在容器首次启动后在宝塔面板点击 Docker管理器-日志 查看初始账号密码,注意这个很重要(如果你打算配置Mysql数据库就可以无视这个提示)

# Mysql对接(可选)

  1. 在堡塔面板创建Mysql

    点击 数据库-添加数据库 填入信息并记录提交

    chuangjianmysql

    注意:需要指定容器IP

  2. 配置Cloudreve的数据库信息

    [Database]
    ; 数据库类型,目前支持 sqlite | mysql
    Type = mysql
    ; MySQL 端口
    Port = 3306
    ; 用户名
    User = root
    ; 密码
    Password = root
    ; 数据库地址
    Host = 127.0.0.1
    ; 数据库名称
    Name = v3
    ; 数据表前缀
    TablePrefix = cd_
    ; SQLite 数据库文件路径
    DBFile = cloudreve.db
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    配置文件所在地址在Docker映射的地址,这里容器映射配置文件的地址是“/DockerConfig/Cloudreve/config/conf.ini”

    xiugaipeizhi

    添加上述代码,并修改其中账号密码为上一步中创建的数据库的账号密码以及IP地址修改为容器指定IP的网关,例如这里我的网关就要填写“172.18.0.1

  3. 开放数据库安全端口

    因为这里Docker与宝塔面板的关系是平行关系,所以我们Docker里的应用需要访问宝塔面板的Mysql服务时需要开放安全端口。

    kaifangduankou

    点击 安全 输入3306为Mysql默认的端口地址。

  4. 获取账号密码

    点击 Docker管理器 然后在配置好数据库首次进行容器重启就可以查看到账号密码,务必记下

    huoquzhanghaomima

    到此你已成功将数据库移植到了宝塔的Mysql数据库里了,同样,至此你在添加反向代理后即可正常访问网站可以正常开始使用了。

# Aria2部署

基于Docker

docker run -d \
    --name aria2 \
    --restart unless-stopped \
    --log-opt max-size=1m \
    -e PUID=1000 \
    -e PGID=1000 \
    -e RPC_SECRET=<SECRET> \
    -p 6800:6800 \ #1
    -p 6888:6888 -p 6888:6888/udp \
    --network docker-1 \ # 使用前面准备的网卡
    --ip 172.18.0.3 \ # 基于网卡指定容器IP
    -v <PATH TO config>:/config \
    -v <PATH TO temp>:/downloads \
    p3terx/aria2-pro:latest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • PUID以及PGID的获取方式详见

    为什么要使用PUID和PGID参见Understanding PUID and PGID (opens new window)

    假设当前登陆用户为root,则执行“id root”就会得到类似于下面的一段代码:

    uid=1000(root) gid=1001(root)
    
    1

    则在运行命令中的PUID填入1000,PGID填入1001

  • <SECRET>: Aria2 RPC密码(你可以去这里 (opens new window)生成随机字符串)。请记下该密码!在后续Cloudreve设置Aria2中会使用。

  • <PATH TO config>: Aria2的配置文件夹,例如/dockercnf/aria2/conf

  • <PATH TO temp>: 临时下载文件夹,需要与Cloudreve的/downloads对应,例如/dockercnf/aria2/temp

  • 如果不需要外网访问Aria2可以将#1所在行删除。

  1. 先获取PUID和PGID

    输入“id root

    chakanuid

    则在运行命令中的PUID填入0,PGID填入0

  2. 启动容器

    docker run -d --name aria2 --restart unless-stopped --log-opt max-size=1m -e PUID=0 -e PGID=0 -e RPC_SECRET=更改此RPC令牌 -p 6800:6800 -p 6888:6888 -p 6888:6888/udp --network docker-1 --ip 172.18.0.3 -v /DockerConfig/Aria2/config:/config -v /PAN/A/downloads:/downloads p3terx/aria2-pro:latest
    
    1

    首次输入命令后,会下载镜像,等待下载完毕会生成哈希值即表明启动成功

    也可以在宝塔面板查看,镜像是存在,容器是否是否启动成功

    这里就不再展示图示了与“Cloudreve部署”时相同

    WARNING

    注意:这一步中的RPC令牌需要记下,配置Cloudreve的离线下载时需要用到

这样你的Aria2容器就已经配置好了配置Cloudreve的离线下载)

# 反向代理

  1. 创建一个网站

    点击 网站-添加站点 填入当前“服务器内网”IP地址 点击提交

    peizhiwangzhan

  2. 修改反向代理配置

    先添加反向代理,点击 设置-反向代理-添加反向代理 并填入cloudreve容器绑定的自建网卡IP地址加端口5212 这里就填写“http://172.18.0.2:5212”

    tianjiafanxiangdail

    peizhifandai

    然后修改反向代理的“配置文件”为如下,并使其运行(这一步是为了解决部分反向代理后404问题,详见下方“支持与资料来源”)

    注意:下方的是Apache的反代配置,可通过Apache转Nginx规则转换工具得到相应Nginx的规则,由于后期本人又将Nginx换成Apache所以,Nginx相关的配置以及测试就没在进行,大家可自行尝试,目前经测试Apache可正常使用。

    <IfModule mod_proxy.c>
        ProxyRequests Off
        SSLProxyEngine on
        ProxyPassReverse / http://[YOUR_SERVER_IP]:5212/
      	AllowEncodedSlashes NoDecode
    	ProxyPass "/" "http://172.18.0.2:5212/" nocanon
    </IfModule>
    
    1
    2
    3
    4
    5
    6
    7
  3. 访问站点

    这样你就可以通过内网输入第一步创建网站时填写的IP地址进行访问了

    shumeipaiyunpan

# 内网穿透(可选)

说明:上边我们所作的一切都是在内网的环境,现在内网穿透就是要实现与外网服务器或用户进行通信。这里内网穿透有两个作用,一个是存储策略回调需要内网穿透且需要支持HTTPS,一个是你自己需要通过外网进行传输文件,或者开放给外网的人去使用。
如果你只是打算在内网使用该云盘,且不使用非本地存储策略那么你可以无视这一步。
内网穿透我们需要借助于第三方提供的服务,这里我选取了一种最省钱的方案,小蝴蝶内网穿透他既能满足HTTPS又能满足外网访问虽然带宽很小但他是最省钱的。内网穿透软件对比详见《好物推荐》。当然你也可以选择使用多个内网穿透软件,取各个软件的有点结合进行使用。这里我就不多折腾了!

  1. 小蝴蝶内网穿透部署

    进入购买一个支持https的隧道,我这里购买的就是5元一个月的隧道

    然后将内网服务地址填写为"cloudreve容器的IP加上端口5212"

    例如我这里填写:172.18.0.2:5212

    然后下载软件到

    xiazairuanjian

    然后解压上传到根目录自己创建的“MYSOFT”文件夹中,并为方便重命名为“xhdnpc”,记得将文件夹的权限更改为777

    shangchuanruanjian

    然后使用堡塔应用管理器添加该软件,使其正常运行

    xhdsh

    然后我们就可以通过这里的二级域名进行访问了

    fangwenwaiwang

资料与支持来源:
Cloudreve程序Github:
https://github.com/cloudreve/Cloudreve
CLoudreve官方文档:
https://docs.cloudreve.org/
Cloudreve论坛帮助,反向代理,加载主页出现请求时出现错误 404:
http://forum.cloudreve.org/d/1204/2

Cloudreve Docker - NAC:
https://github.com/xavier-niu/cloudreve-docker/blob/master/README-NAC.md

Cloudreve的Docker镜像:
https://registry.hub.docker.com/r/xavierniu/cloudreve
https://github.com/xavier-niu/cloudreve-docker
Aira2的Dcoker镜像:
https://registry.hub.docker.com/r/p3terx/aria2-pro
Docker生成虚拟网卡:
https://blog.csdn.net/liufuwu1/article/details/88096213?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163325126316780269862694%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&amp;request_id=163325126316780269862694&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-88096213.pc_search_result_cache&amp;utm_term=docker+%E6%8C%87%E5%AE%9Aip&amp;spm=1018.2226.3001.4187

网云穿官网:
http://xiaomy.net/
网云穿树莓派部署教程:
http://neiwangchuantou.cn/archives/74.html
小蝴蝶内网穿透:
https://www.npsvip.com/

宝塔面板官网:
https://www.bt.cn/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28