群晖NAS利用rclone和docker挂载Google Shared Drive共享团队硬盘

让群晖中的套件方便读取谷歌网盘的内容

请注意,本文编写于 726 天前,最后修改于 725 天前,其中某些信息可能已经过时。

为何使用docker而不使用安装rclone为系统命令

群晖是一个相对封闭的系统,任何通过root自行安装的第三方软件,都有可能造成系统崩溃。而docker内的rclone,虽然也需要到ssh里用root进行操作,但是使用的都是群晖自带的软件,所以理论上不会造成系统问题。

对于rclone这个软件,在黑裙上使用了一年有余,没有出现过任何问题。但是最近由于生产环境的白群晖需要借用到rclone的功能,为了避免后续不必要的麻烦,所以就采用了docker版的rclone。

群晖Docker套件

1.1. 群晖自带了Docker套件,如果先前没有安装过的话,需要前往套件中心,先行安装Docker套件。

image_2021-12-05_20-35-15.png
image_2021-12-05_20-35-15.png

1.2. 进入Docker套件,安装rclone镜像。

image_2021-12-05_20-42-47.png
image_2021-12-05_20-42-47.png

1.3. 进入file station,创建配置文件及挂载文件夹。由于docker的便携性,我习惯将一个docker所需要用到的所有文件放在一起,方便于测试后打包放去正式环境。也更便于一键跑路

这里我在File Station能访问到的根目录下,创建了一个docker文件夹用于堆放所有docker的相关配置文件。其中rclone文件夹内就是rclone所需要用到的配置文件。

image_2021-12-05_21-02-12.png
image_2021-12-05_21-02-12.png

1.4. 这里的配置文件主要有两部分组成

image_2021-12-05_21-05-11.png
image_2021-12-05_21-05-11.png

  • rclone本身的配置(rclone_config文件夹)

    image_2021-12-05_21-23-19.png
    image_2021-12-05_21-23-19.png

    • .rclone.conf 就是配置文件
      示例文件下载

      • 这里需要编辑3个地方:

        • 第一行 "[]" 内的挂载盘名字(示例文件中的 gdmount01 部分)
        • 第五行 "=" 右边的sa文件路径
        • 第六行 "=" 右边挂载盘的ID
          image_2021-12-05_21-15-57.png
          image_2021-12-05_21-15-57.png
  • 挂载时所要调用到的sa文件(accounts.0-100文件夹)
    这里堆放了自己申请的sa账户,sa的好处这里不在赘述。随便选其中一个sa账户的文件名,rclone配置文件的第五行,示例文件中使用了 1.json 作为演示
    image_2021-12-05_21-29-22.png
    image_2021-12-05_21-29-22.png

1.5. 创建挂载团队盘的挂载点

- 这里使用 `mnt/example` 作为演示,成功挂载后,团队盘的根目录会出现在 `mnt/example` 中

image_2021-12-05_21-29-22.png
image_2021-12-05_21-29-22.png

连接ssh的后续操作

2.1. 通过ssh软件,连接群晖,并通过 sudo -i 升权至root账户,过程中会提示输入当前用户密码,此时输入密码不会有任何提示,输入正确密码后,回车即可切换至 root 账户

image_2021-12-05_20-48-29.png
image_2021-12-05_20-48-29.png

2.2. 输入以下命令,启动挂载

docker run \
-d \
--name mumiehub-rclone-opencd \
--restart=always \
--cap-add SYS_ADMIN \
--device /dev/fuse \
--security-opt apparmor:unconfined \
-e RemotePath="gdmount01:" \
-e MountCommands="--allow-other --uid 1000 --gid 1000 --umask 022 --default-permissions --allow-non-empty --allow-other --buffer-size 32M --vfs-read-chunk-size=32M --vfs-read-chunk-size-limit 2048M --vfs-cache-mode writes --dir-cache-time 96h" \
-v /volume1/docker/rclone/rclone_config:/config \
-v /volume1/mnt/example:/mnt/mediaefs:shared \
-v /volume1/docker/rclone/accounts.0-100:/mnt/accounts.0-100/ \
mumiehub/rclone-mount:latest

2.3. 大部分人第一次操作会返回 docker ID 并伴随一个错误 linux mounts: path xx is mounted on xx but it is not a shared mount 此时需要输入如下指令使挂载点成为共享挂载点 sudo mount --make-shared /volume1 这里的volume1是指挂载点所在的盘,我的挂载点建立在 volume1 所以此处就以 volume1 做范例。

2.4. 如过出现 2.3 中的错误,并按照方法已经处理完,先使用 docker rm <2.3中返回的docker ID> 再使用 2.2 中的命令,重新启动docker进行挂载。

2.5. 成功挂载后,会简单的返回一个 docker ID
回到File Station内,即可在挂载点内看到所挂载团队盘的内容。

最后,千万不要在群晖套件的docker内对这个挂载docker进行操作,大概率会使挂载出现问题,因为群晖套件的docker部分功能实现并不完整。

添加新评论

评论列表