Docker搭建ZFile并添加存储源

1. 介绍(来自官网)

该项目是一个开源在线文件目录程序,支持本地存储和各种对象存储,类似Alist,目前使用体验非常棒。

1.1 系统特色

  • Docker、Docker Compose 支持(amd64/arm64)
  • 响应式设计,多端兼容
  • 支持文件操作:上传、下载、重命名、删除、新建文件夹等
  • 本地文件一样的操作体验,支持拖拽选择,Ctrl + 鼠标左键 多选,Shift + 单击 多选,Ctrl + A 全选,Esc 取消全选
  • 本地文件一样的上传体验,支持 Ctrl + V 粘贴上传文件/文件夹,拖拽粘贴上传文件/文件夹
  • 图片画廊模式,且支持自定义列数,间距等信息。
  • 文件夹加密
  • 目录 readme 文档
  • 文件/文件夹隐藏
  • 自定义 js, css
  • 支持在线浏览文本文件、PDF、图片、音乐、视频(支持 mp4、flv、hls)
  • 文件直链和二维码
  • 同时挂载多个存储策略
  • 支持 S3 协议,阿里云 OSS,FTP,华为云 OBS,本地存储,MINIO,OneDrive 国际/家庭/个人版/世纪互联版/SharePoint,七牛云 KODO,腾讯云 COS,又拍云 USS

1.2 相关地址

官网地址:https://zfile.vip

文档地址:https://docs.zfile.vip

社区地址:https://bbs.zfile.vip

项目地址:https://github.com/zhaojun1998/zfile

前端地址:https://github.com/zhaojun1998/zfile-vue

1.3 项目展示

1.3.1 文件预览

1.3.2 画廊模式

1.3.3 视频预览

1.3.4 文本预览

1.3.5 音频预览

1.3.6 PDF预览

1.3.7 Office预览

1.3.8 3D文件预览

1.3.9 生成直链

1.3.10 后台登录

2 搭建环境

2.1 服务器

准备服务器一台,服务器要求1核1G以上就行,能搭建docker即可,本次搭建使用的是雨云的香港云服务器(2H2G),系统是Debain 10。
最好是选用非大陆的服务器,可以省去备案的时间和繁琐。

2.2 域名

准备域名一个,并将你的域名解析到服务器上,域名购买、解析自行百度。

2.3 安装docker

安装docker(非大陆服务器)

wget -qO- get.docker.com | bash

查看docker版本

docker -v

设置开机自启动

systemctl enable docker

安装docker-compose(非大陆服务器)

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

加执行权限

sudo chmod +x /usr/local/bin/docker-compose

查看docker-compose版本

docker-compose --version

安装docker(国内服务器)

curl -sSL https://get.daocloud.io/docker | sh

查看docker版本

docker -v

设置开机自启动

systemctl enable docker

安装docker-compose(国内服务器)

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose  #加执行权限

docker-compose --version  #查看 docker-compose 版本

修改docker配置
以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘(泪的教训):

cat > /etc/docker/daemon.json <<EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF

重启docker服务

systemctl restart docker

2.4 手动安装Docker-compose

如果一键安装docker-compose脚本安装失败,则采用手动安装

查看服务器系统和架构

uname -s
uname -m

下载docker-compose文件
前往GitHub:https://github.com/docker/compose/releases,下载对应的文件
通过FTP上传到服务器的指定路径下:/usr/local/bin/docker-compose
赋予可执行权限

chmod +x /usr/local/bin/docker-compose

创建软链接

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

如果出现报错:/usr/bin/docker-compose 已经存在,删除该文件夹就好了

rm -rf /usr/bin/docker-compose

再次执行创建软链接就好了
查看docker-compose版本

docker-compose --version

3 开始搭建

3.1 搭建

创建安装目录

mkdir zfile
cd zfile/
vim docker-compose.yml

Docker 镜像托管在 DockerHub:Docker

在docker-compose.yml中填入一下内容:

version: '3.3'
services:
    zfile:
        container_name: zfile
        restart: always
        ports:
            - '8080:8080'   # 左边的端口可以修改,右边的端口不要修改
        volumes:
            - '/root/zfile/db:/root/.zfile-v4/db'      # 数据库映射到当前文件夹下的db目录
            - '/root/zfile/logs:/root/.zfile-v4/logs'  # 日志文件映射到当前文件夹下的logs目录
            - '/root/zfile/file:/data/file'            # 映射了一个data目录,添加本地存储时可以填/data/file作为本地存储目录
        image: zhaojun1998/zfile

没问题保存退出即可。
配置文件映射(可选)
如需映射配置文件则需要先在宿主机下载配置文件,然后映射到容器内: 下载 application.properties 文件到 /root 目录下, 此目录可自行更改, 命令如:

curl -k -o /root/application.properties https://c.jun6.net/ZFILE/application.properties

然后增加一个 -v 参数(见下面倒数第二行),将此源文件映射到容器内(如修改宿主机的 application.properties 为其他路径, 则下面命令也要一起修改), 如:

version: '3.3'
services:
    zfile:
        container_name: zfile
        restart: always
        ports:
            - '8080:8080'
        volumes:
            - '/root/zfile/db:/root/.zfile-v4/db'
            - '/root/zfile/logs:/root/.zfile-v4/logs'
            - '/root/zfile/file:/data/file'
            - '/root/application.properties:/root/application.properties'
        image: zhaojun1998/zfile

提示: 启动容器后无法修改文件映射,需先 docker rm -f zfile 删除容器,再重新运行命令。

运行

cd zfile/
docker-compose up -d

等待拉取镜像,拉取完成后可以查看容器是否运行:

docker ps

打开防火墙端口
在你的服务器打开8080端口,在各大云服务商控制面板自行配置安全组放行端口,有些云厂商默认全部打开,如狗云。

访问ZFile
在浏览器输入:你的服务器IP:8080即可访问。
IP + 端口太不优雅了,建议还是搞一个域名,容易记,看起来也更正规一点。这样可以做 https,会让网页更安全。
域名访问请往下看!

3.2 更新
cp -r /root/zfile /root/zfile.archive  # 备份(可选)

cd /root/zfile  # 进入docker-compose所在的文件夹

docker-compose pull    # 拉取最新的镜像

docker-compose up -d   # 重新更新当前镜像
3.3 卸载
cd /root/zfile  # 进入docker-compose所在的文件夹

docker-compose down    # 停止容器,此时不会删除映射到本地的数据

rm -rf /root/data/docker_data/zfile  # 完全删除映射到本地的数据

4 反向代理

4.1 安装Nginx Proxy Manager

创建安装目录

mkdir -p /root/npm

cd /root/npm

docker安装npm

vim docker-compose.yml

在docker-compose.yml中输入以下内容:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'  # 保持默认即可,不建议修改左侧的80
      - '81:81'  # 冒号左边可以改成自己服务器未被占用的端口
      - '443:443' # 保持默认即可,不建议修改左侧的443
    volumes:
      - ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
      - ./letsencrypt:/etc/letsencrypt  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中

确认无误后保存,退出。
运行

cd /npm
docker-compose up -d

等待拉取镜像,拉取完成后可查看容器是否正常运行,输入:

docker ps

网页访问Nginx Proxy Manager
打开防火墙的81端口,输入:服务器ip:81即可访问Nginx Proxy Manager。
默认登录名和密码:

Email:    admin@example.com
Password: changeme
4.2 ZFile配置域名

登录Nginx Proxy Manager
访问如上所示,网页访问Nginx Proxy Manager配置好用户信息后可以看到如下界面:


如图点击框中位置后界面如下:

点击图中红框后界面如下:

按顺序填入框中信息后,保存即可。
再次编辑该代理,配置ssl证书,操作如下:

至此,反向代理配置完成!

注:在填写第三张图所示的服务器地址时,填写的为你的服务器地址,你的域名解析到你的Nginx Proxy Manager所在服务器地址,如果你的Nginx Proxy Manager地址和你的ZFile所在服务器地址是同一个,则无需注意此条。

4.3 域名访问ZFile

在浏览器访问你的域名就可以了!
完成ZFile的一些初始配置,具体可以查看官网的文档,讲的非常详细。

5 添加存储源

5.1 添加雨云对象存储(S3)

购买雨云对象存储和创建存储桶可以参考雨云的文档,非常详细
添加存储
存储策略选择S3,其他自己个人创建


如下图,根据你的雨云存储桶对应图中框内的信息。

不勾选跨域,保存设置后添加成功。

返回存储设置后可以看到添加成功的存储桶。

5.2 添加Google Drive

自建Google Drive API

  1. 打开 Google Drive API Console:https://console.cloud.google.com/apis/dashboard
  2. 点击 “启用 API 和服务”
  3. 搜索 google drive api
  4. 启用 API 功能
  5. 创建凭证
  6. 创建 OAuth2 API
  7. 保存好你的 Client ID 和 Client Secret
  8. 创建 OAuth2 屏幕
  9. 添加测试用户
  10. 完成
    现在可以使用第七步保存的 Client ID 和 Client Secret 去 ZFile 填写了。
5.3 添加OneDrive

自建 OneDrive API

  1. 打开 Azure Portal 登录
  1. 点击 “主页” → “应用注册” → “新注册”
  2. 填写 API 基本信息
  • 名称:随意写
  • 受支持的账户类型:按照上图中的选择
  • 重定向 URI:左侧的类型选 WEB,右侧的地址填写 ZFile demo.zfile.vip, 所以可以写这个,实际应该按照写你自己的域名,如下图:
  • 将自己的回调地址写到 ZFile 中截图的位置,如你的 ZFile 域名是 https://xxx.com,那么就写 XXX Sex - Free Porn Videos at XXX.com
  1. clientId
    复制 clientId 备用,填写到 ZFile 中,如图:
  2. SecretKey
    点击 “证书和密码” → “新客户端密码”,然后说明(随便写),截止日期选择 24 个月,将生成的结果复制到 ZFile 中,如图:
  3. 设置 API 权限
    点击 “API 权限” → “Microsoft Graph”,依次输入需要的权限,勾选,最后点击更新权限,如图:
  4. 完成
    在 ZFile 中可以使用了,注意再确认下 OneDrive 类型是否正确,别错误把国际版和世纪互联的弄混、然后再看看是否已将 ZFile 中的 clientId 和 SecretKey 还有回调地址填写为新创建的 API 的信息。然后就可以点击 ZFile 中的 “前往获取令牌” 去使用你自定义 API 获取 OneDrive 的令牌了。获取后看看回调后的地址是否是你自定义的回调地址,如果是,那么就说明你的 API 已经配置成功了。
5.4 添加七牛云

按照如图配置即可:

5.5 添加又拍云

按照如图配置即可:


5.6 添加本地存储

按照如下配置即可:

6 结尾

本次的教程搭建完毕,有问题可以去 GitHub 提 Issues,最好是排查问题后再提问!