一机管理多机磁盘,搭建自己的云盘

一机管理多机磁盘,搭建自己的云盘

如果你有多台 vps,每台 vps 都有 10-20G 左右的磁盘,如果你只是拿来搭建科学节点,磁盘基本上都有大量的剩余空间,岂不是太浪费了。有没有办法将这些磁盘聚合起来管理,形成自己的私有云盘呢?今天跟大家一起来折腾一下私有云盘方案

方案一:cloudpaste

Cloudpaste 是一个 S3 对象存储聚合管理方案,具体我不多介绍,作者仓库有相当详细的部署和使用说明,包括无服务器部署和 docker 部署两种方式,你可以选择其一进行部署,然后挂载 S3 即可,它还支持将自身挂载为 webdav

不详述,大家可以自己到作者仓库看

方案一:cloudreve 免费版

我尝试了 cloudreve、kodbox、nextcloud 三种免费云盘方案,kodbox 功能太多,更适合企业团队协作而不是个人;nextcloud 也很强大,但是不知道为什么非常卡顿;最终我选择了 cloudreve

二进制部署:以 Linux X64 为例

登录你专用于跑服务的 VPS,磁盘大小不重要,依次执行以下命令:

1
2
3
4
5
6
7
8
# 创建目录
mkdir -p /opt/cloudreve

# 进入创建的目录
cd /opt/cloudreve

# 下载二进制文件并启动服务
wget https://github.com/cloudreve/Cloudreve/releases/download/4.2.0/cloudreve_4.2.0_linux_amd64.tar.gz && tar -zxvf cloudreve_4.2.0_linux_amd64.tar.gz && chmod +x cloudreve && ./cloudreve

创建系统服务以确保项目自运行

  • 创建 systemd 服务文件:
1
sudo vim /etc/systemd/system/cloudreve.service
  • 粘贴以下内容(根据你的路径调整):
1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=Cloudreve
After=network.target

[Service]
WorkingDirectory=/opt/cloudreve
ExecStart=/opt/cloudreve/cloudreve
Restart=always
RestartSec=5s
KillMode=mixed

[Install]
WantedBy=multi-user.target
  • 启动自启服务
1
2
3
sudo systemctl daemon-reload
sudo systemctl enable cloudreve
sudo systemctl start cloudreve
  • 如果无法访问,检查防火墙是否放行 Cloudreve 的端口(默认 5212):
1
sudo ufw allow 5212
  • 配置数据库和 Redis 缓存,这个我就赘述,点此看原作者的教程
  • 你可以在浏览器中访问 http://your-vps-ip:5212 进入 Cloudreve
  • 首个注册的账户会被设置为管理员。
  • 配置反向代理 请看这里
  • 我更习惯于使用 CF argo 隧道来反代,创建隧道,主机名监听 localhost:5212 即可
  • 如何创建 CF argo 隧道,请参考 这篇文章

Docker 部署

推荐使用 1panel 或宝塔,在应用商店中搜索 cloudreve 即可一键安装

也可以使用 Docker Compose 快速安装,自动配置数据库和缓存服务器

1
2
3
# 创建一个目录存放 docker-compose.yml 文件
mkdir -p ~/cloudreve
cd ~/cloudreve

在创建的目录中新建一个 docker-compose.yml 文件:

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
services:
pro:
image: cloudreve/cloudreve:latest
container_name: cloudreve-backend
depends_on:
- postgresql
- redis
restart: always
ports:
- 5212:5212
environment:
- CR_CONF_Database.Type=postgres
- CR_CONF_Database.Host=postgresql
- CR_CONF_Database.User=cloudreve
- CR_CONF_Database.Name=cloudreve
- CR_CONF_Database.Port=5432
- CR_CONF_Redis.Server=redis:6379
volumes:
- backend_data:/cloudreve/data

postgresql:
image: postgres:latest
container_name: postgresql
environment:
- POSTGRES_USER=cloudreve
- POSTGRES_DB=cloudreve
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- database_postgres:/var/lib/postgresql/data

redis:
image: redis:latest
container_name: redis
volumes:
- redis_data:/data

volumes:
backend_data:
database_postgres:
redis_data:

启动 docker:docker compose up -d

搞定了服务端的部署,那么如何把其他 vps 的磁盘挂载到这台服务机呢?,在其他 vps 上搭建一个 MinIO 对象存储 项目即可

在客户机上部署 MinIO

这在上一期的分享中已经做了详细说明,点击这里查看

配置 Cloudreve 挂载磁盘

假设你已经为 Cloudreve 做好了反代,得到一个可访问的域名 https://cloud.wangpan.cn

进入你的主页,登录你的管理员账号(如果没有就注册一个,首个账号会被设置为管理员)

点击左侧管理面板,依下文做一些基本设置:

参数设置

站点 URL 一定要改为你配置好的域名

image.png

存储策略

选择 S3 兼容

image.png

image.png

其他设置

其他设置可以自行研究,它可以设置用户组以区分不同用户的不桶权限;可以设置 webdav 挂载;也可以开放注册以供其他人使用。不一一描述

分享与直链

首先将你挂载的 minio 设置为默认存储

点击左下角 返回主页 即可回到 文件管理 页面,随便上传一个文件

在文件上点击右键,即可为该文件开启分享功能,或直接获取直链

image.png

分享可以设置密码、有效期,生成一个分享链接,其他人打开分享链接,输入密码,便可以下载文件

image.png

你可以在 我的分享 页面随时取消这些分享

这个玩意其实挺好用,美中不足的就是免费版限制比较多,比如,虽然可以挂载多个磁盘,但不能聚合管理,每个用户组只能分配一个存储策略。售价不算低,按绑定域名计费,一个域名 398 元,付费版适合做资源分享站的大佬,我们自己玩免费版也够用

#VPS #网盘