Zdir 3

使用Golang + Vue3开发的轻量级目录列表程序,支持Linux、Docker、Windows部署,适合个人或初创公司文件分享使用,亦可作为轻量级网盘使用。

介绍

Zdir

使用Golang + Vue3开发的轻量级目录列表程序,支持Linux、Docker、Windows部署,适合个人或初创公司文件分享使用,亦可作为轻量级网盘使用。

演示地址:http://soft.xiaoz.org/#/

首页展示:

用户登录界面:

多文件上传界面:

文件详情页面:

功能特点

部分截图

强大的全局搜索功能:

自动说明文件:

方便的代码预览:

快速开始

Linux一键安装:

如果您想快速安装Zdir,可以使用Zdir官方提供的一键安装脚本,只需要执行下面的命令:

# CentOS系统
yum -y install curl
curl -s "http://soft.xiaoz.org/zdir/sh/zdir.sh" | bash -s install
# Debian or Ubuntu系统
apt-get install curl
curl -s "http://soft.xiaoz.org/zdir/sh/zdir.sh" | bash -s install

安装完毕后访问http://IP:6080即可


一键安装脚本适合对Linux系统不太熟悉或者想快速体验Zdir的朋友,您还可以参考帮助文档:获取更多安装方式。

问题反馈

安装

Zdir 3安装文档

安装

Linux安装Zdir

一键安装

如果您想快速安装Zdir,可以使用Zdir官方提供的一键安装脚本,只需要执行下面的命令:

# CentOS系统
yum -y install curl
curl -s "http://soft.xiaoz.org/zdir/sh/zdir.sh" | bash -s install
# Debian or Ubuntu系统
apt-get install curl
curl -s "http://soft.xiaoz.org/zdir/sh/zdir.sh" | bash -s install

手动安装

Zdir最新版本下载地址:http://soft.xiaoz.org/#/zdir

以下操作请在SSH命令行完成(注意:请自行修改为最新版下载地址):

# 创建一个新的目录用于存放zdir
mkdir zdir
# 进入目录
cd zdir
# 下载最新安装程序
wget http://soft.xiaoz.org/zdir/3.1.1/zdir_3.1.1_linux_amd64.tar.gz
# 解压
tar -xvf zdir_3.1.1_linux_amd64.tar.gz
# 初始化
./zdir init
# 启动
systemctl start zdir
# 停止
systemctl stop zdir
# 重启
systemctl restart zdir
# 开机自启
systemctl enable zdir

注意,防火墙还需要放行6080端口

#firewalld
firewall-cmd --zone=public --add-port=6080/tcp --permanent
firewall-cmd --reload
#如果使用的ufw
ufw allow 6080/tcp

初始化

安装完毕后,默认访问地址为http://IP:6080/#/user/login初始化用户名、密码,或者点击右上方的登录亦可。

安装

Docker安装Zdir

请确保您已经安装了Docker服务,然后执行下面的命令:

docker run -d --name="zdir" \
  -v /data/apps/zdir/data:/data/apps/zdir/data \
  -v /data/public:/data/apps/zdir/data/public \
  -p 6080:6080 \
  --restart=always \
  helloz/zdir:3.1.1

docker compose安装

在Zdir目录下新建一个docker-compose.yaml,并复制一下内容:

version: '3.3'
services:
    zdir:
        container_name: zdir
        volumes:
            - '/data/apps/zdir/data:/data/apps/zdir/data'
            - '/data/public:/data/apps/zdir/data/public'
        ports:
            - '6080:6080'
        restart: always
        image: 'helloz/zdir:3.1.1'

然后启动:docker-compose up -d

初始化

安装完毕后,默认访问地址为http://IP:6080/#/user/login初始化用户名、密码,或者点击右上方的登录亦可。

安装

Windows安装Zdir

注意:Windows环境下安装的Zdir不支持全局搜索

访问:http://soft.xiaoz.org/#/zdir 下载最新版本到本地并解压。

进入刚刚解压的zdir目录,鼠标右键“在终端打开”

执行命令./zdir.exe init进行初始化:

此时会弹出“你要允许来自未知发布的此应用对你的设备进行更改吗?”,点是即可完成初始化,初始化完毕后终端会提示:

Init success.

打开Win + R,输入services.msc,找到Zdir这个服务,点启动即可。

初始化

安装完毕后,默认访问地址为http://IP:6080/#/user/login初始化用户名、密码,或者点击右上方的登录亦可。

安装

配置文件

配置文件

Zdir配置文件位于data/config.ini中,默认配置为:

# 服务端设置
[servers]
port = :6080
RunMode = release

# 存储设置
[storages]
public_path = data/public
public_domain = 

# 站点信息设置
[sites]
title = Zdir
name = Zdir

有以下参数需要注意:

服务端配置[servers]

存储配置[storages]

站点信息配置[sites]

注意事项

安装

Nginx反向代理

Nginx配置文件

您可以使用Nginx反向代理Zdir,使其通过域名访问。这是生产环境推荐的做法,下方配置可作为参考:

server {
  listen 80;
  #domain.com改成你自己的域名
  server_name domain.com;

   # 精确匹配首页,=优先级最高
	location = / {
		proxy_pass http://127.0.0.1:6080;
		proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
	# 匹配Vue静态文件目录,和public公共文件夹目录
	location ~* /(assets|public|api) {
		#如果是图片等静态文件,添加Expires头部
		if ( $uri ~* .*\.(gif|jpg|jpeg|png|bmp|webp|swf|flv|mp4|ts|ico|js|css|svg|ico)$ ) {
			expires 7d;
		}
		proxy_pass http://127.0.0.1:6080;
		proxy_set_header X-Real-IP $remote_addr;
   	    proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
	# 非/ 和非 /assets目录的时候进行重定向来去掉/public,/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到,优先级最低
	location / {
		rewrite ^/(.*) /public/$1;
	}
	
}

然后修改Zdir配置文件/data/config.inipublic_domain这个参数配置为自己的域名,比如http://domain.com注意:末尾不需要/,但需要带上http或https协议),并重启Zdir

宝塔Nginx用户

如果您使用的宝塔,且安装了Nginx,可以在宝塔后台 - 添加站点 - 填写域名,并创建一个站点。

然后修改这个站点 - 伪静态,添加下面的配置保存即可。

# 精确匹配首页,=优先级最高
	location = / {
		proxy_pass http://127.0.0.1:6080;
		proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
	# 匹配Vue静态文件目录,和public公共文件夹目录
	location ~* /(assets|public|api) {
		#如果是图片等静态文件,添加Expires头部
		if ( $uri ~* .*\.(gif|jpg|jpeg|png|bmp|webp|swf|flv|mp4|ts|ico|js|css|svg|ico)$ ) {
			expires 7d;
		}
		proxy_pass http://127.0.0.1:6080;
		proxy_set_header X-Real-IP $remote_addr;
   	    proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
	# 非/ 和非 /assets目录的时候进行重定向来去掉/public,/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到,优先级最低
	location / {
		rewrite ^/(.*) /public/$1;
	}

使用说明

Zdir 3使用说明。

使用说明

添加站点图标(favicon.ico)

您只需要将favicon.ico这个文件上传到Zdir公共目录(默认是Zdir安装目录下的data/public)即可,注意:

  1. 图标名称必须是favicon.ico
  2. 如果您更改了favicon.ico图标,浏览器可能存在缓存,导致不能及时更新,您可以尝试更换浏览器或清除浏览器缓存
  3. 如果您通过config.ini配置文件修改了公共目录的位置,相应的图标的上传位置也需要随之更改
使用说明

添加统计代码

Zdir 3前端使用了Vue3开发,编译后是一个纯静态的单页面应用,下面介绍下添加统计代码的方法,以百度统计为例。

百度统计设置

打开百度统计后台 - 使用设置 - 单页设置 - 右上角切换到你的网站 - 启用单页应用数据统计,然后保存,如下图。

添加统计代码

继续在“使用设置 - 代码获取”,复制统计代码。

在Zdir安装目录下找到data/dist/index.html这个文件并进行编辑,在</head>这个标签之前添加刚刚复制的百度统计代码,如下图。

最后等待生效即可。

使用说明

去掉路径中的public

默认安装完毕后您会发现文件路径中存在一个public目录。

如果您想去掉这个目录,可以通过下面的方法完成。

首先参考另一篇文档Nginx反向代理 配置反向代理。

然后修改Zdir配置文件(Zdir安装目录下的data/config.ini)修改public_domain这个参数为自己的域名,末尾不需要/,比如:

public_domain = http://soft.xiaoz.org

然后重启Zdir,并重启一次浏览器,注意一定要重启一次浏览器,不然存在缓存无法生效。

使用说明

重置账号、密码

如果您不小心忘记了Zdir用户名、密码,您可以通过以下方式重置。

找到Zdir配置文件data/config.ini(Zdir安装目录下)删除下面的2行配置:

password=7860b476xxxxxxxxx2d945ad7
username=xxxx

最后访问您的Zdir地址:http://IP:6080/#/user/login进行重新初始化用户名/密码即可。

使用说明

隐藏文件

./@/#开头的文件或文件夹,Zdir将视为隐藏文件,比如:

因此您可以创建上述开头的文件进行隐藏,但是注意,隐藏文件依然是可以被访问的,只是前端无法看到而已

升级

Zdir 3升级说明

升级

Linux升级Zdir3

针对Linux用户,我们准备了方便的一键升级脚本,推荐新手使用一键脚本升级,老手请随意。

一键升级

升级前请确保您已经安装curlwget

#CentOS
yum -y install curl wget
# Ubuntu or Debian
apt-get -y install curl wget

然后执行命令升级:

curl -s "http://soft.xiaoz.org/zdir/sh/upgrade.sh"|bash -s 3.1.1

其中3.1.0为最新的Zdir版本号。

注意:该升级脚本仅支持Linux X86_64,如果是ARM架构,请手动升级。

手动升级

请依次执行下面的命令,手动升级Zdir:

#停止Zdir
systemctl stop zdir
#进入您的Zdir目录
cd /data/apps/zdir
#删除旧的静态文件
rm -rf data/dist/assets/
# 下载最新版Zdir
wget http://soft.xiaoz.org/zdir/3.1.1/zdir_3.1.1_linux_amd64.tar.gz
# 解压
tar -xvf zdir_3.1.1_linux_amd64.tar.gz
# 添加执行权限
chmod +x zdir
# 重新启动
systemctl start zdir

注意

如果是3.0.0升级3.1.x需要点击右上方登录按钮初始化账号、密码。

升级

Windows升级Zdir3

手动升级

打开Win + R,输入services.msc,找到Zdir这个服务,点停止。

然后访问:http://soft.xiaoz.org/#/zdir 下载最新版的Zdir到本地,并解压覆盖您原来的Zdir安装目录。

最后重新在服务里面启动Zdir

注意

如果是3.0.0升级3.1.0需要点击右上方登录按钮初始化账号、密码。

升级

Docker升级Zdir3

升级

Docker升级步骤为:

  1. 停止原来的容器并删除
  2. 更改镜像版本号
  3. 按照原来的参数重新启动Zdir即可

停止原来的容器:

#停止Zdir容器并删除
docker stop zdir && docker rm zdir

删除原来(本地挂载目录下)的/data/apps/zdir/data/dist目录,不删除无法更新前端

重新启动一个最新的容器:

docker run -d --name="zdir" \
  -v /data/apps/zdir/data:/data/apps/zdir/data \
  -p 6080:6080 \
  --restart=always \
  helloz/zdir:3.1.1

注意

如果是3.0.0升级3.1.x需要点击右上方登录按钮初始化账号、密码。

功能介绍

Zdir 3功能说明

功能介绍

局部搜索与全局搜索

Zdir支持搜索当前目录(局部搜索),与强大的全局搜索(依赖Linux的find命令)。

注意:Windows安装方式不支持全局搜索

搜索当前目录

如果需要搜索当前目录下的文件,只需要在搜索框输入关键词,并敲击回车按钮即可。

全局搜索

在搜索框输入关键词后,将左侧的选项选择为“全局搜索”,并点击搜索即可实现全局搜索文件。

功能介绍

自动说明文件(README.md)

当您的目录下存在README.md这个文件时,Zdir会自动渲染此文件并输出。注意文件名称区分大小写,必须为README.md,您可以在子目录下单独存放README.md文件,这样进入不同的目录都会有不同的说明。

自动说明文件

比如我在公共目录(默认为Zdir安装目录的data/public)下存放了一个README.md文件,在面包屑导航的下方会出现一个“使用说明(README.MD)”的折叠面板,点击这个面板可以展开查看详细的说明文件。

子目录自动说明

如果您在子目录存放了README.md文件,进入子目录时也会进行渲染该文件,从而实现不同的目录、不同的说明。比如我在data/public/zdir/3.0.0目录下存放了一个README.md文件,效果如下。

功能介绍

隐藏文件夹

Zdir和Linux一样,以.开头的文件被视为隐藏文件,如果某些文件您不想显示出来,可以创建以.开头的文件或文件夹即可。

但是注意如果知道隐藏文件完整路径依然是可以访问的,因此如果是隐私文件,隐藏的做法并不可靠。

API

Zdir3 API使用说明

API

获取认证

Zdir 3部分接口,比如上传、重命名、删除等操作需要获取认证Token后才能操作,部分公共API则无需认证,获取认证方法如下。

接口说明

请求参数

参数名称 示例值 类型 是否必须 说明
username xiaoz string(16) 用户名
password xiaoz.me string(16) 密码

请求成功响应

{
	"code": 200,
	"data": {
		"UserName": "xxx",
		"Cid": "JJjKWZ",
		"Token": "5de13ebfb0xxxxxx861fbe"
	},
	"msg": "success"
}

注意:Token认证有效期为7天,过期后请重新获取。

请求失败响应

{
	"code": -1000,
	"data": "",
	"msg": "用户名或密码错误!"
}

请求认证

需要认证的接口需要携带header头部,以下为公共头部参数:

参数名称 示例值 类型 是否必须 说明
X-Cid JJjKWZ string(6) CID,对应data.Cid
X-Token 5de13ebfb0xxxxxx861fbe string(32) Toekn,对应data.Token
API

获取文件列表

接口说明

请求参数

参数名称 示例值 类型 是否必须 说明
path /zdir string 需要获取的目录

注意:path参数需要以/开头

请求成功

{
    "code": 200,
    "data": [
        {
            "Name": "3.0.0",
            "Size": 4096,
            "Mtime": "2022-10-18 12:48:35",
            "Ftype": "folder",
            "Fpath": "/zdir/3.0.0",
            "Ext": "",
            "Link": "http://soft.xiaoz.org/public%2Fzdir%2F3.0.0"
        },
        {
            "Name": "sh",
            "Size": 4096,
            "Mtime": "2022-10-26 10:07:00",
            "Ftype": "folder",
            "Fpath": "/zdir/sh",
            "Ext": "",
            "Link": "http://soft.xiaoz.org/public%2Fzdir%2Fsh"
        },
        {
            "Name": "zdir_3.1.0_linux_amd64.tar.gz",
            "Size": 4038550,
            "Mtime": "2022-10-25 19:55:10",
            "Ftype": "file",
            "Fpath": "/zdir/zdir_3.1.0_linux_amd64.tar.gz",
            "Ext": "gz",
            "Link": "http://soft.xiaoz.org/public%2Fzdir%2Fzdir_3.1.0_linux_amd64.tar.gz"
        },
        {
            "Name": "zdir_3.1.0_windows_amd64.tar.gz",
            "Size": 11470456,
            "Mtime": "2022-10-25 20:17:29",
            "Ftype": "file",
            "Fpath": "/zdir/zdir_3.1.0_windows_amd64.tar.gz",
            "Ext": "gz",
            "Link": "http://soft.xiaoz.org/public%2Fzdir%2Fzdir_3.1.0_windows_amd64.tar.gz"
        }
    ],
    "msg": "success"
}

请求失败

{
    "code": -1000,
    "data": "",
    "msg": "文件夹不存在!"
}
API

获取单个文件信息

接口说明

请求参数

参数名称 示例值 类型 是否必须 说明
fpath /zdir/zdir_3.1.0_linux_amd64.tar.gz string 文件路径

请求成功响应

{
    "code": 200,
    "data": {
        "Name": "zdir_3.1.0_linux_amd64.tar.gz",
        "Size": 4038550,
        "Mtime": "2022-10-25 19:55:10",
        "Fpath": "/zdir/zdir_3.1.0_linux_amd64.tar.gz",
        "Ext": "gz"
    },
    "msg": "success"
}

请求失败响应

{
	"code": -1000,
	"data": "",
	"msg": "只允许文件参数!"
}
API

上传文件

接口说明

请求参数

公共Header头部:

参数名称 示例值 类型 是否必须 说明
path /zdir string Zdir文件路径
file file 本地文件

请求成功响应

{
    "code": 200,
    "data": "",
    "msg": "success"
}

请求失败响应

{
	"code": -1000,
	"data": "",
	"msg": "文件夹不存在!"
}
API

删除文件

接口说明

请求参数

参数名称 示例值 类型 是否必须 说明
fpath /zdir/GPP_BenchMark.jpg string 文件路径

请求成功响应

{
    "code": 200,
    "data": "",
    "msg": "success"
}

请求失败响应

{
	"code": -1000,
	"data": "",
	"msg": "文件不存在!"
}
API

重命名文件

接口说明

请求参数

公共Header头部:

参数名称 示例值 类型 是否必须 说明
fpath /zdir/ string 文件夹路径
old_name ExampleRun.bat string 原来的名称
new_name ExampleRun1.bat string 新的名称

请求成功响应

{
    "code": 200,
    "data": "",
    "msg": "success"
}
API

新建文件夹

接口说明

请求参数

参数名称 示例值 类型 是否必须 说明
path /zdir string 父级文件夹路径
name test string 文件夹名称

请求成功响应

{
    "code": 200,
    "data": "",
    "msg": "success"
}

卸载Zdir

Linux卸载Zdir

如果是一键安装方式,可以通过下面的命令卸载:

curl -s "http://soft.xiaoz.org/zdir/sh/zdir.sh" | bash -s uninstall

手动卸载方式为:

# 停止Zdir服务
systemctl stop zdir
# 删除服务
rm -rf /etc/systemd/system/zdir.service
systemctl daemon-reload

最后根据自身需要是否删除Zdir安装目录。

Windows卸载Zdir

进入Zdir安装目录,鼠标右键 - 在终端打开。

输入下面的命令,停止并卸载Zdir服务:

./run.exe stop
./run.exe uninstall

最后根据需要选择是否删除Zdir安装目录。