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

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

介绍

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 获取镜像

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

创建容器

端口映射 8222-8222

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

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

Docker

终端内直接执行即可

docker run -it -p 8222:8222 -v /etc/zpan:/etc/zpan --name zpan saltbo/zpan
自建网盘解决方案-基于云存储的网盘系统zpan-廾匸

linux

安装服务

curl -sSf https://dl.saltbo.cn/install.sh | sh -s zpan
自建网盘解决方案-基于云存储的网盘系统zpan-廾匸

启动服务

systemctl start zpan

查看状态

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

开机启动

systemctl enable zpan

停止服务

systemctl stop zpan

系统配置

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

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

配置数据库(以mysql为例)

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

用户名:数据库名@tcp(数据库地址)/数据库名?charset=utf8mb4&parseTime=True&loc=Local
自建网盘解决方案-基于云存储的网盘系统zpan-廾匸
自建网盘解决方案-基于云存储的网盘系统zpan-廾匸

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

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

配置云存储(阿里云OSS)

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

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

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

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

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

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

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

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

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

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

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

反向代理

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

新建站点-开启SSL

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

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

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

邀请码

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

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

贡献代码

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

安装环境

zpan 基于Go进行开发.

依赖:

  • make
  • Go 1.13+

克隆源码:

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

安装构建依赖:

$ make dep

运行单元测试

$ make test

测试你的修改

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

$ make build

创建一个提交

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

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

提交一个Pull Request

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

常见问题

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

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

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

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

举个例子

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

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

dockerrun -it zpan cat /etc/zpan/zpan.yml > /etc/zpan/zpan.ymlvi/etc/zpan/zpan.ymldockerrun -it -v /etc/zpan:/etc/zpan zpan

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

Endpoint

  • 亚马逊S3:s3.ap-northeast-1.amazonaws.com
  • 腾讯云COS:cos.ap-shanghai.myqcloud.com
  • 阿里云OSS:oss-cn-zhangjiakou.aliyuncs.com
  • 七牛云Kodo:s3-cn-east-1.qiniucs.com
  • 谷歌云Storage:storage.googleapis.com

CORS配置

  • Origin: http://your-domain
  • AllowMethods: PUT
  • AllowHeaders: content-type,content-disposition,x-amz-acl

从v.1.5.0开始,在管理后台添加云存储配置的时候会自动进行CORS的设置。

但由于多数厂商兼容的S3协议API里并不包含CORS相关操作,所以CORS的设置每个厂商的情况都不一样。

目前支持的平台有:

  • 阿里云OSS
  • 腾讯云COS
  • 七牛云Kodo
  • UCloud(暂不支持自动设置CORS)
  • 华为云OBS
  • 网易云NOS(暂不支持自动设置CORS)
  • 亚马逊S3
  • MinIO
    © 版权声明
    THE END
    喜欢就支持一下吧
    点赞13 分享
    评论 抢沙发

    请登录后发表评论

      暂无评论内容