为啥我要自己折腾
原因有以下几点:
1. 保存的太多电影动漫由于审查制度被和谐
2. 就算没被和谐也难免秋后算账
3. 速度实在是太慢了
4. 数据要握在自己手里
5. ~~想好好的体验下Docker~~
出于以上几个原因决定自己弄一弄网盘
开源网盘的选择
在我折腾过Nextcloud的前提下我选择了Cloudreve,主要原因是Cloudreve不是那么的吃资源,而且UI我更喜欢而且支持离线下载!
当然也不是没有缺点,虽然支持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" 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来登录你的账号,可以说非常实用了!