闲言

因为博主在学校的小组有一些资料很重要但是因为之前存放在机械硬盘中丢失掉了,呜呜呜血与泪的教训,外加想玩一玩服务器所以就想着搭建一个网盘。

Zfile

页面简洁,支持多种文件预览和多用户,以及限速等。ZFile 官网

预览地址:ZFile V4 演示站 | 首页

安装

开源版部署教程 | ZFile Docs中有多种方法部署,因为博主用的ubantu系统docker部署的所以下面教程也是这个形式

准备环境

  1. 一台具有公网IP的服务器
  2. 一个域名
  3. 安装好Docker,Docker-compose(如果按照不好的话可以使用宝塔安装)

安装步骤

创建一下安装目录

1
2
3
4
5
mkdir -p /root/data/docker_data/zfile

cd /root/data/docker_data/zfile

vim docker-compose.yml

docker-compose.yml填入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3.3'
services:
zfile:
container_name: zfile
restart: always
ports:
- '8080:8080' # 左边的端口可以修改,右边的端口不要修改
volumes:
- './db:/root/.zfile-v4/db' # 数据库映射到当前文件夹下的db目录
- './logs:/root/.zfile-v4/logs' # 日志文件映射到当前文件夹下的logs目录
- './data:/root/.zfile-v4/data' # 额外映射了一个data目录,等下本地存储我们就可以填/root/.zfile-v4/data目录啦
image: zhaojun1998/zfile

然后按esc,输入:wq。保存

我按照的教程【好玩儿的Docker项目】ZFile ——又一款强大好用的在线文件目录的程序!-我不是咕咕鸽和官方教程有使用一个映射配置文件(可选)

1
2
3
4
5
6
# 下载到 application.properties 文件到 /root/data/docker_data/zfile 目录下, 此目录可自行更改, 然后增加一个 -v 参数,将此源文件映射到容器内(如修改宿主机的 application.properties 为其他路径, 则下面命令也要一起修改)(docker compose 同理).

cd /root/data/docker_data/zfile

curl -o /root/data/docker_data/zfile/application.properties https://c.jun6.net/ZFILE/application.properties

我就照搬过来了。如果你做了这步的话

docker-compose.yml的内容有所改变

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3.3'
services:
zfile:
container_name: zfile
restart: always
ports:
- '8080:8080' # 左边的端口可以修改,右边的端口不要修改
volumes:
- './db:/root/.zfile-v4/db' # 数据库映射到当前文件夹下的db目录
- './logs:/root/.zfile-v4/logs' # 日志文件映射到当前文件夹下的logs目录
- './data:/root/.zfile-v4/data' # 额外映射了一个data目录,等下本地存储我们就可以填/root/.zfile-v4/data目录啦
- './application.properties:/root/application.properties'
image: zhaojun1998/zfile

zfile会占用8080端口所以要检查一下端口有没有被占用

1
lsof -i:8080  #查看8080端口是否被占用,如果被占用,重新自定义一个端口

在zfile目录中运行

1
docker-compose up -d 

拉取容器拉取成功后浏览器访问http://<你的ip>:8080

域名的绑定我用的是nginx,之前那个教程里面用的是Nginx Proxy Manager,因为我这个服务器上还搭建着一个博客所以我的配置文件无法直接复制,关于反向代理可以通过ai去完成。

错误处理

docker容器拉取失败

因为在大陆的服务器可能会因为网络问题而无法拉取容器,所以博主采用的把容器在自己电脑上拉取下载打包成tar的压缩包上传到服务器上使用。

因为自己的电脑是可以使用魔法上网,确保自己的电脑上安装了 Docker Desktop for Windows

打开cmd运行拉取镜像

1
docker pull zhaojun1998/zfile:latest

将镜像保存为 tar 文件

1
docker save zhaojun1998/zfile:latest -o zfile.tar

这会在当前目录生成一个 zfile.tar 文件将文件发送到服务器上

在服务器上执行

1
2
3
4
5
# 如果是 .tar 文件
docker load -i zfile.tar

# 如果是 .tar.gz 压缩包
gunzip -c zfile.tar.gz | docker load

验证是否成功:

1
docker images

应该能看到 名字叫zhaojun1998/zfile 的镜像

运行容器

1
2
3
4
5
docker run -d \
--name zfile \
-p 8080:8080 \
-v <自己的data目录路径>:/root/zfile/data \
zhaojun1998/zfile

之后访问http://<你的ip>:8080就可以了。