公有云,诸如百度云盘等,不充会员的话速度感人,超级会员价格很贵,而且界面冗杂广告多。另外存储空间也比较有限,买空间非常不划算。
即使我目前还是百度云盘超级会员,但我依然不会用公有云作为主力,一个最致命的点在于国内的云服务商有内容版权审查机制,甚至会自己删文件,还可能造成隐私泄露,所以我最多保存网友分享的一些资源,然后下载到本地,几乎不会用这些公有云来存储备份自己的文件。
私有云就是版本答案,也就是自己搭建一个云盘,一些比较老牌的私有云比如Seafile、Owncloud、NextCloud,但是我最后还是选择了Cloudreve。
Cloudreve是一款国人开发的公私兼备的网盘系统,技术栈是 Go + Gin + React + Redux + Material-UI,我正好也比较熟悉这一套后端架构,顺便买了一个pro版支持了一波,之后有时间的话也可以学习一下源码。
Cloudreve官网:https://cloudreve.org/
Cloudreve Github:https://github.com/cloudreve/Cloudreve 目前有17k star了
它的特点包括:支持密码分享、直链提取、外部云存储、aria2离线下载、在线预览、多用户、在线解压打包等等。
唯一让我感到遗憾的是不支持文件同步
Dropbox(全程科学上网+免费版只能三个设备、付费版巨贵+容量只有十几G)和Synnology Drive(用户体验差、经常卡死不同步)都有不小的瑕疵,很想找个代替品。
一个更好的方式其实是在云服务器上直接搭建Cloudreve,配合阿里云OSS或者腾讯云COS等存储,这样带宽也拉满,但是:
- 租云服务器太贵了,就算第一年很便宜,续费会很贵。之后换服务器的话迁移比较麻烦。
- 存储资源不在本地,仍然有审查风险。
- COS、OSS之类的存储服务或者云硬盘也是按年买的,也很贵
可以把群晖利用起来,通过内网穿透作为一块永久的10T的云硬盘。这倒不是说这种方式就没有缺点:
- 自己没有公网ip,还是要租高带宽的云服务器,这里我租的是10M带宽的,每次换新账号,一年也要大几百
- 传输的路径变长,同时吃frps服务器和内网的上行带宽,上传下载的速度会低于云服务器搭建
- 最致命的点在于不能接受本地停电,nas断电直接瘫痪。(我的群晖就放在学校结果放寒假被宿管阿姨拔掉了总闸,非常难受)
整个记录包括:
- 群晖部署和配置Cloudreve
- 群晖部署和配置aria2
- 云服务器配置frps
- 群晖部署和配置frpc
- 云服务器配置nginx
- 云服务器配置https、DNS解析
因为我用的是捐赠付费版Cloudreve,所以就采用可执行文件的传统搭建方式不用docker了,其实也很方便。
如果是免费版,就去 http://github.com/cloudreve/Cloudreve/releases 下载对应版本的cloudreve。付费版直接去内部渠道下载,与根域名授权密钥一起传输到nas里,然后解压,给权限、运行:
先开nas的ssh服务,然后ssh连接到nas
1
2
3
4
5
6
|
#解压获取到的主程序
$ tar -zxvf cloudreve_VERSION_OS_ARCH.tar.gz
# 赋予执行权限
$ chmod +x ./cloudreve
# 启动 Cloudreve
$ ./cloudreve
|
第一次先运行,会显示初始admin密码,记录一下,可以登录然后修改密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
root@SynologyNas:/volume1/Applications/cloudreve# ./cloudreve
___ _ _
/ __\ | ___ _ _ __| |_ __ _____ _____
/ / | |/ _ \| | | |/ _ | '__/ _ \ \ / / _ \
/ /___| | (_) | |_| | (_| | | | __/\ V / __/
\____/|_|\___/ \__,_|\__,_|_| \___| \_/ \___|
V3.6.2 Commit #b1d8e44 Pro=true
================================================
[Info] 2023-01-31 14:51:56 Initializing database connection...
[Info] 2023-01-31 14:51:56 Start initializing database schema...
[Info] 2023-01-31 14:52:03 Admin user name: [email protected]
[Info] 2023-01-31 14:52:03 Admin password: XXX
|
之后就可以通过nohup来后台运行
更好的方式还是配置systemd进程守护,这样断了还能重启:
1
2
|
$ sudo -i
$ vim /usr/lib/systemd/system/cloudreve.service
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysqld.service
Wants=network.target
[Service]
WorkingDirectory=/volume1/Applications/cloudreve
ExecStart=/usr/bin/nohup /volume1/Applications/cloudreve/cloudreve >/dev/null 2>&1 &
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 启动服务
systemctl start cloudreve
# 停止服务
systemctl stop cloudreve
# 重启服务
systemctl restart cloudreve
# 查看状态
systemctl status cloudreve
# 设置为开机启动
systemctl enable cloudreve
|
局域网访问配置
如果是捐赠pro版,设置了域名限制,所以需要去路由器改host,直接本地局域网192.168.x.x无法访问:
1
2
3
|
$ echo "addn-hosts=/jffs/configs/hosts" > /jffs/configs/dnsmasq.conf.add
$ echo "192.168.50.98 nas.engine.wang" >> /jffs/configs/hosts
$ service restart_dnsmasq
|
通过http://nas.engine.wang:5212
即可局域网访问(不吃内网穿透,非常快)
购买服务器和搭建frps的部分见我之前的文章:https://blog.engine.wang/posts/frp-notes,这里就不赘述了。
推荐腾讯云的轻量应用服务器,带宽高,这里选了10M的,勉强够用,再高的也买不起了。
内网穿透时,将nas的5212端口映射到服务器的某个端口,比如这里我设的是15212。
1
2
3
4
5
|
[nas_cloudreve_5212]
type = tcp
local_ip = 192.168.50.98
local_port = 5212
remote_port = 15212
|
这样就可以通过服务器的15212端口穿透到本机的5212端口了。
https的ssl证书可以用免费的Let's Encrypt之类的第三方免费证书服务,因为我的云服务器是腾讯云的,也有20个额度的免费ssl证书,就用腾讯云的也比较方便:
下载SSL证书的crt和key,放到云服务器上。
然后在云服务器上配置nginx,在nginx配置文件中添加下面的内容:
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
|
server {
listen 443 ssl;
server_name drive.engine.wang;
ssl_certificate /home/ubuntu/nginx/cert/drive.engine.wang.crt;
ssl_certificate_key /home/ubuntu/nginx/cert/drive.engine.wang.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
client_max_body_size 1024m;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://<服务器内网ip>:5222;
}
}
server {
listen 80;
server_name drive.engine.wang;
return 301 https://$host$request_uri;
}
|
重载nginx即可生效:
然后加一条dns解析:
现在访问drive.engine.wang
即可进入Cloudreve。
光有Cloudreve还不够,这里再配置一个非常方便的下载神器:aria2。aria2可以支持离线下载https、磁力等链接,相当于多了个云端的迅雷,而且速度拉满非常爽。这里建议还是配置一下。
我用的 https://github.com/P3TERX/aria2.sh
将sh执行文件下载到群晖中,然后安装一些必要的包,因为群晖不支持apt、yum等,所以使用ipkg:
1
2
3
4
5
|
# 先安装bootstrap,才有ipkg、wget等。
$ wget http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh
$ chmod +x syno-i686-bootstrap_1.2-7_i686.xsh
$ sh syno-i686-bootstrap_1.2-7_i686.xsh
$ ipkg update
|
1
2
3
4
|
# 如果下不动就自己电脑下再传输到nas
$ wget -N git.io/aria2.sh && chmod +x aria2.sh
$ ./aria2.sh
# 先安装aria2
|
配置文件位于/root/.aria2c/aria2.conf
,默认下载目录为:/root/downloads
,这里修改为 /volume1/Download/aria2
1
2
3
4
|
# 修改配置文件
$ su -i
$ vim /root/.aria2c/aria2.conf
# 修改为:dir=/volume1/Download/aria2
|
然后再次:
1
2
|
$ ./aria2.sh
# 启动aria2
|
会打印一些信息,可以修改,先记下来。
1
2
3
4
5
6
|
IPv4 地址 : 182.255.34.12
IPv6 地址 : IPv6 地址检测失败
RPC 端口 : 6800
RPC 密钥 : 12345687
下载目录 : /volume1/Download/aria2
AriaNg 链接 : http://ariang.js.org/#!/settings/rpc/set/ws/182.255.34.12/6800/jsonrpc/MTIzNDU2ODc=
|
1
2
3
4
5
6
|
IPv4 地址 : 117.170.156.207
IPv6 地址 : 2409:8a38:1623:b500:2e2:69ff:fe2c:c6e0
RPC 端口 : 6800
RPC 密钥 : 28e5d89b6bf2c951cb4e
下载目录 : /volume1/Applications/cloudreve/aria2
AriaNg 链接 : http://ariang.js.org/#!/settings/rpc/set/ws/117.170.156.207/6800/jsonrpc/MjhlNWQ4OWI2YmYyYzk1MWNiNGU=
|
浏览器打开AriaNg链接,也有一个UI,这个可以保存着用,不过我们的重点还是跟Cloudreve集成
Aria2 离线下载最大的速度取决于服务器带宽。
将信息填写到Cloudreve中:
配置存储策略、用户策略等,自行配置即可