AX9000 Docker - Cloudreve 搭建并打洞

2022-12-10

接上次,我们在 AX9000 中安装了 Docker,我们可以用它搭建一个网盘,并且打洞映射到外网(Cloudflare Argo Tunnel)

打洞使用 Cloudflare Argo Tunnel / 和 Cloudflare 零信任使用同一个程序

Cloudreve 的配置

进入 快速开始 - Cloudreve

找到 Docker Compose 安装方式

为什么不使用传统安装方式?

AX9000 虽然开启了 Docker,但是不提供 SSH

所以我们无法通过命令行的方式安装 Cloudreve

复制 Compose 文件

version: "3.8"
services:
  cloudreve:
    container_name: cloudreve
    image: cloudreve/cloudreve:latest
    restart: unless-stopped
    ports:
      - "5212:5212"
    volumes:
      - temp_data:/data
      - ./cloudreve/uploads:/cloudreve/uploads
      - ./cloudreve/conf.ini:/cloudreve/conf.ini
      - ./cloudreve/cloudreve.db:/cloudreve/cloudreve.db
      - ./cloudreve/avatar:/cloudreve/avatar
    depends_on:
      - aria2
  aria2:
    container_name: aria2
    image: p3terx/aria2-pro
    restart: unless-stopped
    environment:
      - RPC_SECRET=your_aria_rpc_token
      - RPC_PORT=6800
    volumes:
      - ./aria2/config:/config
      - temp_data:/data
volumes:
  temp_data:
    driver: local
    driver_opts:
      type: none
      device: $PWD/data
      o: bind

在桌面新建一个 yml 文件并用 VSCode 打开

Lock

看到 Cloudreve 的文件映射,我们要将 ./cloudreve 前面全部加上 /mnt/docker_disk/mi_docker/

version: "3.8"
services:
  cloudreve:
    container_name: cloudreve
    image: cloudreve/cloudreve:latest
    restart: unless-stopped
    ports:
      - "5212:5212"
    volumes:
      - temp_data:/data
      - /mnt/docker_disk/mi_docker/cloudreve/uploads:/cloudreve/uploads
      - /mnt/docker_disk/mi_docker/cloudreve/conf.ini:/cloudreve/conf.ini
      - /mnt/docker_disk/mi_docker/cloudreve/cloudreve.db:/cloudreve/cloudreve.db
      - /mnt/docker_disk/mi_docker/cloudreve/avatar:/cloudreve/avatar
    depends_on:
      - aria2
  aria2:
    container_name: aria2
    image: p3terx/aria2-pro
    restart: unless-stopped
    environment:
      - RPC_SECRET=your_aria_rpc_token
      - RPC_PORT=6800
    volumes:
      - /mnt/docker_disk/mi_docker/aria2/config:/config
      - temp_data:/data
volumes:
  temp_data:
    driver: local
    driver_opts:
      type: none
      device: $PWD/data
      o: bind

然后在 Windows 资源管理器 中进入路由器的 SMB

请对你的设备在米家中开启全盘访问

Lock

新建一个 cloudreve 文件夹

在其中新建 aria2 | avatar | uploads 三个文件夹

并创建 cloudreve.db | conf.ini 两个空文件

然后返回到 mi_docker 文件夹

新建 aria2 文件夹

并在其中新建 config 文件夹

这样就完成了文件映射~

部署 Cloudreve

进入 Portainer 中的 Stacks

Lock

新建一个 Stacks

Lock

将本地修改好的 yml 直接粘贴到输入框中

然后点击 Deploy the stack

Lock

稍等片刻,你就能在 Stacks 中看见你部署的容器了

容器后面的 IP Address 就是你的容器内网地址

Lock

aria2 没有映射端口,我们只要复制 cloudreve 的地址加上 5212 端口就行

接下来我们去 cloudreve 的日志中获取管理员密码

Lock

Lock

(这里是我配置好的网盘)

打洞映射

此处我们需要创建一个 Ubuntu 容器用来映射

进入 App Templates 界面

Lock

找到 Ubuntu 并部署

部署完成之后进入容器详情

找到 Connected networks

Lock

在这里加入 Cloudreve Stack 的网络

然后找到 Console

Lock

连接到容器

配置 Cloudflared

此处假设你拥有 Cloudflare 账号,并添加好了域名

首先换源

因为这个系统太迷你了

先升级 ca-certificates

$ apt-get update
$ apt-get install ca-certificates

然后安装必要工具

$ apt-get install vim
$ apt-get install systemctl

网络差用户

对于网络环境差的用户,请先用 sed 替换源,在进行操作

现在我们下载 Cloudflared

$ wget https://github.com/cloudflare/cloudflared/releases/download/2022.11.1/cloudflared-linux-arm64.deb cloudflared.deb

网络不好可以上传到你刚才搭建的 Cloudreve 中,然后 wget 下载下来

安装 Cloudflared

$ dpkg -i ./cloudflared.deb

然后我们需要设置隧道

$ cloudflared tunnel login

这时候终端里面会出现一串 URL,复制在浏览器里访问并授权就好了

创建一个隧道

$ cloudflared tunnel create <隧道名>

记录下隧道 ID

创建路由

$ cloudflared tunnel route dns <隧道名> <主机名>

然后我们需要创建配置文件

$ touch ~/.cloudflared/config.yml

内容大概如下

url: http://localhost:8080
tunnel: xxxxxxx-5b0e-xxxx-8034-xxxxxxx
credentials-file: ~/.cloudflared/xxxxxxx-5b0e-xxxx-8034-xxxxxxx.json

url 替换成你要映射的 cloudreve 地址

tunnelcredentials-file 中的 xxxxxxx-5b0e-xxxx-8034-xxxxxxx 替换成你的隧道 ID

作为服务运行

不知道为什么, screen 在容器上面是用不了的,所以我们只能用 systemctl 作为服务运行

两步走起

$ cloudflared service install
$ systemctl start cloudflared

Cloudflared 连接到了 HKG 节点之后,你的 Cloudreve 就被映射出去辣~