个人网盘搭建


张登友,张登友的博客,张登友的网站——

程序介绍

github项目地址

这个项目是一个在线文件目录(私人网盘)的程序, 支持各种对象存储和本地存储, 使用定位是个人放常用工具下载, 或做公共的文件库. 不会向多账户方向开发.前端基于 h5ai 的原有功能使用 Vue 重新开发了一遍. 后端采用 SpringBoot, 数据库采用内嵌数据库.

系统特色

  • 内存缓存 (免安装)
  • 内存数据库 (免安装)
  • 个性化配置
  • 自定义目录的 header 说明文件
  • 自定义 JS, CSS
  • 文件夹密码
  • 支持在线浏览文本文件, 视频, 图片, 音乐. (支持 FLV 和 HLS)
  • 文件/目录二维码
  • 缓存动态开启, 缓存自动刷新
  • 全局搜索
  • 支持 阿里云 OSS, FTP, 华为云 OBS, 本地存储, MINIO, OneDrive 国际/家庭/个人版, OneDrive 世纪互联版, 七牛云 KODO, 腾讯云 COS, 又拍云 USS.

演示地址

我的网盘:http://pan.zdynb.cn

私人网盘

安装教程

如为更新程序, 则可跳过此步骤, 但要执行命令, 停止服务并清理上个版本的程序: ~/zfile/bin/stop.sh && rm -rf ~/zfile (不会删除数据文件)

对于 root 用户, 在 /root/ 路径下, 对于其他用户, 在 /home/用户名/ 路径下。如需更改安装路径, 请自行修改。

此处建议服务器内存大于512m,我的服务器配置为

核心:2核

内存:4g

磁盘:40g

运行环境

  • JDK: 1.8
  • 缓存: caffeine
  • 数据库: h2/mysql

服务器配置:标准的lnmp环境,当然除了NGINX和mariadb(MySQL)其他的这个网盘程序可能用不上

  • Cent OS 7
  • NGINX 1.71
  • MariaDB 10.1.44
  • PHP 7.0

Linux

安装依赖环境

如为更新程序, 则可跳过此步骤, 但要执行命令, 停止服务并清理上个版本的程序: ~/zfile/bin/stop.sh && rm -rf ~/zfile (不会删除数据文件)

# CentOS系统
yum install -y java-1.8.0-openjdk unzip

# Debian/Ubuntu系统
apt update
apt install -y openjdk-8-jre-headless unzip

下载项目

#下载包
wget -P ~ https://c.jun6.net/ZFILE/zfile-release.war
#切换到home目录
cd ~
#创建文件夹并解压
mkdir zfile && unzip zfile-release.war -d zfile && rm -rf zfile-release.war
#添加执行权限
chmod +x ~/zfile/bin/*.sh

使用到的命令

这是安装在默认目录的前提下,如果在其他目录则需要切换至安装目录的bin目录下再来执行

~/zfile/bin/start.sh       # 启动项目
~/zfile/bin/stop.sh        # 停止项目
~/zfile/bin/restart.sh     # 重启项目

Windows

安装依赖

安装 JDK8, 并配置环境变量, 可参考: https://jingyan.baidu.com/article/ce09321b85e8d62bff858f93.html

下载项目

下载文件 https://c.jun6.net/ZFILE/zfile-release.jar

启动项目

然后在文件所在路径下, 使用 cmd 执行命令 (不支持 powershell):

java -Dfile.encoding=utf-8 -jar -Dserver.port=8080 .\zfile-release.jar

如需要修改配置文件, 可去 Github 复制一份配置文件, 放到 jar 文件同路径即可.

密码文件夹

在需要密码访问的文件夹,添加 password。txt,文件内容为文件夹密码,如为中文密码,请保证文件为 UTF8 编码。

此文件不会显示,但无法防止被下载,可指定密码文件名,在配置文件 application。ymlzfile -> conconstant -> password 修改。

文档区

在需要添加文档的文件夹,添加 readme。txt,文件内容为文件夹密码,如包含中文,请保证文件为 UTF8 编码。

此文件不会显示,可指定文档文件名,在配置文件 application。ymlzfile -> conconstant -> readme 修改。

自定义 CSS JS

在对应的框内,写 CSS、JS 代码即可,无需写 <style>script 标签。

缓存功能

开启缓存后,会缓存文件夹中的内容,可以加快访问速度,但同样也可能会导致数据不一致。缓存每 30 分钟刷新一次。

搜索功能

可全局搜索整个存储引擎中的内容。搜索功能,需开启缓存后,才可生效。

搜索包含加密文件

如关闭此选项,如文件夹中需要密码访问,则此文件夹及其子文件夹中的内容,不会出现在搜索结果中。搜索忽略大小写。

OneDrive 令牌

  • OneDrive 令牌,会在以下情况下自动刷新:
  • 项目启动 30 秒后,每 15 分钟自动刷新一次 (令牌有效期为 1 小时)。
  • 保存存储策略时
  • 切换到 OneDrive 策略时

如何更改端口

vim ~/zfile/WEB-INF/classes/application.yml

server:
    port: 8080      # 修改此处.

默认启动端口为 8080, 如需请配置文件请编辑上述文件, 修改后重启程序生效.

为什么启动后无法访问
可能是防火墙没开启. 下面介绍如何防火墙开启端口. 对于阿里云、腾讯云、谷歌云等厂商, 可能还需要额外去后台开启防火墙.

# CentOS 7.x
firewall-cmd --zone=public --add-port=8080/tcp --permanent # 开放 8080 端口
firewall-cmd --reload                                      # 重启firewall
Copy to clipboardErrorCopied

# Ubuntu 16.x / Debian 9.x
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables-save
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload

如何使用域名进行访问

方式1: 将域名 A 记录解析到服务器 IP, 即可通过 域名:端口 访问 (80 端口即可免输入端口).

方式2: 使用 nginx 或 caddy 等工具反向代理. 以下以宝塔面板为例:

首先点击 网站 -> 新增站点:

添加网站

设置反向代理:

设置反向代理

访问地址:

在安装完成之后使用./start.sh启动,之后便可以访问,

http://127.0.0.1:8080这个替换为自己的域名以及端口号

用户前台: http://127.0.0.1:8080/#/main

初始安装: http://127.0.0.1:8080/#/install

管理后台: http://127.0.0.1:8080/#/admin

OneDrive 使用教程.

访问地址进行授权, 获取 accessToken 和 refreshToken:

国际/家庭/个人版:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=09939809-c617-43c8-a220-a93c1513c5d4&response_type=code&redirect_uri=https://zfile.jun6.net/onedirve/callback&scope=offline_access%20User.Read%20Files.ReadWrite.All

世纪互联版:

https://login.chinacloudapi.cn/common/oauth2/v2.0/authorize?client_id=4a72d927-1907-488d-9eb2-1b465c53c1c5&response_type=code&redirect_uri=https://zfile.jun6.net/onedirve/china-callback&scope=offline_access%20User.Read%20Files.ReadWrite.All

然后分别填写至访问令牌和刷新令牌即可

常见问题

数据库

缓存默认支持 h2mysql, 前者为嵌入式数据库, 无需安装, 但后者相对性能更好.

默认路径

默认 H2 数据库文件地址: ~/.zfile/db/, ~ 表示用户目录, windows 为 C:/Users/用户名/, linux 为 /home/用户名/, root 用户为 /root/

头尾文件和加密文件

  • 目录头部显示文件名为 header.md
  • 目录需要密码访问, 添加文件 password.txt (无法拦截此文件被下载, 但可以改名文件)

为什么提示密码错误

请检查密码文件中是否包含中文,如果包含,请保持文件编码为 UTF8。
请检查密码文件中是否包含空格, 换行符等不可见字符.

前后端分离如何部署

下载 https://github.com/zhaojun1998/zfile/tree/master/src/main/resources/static 路径下的所有文件, 或在程序运行后的相对路径:WEB-INF/classes/static.

修改 zfile.config.json 内文件指向后端地址, 然后放到静态资源服务器, 或对象存储即可:

&#123;
  "baseUrl": "http://xx.xxx.cn:8080"
&#125;

文章作者: 张登友
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张登友 !
评论