Sign inSign up

wiserain/plexdrive

By wiserain

•Updated about 3 years ago

Docker image for Plexdrive mount

Image
11

1M+

wiserain/plexdrive repository overview

⁠docker-plexdrive

Docker image for plexdrive⁠ mount

  • Ubuntu 20.04
  • pooling filesystem (a choice of mergerfs or unionfs)

⁠Usage

version: '3'

services:
  plexdrive:
    container_name: plexdrive
    image: wiserain/plexdrive:latest
    restart: always
    network_mode: "bridge"
    volumes:
      - ${DOCKER_ROOT}/plexdrive/config:/config
      - ${DOCKER_ROOT}/plexdrive/cache:/cache   # Optional: prepared for --chunk-file
      - /your/mounting/point:/data:shared
      - /local/dir/to/be/merged/with:/local     # Optional: if you have a folder to be mergerfs/unionfs with
    devices:
      - /dev/fuse
    cap_add:
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}

equivalently,

docker run -d \
    --name=plexdrive \
    --cap-add SYS_ADMIN \
    --device /dev/fuse \
    --security-opt apparmor=unconfined \
    -v ${DOCKER_ROOT}/plexdrive/config:/config \
    -v ${DOCKER_ROOT}/plexdrive/cache:/cache \
    -v /your/mounting/point:/data:shared \
    -v /local/dir/to/be/merged/with:/local \
    -e PUID=${PUID} \
    -e PGID=${PGID} \
    -e TZ=${TZ} \
    wiserain/plexdrive:latest

First, up and run your container as above. It will be waiting for two plexdrive configuration files to be ready. You can create those files using built-in script by

docker-compose exec <service_name> plexdrive_setup

Once you finish typing your API token, shell stops responding. No worries, it is expected. Simply escape by Ctrl+C, and go to /config. You will find two json files generated. Container running in background will proceed to execute mounting command for plexdrive. You can now access google drive contents via volume-mapped /your/mounting/point.

⁠plexdrive mount

Here is the internal command for plexdrive mount.

plexdrive mount ${plexdrive_mountpoint:-/data} \
    --config /config/ \
    --uid=${PUID:-911} \
    --gid=${PGID:-911} \
    --umask=0100775 \
    -o allow_other \
    ${PLEXDRIVE_OPTS}

Please not that variables with capital letters are only configurable by the container environment variable.

ENVDescriptionDefault
PUID / PGIDuid and gid for running an app911 / 911
TZtimezone, required for correct timestamp in log
PLEXDRIVE_OPTSadditioanl arguments which will be appended to the basic options

By default, plexdrive_mountpoint is /data but fallbacks to /cloud if your container has bind-mount at /local and so that can be pooled in the following process.

⁠mergerfs⁠ or unionfs (optional)

Along with the plexdrive folder, you can specify one local directory to be mergerfs with by POOLING_FS=mergerfs. Internally, it will execute a following command

mergerfs \
    -o uid=${PUID:-911},gid=${PGID:-911},umask=022,allow_other \
    -o ${MFS_USER_OPTS} \
    /local=RW:/cloud${PLEXDRIVE_PATH}=NC /data

where a default value of MFS_USER_OPTS is

MFS_USER_OPTS="rw,use_ino,func.getattr=newest,category.action=all,category.create=ff,cache.files=auto-full,dropcacheonclose=true"

If you want unionfs instead of mergerfs, set POOLING_FS=unionfs, which will apply

unionfs \
    -o uid=${PUID:-911},gid=${PGID:-911},umask=022,allow_other \
    -o ${UFS_USER_OPTS} \
    /local=RW:/cloud${PLEXDRIVE_PATH}=RO /data

where a default value of UFS_USER_OPTS is

UFS_USER_OPTS="cow,direct_io,nonempty,auto_cache,sync_read"

You can pool a sub-dir of plexdrive by PLEXDRIVE_PATH. Make sure to start the path with /.

Tag summary

Content type

Image

Digest

sha256:926c14278…

Size

45.6 MB

Last updated

about 3 years ago

docker pull wiserain/plexdrive