自建网盘解决方案-基于云存储的网盘系统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 获取镜像
创建容器
端口映射 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进行开发.
依赖:
make
- Go 1.13+
克隆源码:
$ 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。
这个主题简介啊