记录学习与后端知识并分享学习代码过程(会飞的鱼Blog)

自建网盘解决方案-基于云存储的网盘系统zpan

会飞的鱼 0 1996 2021年2月21日

介绍

ZPan致力于打造一款不限速的网盘系统,因此采用客户端直连云存储的方式进行设计。

目前ZPan支持所有兼容S3协议的云存储平台,您可以选用您熟悉的平台来驱动ZPan。

在线体验(体验账号:demo,密码:demo)

他是如何工作的?

ZPan本质上是一个URL签名服务器+可视化的文件浏览器。

因为我们采用直链的方式进行上传下载,所以为了保证上传下载的安全性,客户端用来上传下载的URL均需要服务端进行签名。

然后为了能给方便的管理用户上传的文件,我们就需要开发一个可视化的伪文件系统来进行文件管理。

特色

  • 完全不受服务器带宽限制
  • 支持所有兼容S3协议的云存储
  • 支持文件及文件夹管理
  • 支持文件及文件夹分享(未登录可访问)
  • 支持文档预览及音视频播放
  • 支持多用户存储空间控制
  • 支持多语言

目前支持的平台

  • 阿里云OSS
  • 腾讯云COS
  • 七牛云Kodo
  • UCloud(暂不支持自动设置CORS)
  • 华为云OBS
  • 网易云NOS(暂不支持自动设置CORS)
  • 亚马逊S3
  • MinIO

更新说明-V1.5

  • 增加了可视化的引导安装页面,帮助用户快速安装ZPan
  • 支持多存储,在后台管理员可以添加多个存储空间,在前台用户可以随意切换存储空间
  • 添加存储空间时支持自动设置CORS(部分平台不支持),解决手动去云存储平台创建的麻烦
  • 存储空间支持网盘和外链盘两种类型,网盘关联的云存储设置为私有读,外链盘关联的云存储设置为公共读
  • 支持管理员在后台添加用户
  • 支持设置存储根路径和存储文件路径(支持使用变量)
  • 增加基本的后台管理功能
  • 增加heroku的支持,可以一键部署到heroku

快速开始

以Centos X64为例,你可以在 Centos使用指南 中按教程安装宝塔面板和Docker服务(也可以在宝塔面板-插件里安装Docker管理器)。

Docker(宝塔面板)

输入镜像名称 saltbo/zpan:latest 获取镜像

创建容器

端口映射 8222-8222

目录映射 /etc/zpan-/etc/zpan

Docker

终端内直接执行即可

docker run -it -p 8222:8222 -v /etc/zpan:/etc/zpan --name zpan saltbo/zpan

linux

安装服务

curl -sSf https://dl.saltbo.cn/install.sh | sh -s zpan

启动服务

systemctl start zpan

查看状态

systemctl status zpan

开机启动

systemctl enable zpan

停止服务

systemctl stop zpan

系统配置

通过上面任意一种方法都可以安装服务,安装完成通过浏览器访问 ip:8222 即可进入安装步骤

配置数据库(以mysql为例)

新建数据库,在DSN里填写对应数据库信息

用户名:数据库密码@tcp(数据库地址)/数据库名?charset=utf8mb4&parseTime=True&loc=Local

数据库信息正确就可以配置管理员账号

配置云存储(阿里云OSS)

进入阿里云对象存储OSS控制台,Bucket 列表-创建Bucket,填写名称,选择地域,读写权限选择公共读

网盘关联的云存储设置为私有读,外链盘关联的云存储设置为公共读

进入RAM访问控制 创建一个AccessKey

进入zpan控制台,创建存储,填写OSS的名称和地域节点,AccessKey ID 和 Secret

在高级设置中还可以修改其他信息

可以上传文件即可正常使用。

反向代理

要通过域名访问可以使用Nginx的反向代理

新建站点-开启SSL

添加反向代理,目标URL为 ip:8222 (zpan运行端口)

邀请码

系统设置-站点设置 可以开启邀请码注册,邀请码可以在个人信息里获取。

贡献代码

参与该项目,即表示您同意遵守我们的行为准则

安装环境

zpan 基于Go进行开发.

依赖:

克隆源码:

$ git clone git@github.com:saltbo/zpan.git

安装构建依赖:

$ make dep

运行单元测试

$ make test

测试你的修改

您可以为更改创建分支,并尝试从源代码进行构建:

$ make build

创建一个提交

提交消息的格式应正确,并使其“标准化”,我们正在使用常规提交。

您可以按照以下文档操作 their website.

提交一个Pull Request

将分支推到您的zpan分支,然后对主分支打开一个拉取请求。

常见问题

删除多的容器

首先查看容器

docker images

删除

docker irm image_id 
 或者 
 docker image rm 镜像名或镜像id 

例如
 docker image rm 8vc259e0a042

 

安装过程提示 open /etc/zpan/config.yml: no such file or directory

只需要在在/etc/zpan目录下新建一个config.yml文件并写入下面内容即可(假如是Mysql驱动的话)

database:
  driver: mysql
  dsn: 数据库名:数据库密码@tcp(数据库地址)/数据库用户名?charset=utf8mb4&parseTime=True&loc=Local
port: 运行端口(默认8222)

举个例子

database:
  driver: mysql
  dsn: zpan:密码@tcp(127.0.0.1:3306)/zpan?charset=utf8mb4&parseTime=True&loc=Local
port: 8222
database:
  driver: sqlite3
  dsn: zpan.db
port: 8222

Docker安装之后如果修改配置文件?

docker run -it zpan cat /etc/zpan/zpan.yml > /etc/zpan/zpan.yml
vi /etc/zpan/zpan.yml
docker run -it -v /etc/zpan:/etc/zpan zpan

可以把docker里的默认配置文件复制到宿主机上,在宿主机上修改调整之后再挂载到docker里。上面的命令仅供参考

用户反馈

如果您遇到的问题不再以上范围内,请到GitHub上创建一个issue进行反馈。

如果您在使用过程中发现了什么缺陷,或是有新的需求提议,也欢迎提交issue

本文由 @会飞的鱼 于 2021-2-21 发布在 会飞的鱼Blog,如无特别说明,本博文章均为原创,转载请保留出处。

网友评论

    暂无评论

会飞的鱼 在线咨询

在线时间:9:00-22:00
周六、周日:14:00-22:00