为啥我要自己折腾

原因有以下几点:

1. 保存的太多电影动漫由于审查制度被和谐
2. 就算没被和谐也难免秋后算账
3. 速度实在是太慢了
4. 数据要握在自己手里
5. ~~想好好的体验下Docker~~

出于以上几个原因决定自己弄一弄网盘


开源网盘的选择

在我折腾过Nextcloud的前提下我选择了Cloudreve,主要原因是Cloudreve不是那么的吃资源,而且UI我更喜欢而且支持离线下载!

image-离线下载

当然也不是没有缺点,虽然支持Webdav,但是实际体验下来和Nextcloud的多端客户端还是有差别,尤其体现在大文件方面,通过Webdav挂载特别容易卡顿。


搭建过程

用作网盘的话自然是选择一台大盘鸡比较合适,大容量存储空间是做个人网盘的不二选择。

借助Docker compose创建Nginx

这里要注意的是,以下的compose文件给Nginx创建了一个网段nginx-all,并且绑定了固定IP。

需要使用docker network create nginx-all来完成创建,当然你可以有更多的选择。

之所以这么做是想在docker内网段互通,就不需要在本地映射docker内的端口,导致本机的端口被占用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
version: '3'
services:
webserver:
image: nginx:stable
container_name: webserver
restart: unless-stopped
volumes:
- ./logs:/etc/nginx/logs
- ./conf:/etc/nginx/conf
- ./conf/nginx.conf:/etc/nginx/nginx.conf:ro
- ./www:/etc/nginx/www
- ./ssl:/etc/ssl
ports:
- "80:80"
- "443:443"
#- "8080:8080"
networks:
default:
ipv4_address: 172.18.0.4

networks:
default:
name: nginx-all
external: true

创建Cloudreve以及aria2

前文提到过Cloudreve支持离线下载,实现方式是通过aria2来完成,这里为了方便就在云盘的本地创建aria2,按照官方的说法是支持多个aria2节点进行下载的,但更细节的操作并没有进一步研究。

记得将RPC_SECRET改为你定义的aria2密钥。

这里我们可以看到我的compose配置文件中并没有ports字段,因为我已经将Nginx + Cloudreve + aria2并在了一个网段内,相关的配置只需要使用默认的端口即可完成。

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
version: "3.8"

networks:
default:
name: nginx-all
external: true

services:
cloudreve:
container_name: cloudreve
image: cloudreve/cloudreve:latest
restart: unless-stopped
volumes:
- temp_data:/data
- ./cloudreve/uploads:/cloudreve/uploads
- ./cloudreve/conf.ini:/cloudreve/conf.ini
- ./cloudreve/cloudreve.db:/cloudreve/cloudreve.db
- ./cloudreve/avatar:/cloudreve/avatar
depends_on:
- aria2
networks:
default:
ipv4_address: 172.18.0.3
aria2:
container_name: aria2
image: p3terx/aria2-pro
restart: unless-stopped
environment:
- RPC_SECRET=<YOUR_SECRET>
- RPC_PORT=6800
volumes:
- ./aria2/config:/config
- temp_data:/data
networks:
default:
ipv4_address: 172.18.0.2

volumes:
temp_data:
driver: local
driver_opts:
type: none
device: $PWD/data
o: bind

最终成果

在Nginx上设置好vhost以及反向代理后,就可以根据文档来配置Cloudreve,比较令人惊喜的是支持第三方人机校验和外部验证器登录。

reCAPTCHA就不用多说,而外部验证器登录就可以支持你用指纹或者windows hello来登录你的账号,可以说非常实用了!

image-Login