中文指引: https://www.sheyilin.com/2020/04/docker-rclone-proxy
Project's DockerHub https://hub.docker.com/r/gqbre/docker-rclone-proxy
Lightweight and simple Container Image (alpine:latest - 160MB
) with compiled rclone (https://github.com/ncw/rclone master).
You need a working rclone.conf
docker run -d --name docker-rclone-proxy \
--restart=unless-stopped \
--cap-add SYS_ADMIN \
--device /dev/fuse \
--security-opt apparmor:unconfined \
-e RemotePath="mediaefs:" \
-e MountCommands="--allow-other --allow-non-empty" \
-e Proxy="false" \
-v /path/to/config:/config \
-v /host/mount/point:/mnt/mediaefs:shared \
gqbre/docker-rclone-proxy
mandatory docker commands:
- --cap-add SYS_ADMIN --device /dev/fuse --security-opt apparmor:unconfined
needed volume mappings:
- -v /path/to/config:/config
- -v /host/mount/point:/mnt/mediaefs:shared
HTTP Proxy commands: Set HTTP/S Proxy before mount conmands
- -e Proxy="false"
- -e ProxyTarget="host.docker.internal"
- -e ProxyPort="1087"
Variable | Description | |
---|---|---|
RemotePath ="mediaefs:path" |
remote name in your rclone config, can be your crypt remote: + path/foo/bar | |
MountPoint ="/mnt/mediaefs" |
#INSIDE Container: needs to match mapping -v /host/mount/point:/mnt/mediaefs:shared |
|
ConfigDir ="/config" |
#INSIDE Container: -v /path/to/config:/config | |
ConfigName ="rclone.conf" |
#INSIDE Container: /config/rclone.conf | |
MountCommands ="--allow-other --allow-non-empty" |
default mount commands, (if you not parse anything, defaults will be used) | |
UnmountCommands ="-u -z" |
default unmount commands | |
AccessFolder ="/mnt" |
access with --volumes-from rclone-mount, changes of AccessFolder have no impact because its the exposed folder in the dockerfile. | |
Proxy ="false" |
use http/s proxy setting or not | |
ProxyTarget ="host.docker.internal" |
default host.docker.internal to connect the host machine (docker version 18.03+ supported but unreliable), set 172.17.0.1 in Synology DSM |
|
ProxyPort ="1087" |
port of http/s proxy |
-e MountCommands="--allow-other --allow-non-empty --buffer-size 32M --vfs-read-chunk-size=32M --vfs-read-chunk-size-limit 2048M --vfs-cache-mode writes --dir-cache-time 96h"
All Commands can be found at https://rclone.org/commands/rclone_mount/. Use --buffer-size 256M
(dont go too high), when you encounter some "Direct Stream" problems on Plex Media Server (Samsung Smart TV for example).
When you force remove the container, you have to execute sudo fusermount -u -z /mnt/mediaefs
on the hostsystem!
The ProxyTarget
with value host.docker.internal
is unreliabled, try 172.17.0.1
in Linux like Synology DSM, or use real IP address instead. Or you can try --network host
mode to use host networking, with setting ProxyTarget=localhost
to connect to host machine.
If you get an error like "docker: Error response from daemon: linux mounts: path /volume1/xxx is mounted on /volume1 but it is not a shared mount.", or "umount: can't unmount /mnt/mediaefs: Invalid argument" in Synology NAS(群晖) DSM operating system because of the :shared
tag. Maybe you should try the command sudo mount --make-shared /volume1
before runing the docker container, remember to change /volume1 to match your real setup.
This project base on mumiehub/rclone-mount