- ref: https://forum.rclone.org/t/run-docker-container-in-userspace/11734/7 - enable userspace operation - enable Docker userspace mount exposed to the host - add more Docker image usage documentation
5.6 KiB
title | description | date |
---|---|---|
Install | Rclone Installation | 2018-08-28 |
Install
Rclone is a Go program and comes as a single binary file.
Quickstart
- Download the relevant binary.
- Extract the
rclone
orrclone.exe
binary from the archive - Run
rclone config
to setup. See rclone config docs for more details.
See below for some expanded Linux / macOS instructions.
See the Usage section of the docs for how to use rclone, or
run rclone -h
.
Script installation
To install rclone on Linux/macOS/BSD systems, run:
curl https://rclone.org/install.sh | sudo bash
For beta installation, run:
curl https://rclone.org/install.sh | sudo bash -s beta
Note that this script checks the version of rclone installed first and won't re-download if not needed.
Linux installation from precompiled binary
Fetch and unpack
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64
Copy binary file
sudo cp rclone /usr/bin/
sudo chown root:root /usr/bin/rclone
sudo chmod 755 /usr/bin/rclone
Install manpage
sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb
Run rclone config
to setup. See rclone config docs for more details.
rclone config
macOS installation from precompiled binary
Download the latest version of rclone.
cd && curl -O https://downloads.rclone.org/rclone-current-osx-amd64.zip
Unzip the download and cd to the extracted folder.
unzip -a rclone-current-osx-amd64.zip && cd rclone-*-osx-amd64
Move rclone to your $PATH. You will be prompted for your password.
sudo mkdir -p /usr/local/bin
sudo mv rclone /usr/local/bin/
(the mkdir
command is safe to run, even if the directory already exists).
Remove the leftover files.
cd .. && rm -rf rclone-*-osx-amd64 rclone-current-osx-amd64.zip
Run rclone config
to setup. See rclone config docs for more details.
rclone config
Install with docker
The rclone maintains a docker image for rclone. These images are autobuilt by docker hub from the rclone source based on a minimal Alpine linux image.
The :latest
tag will always point to the latest stable release. You
can use the :beta
tag to get the latest build from master. You can
also use version tags, eg :1.49.1
, :1.49
or :1
.
$ docker pull rclone/rclone:latest
latest: Pulling from rclone/rclone
Digest: sha256:0e0ced72671989bb837fea8e88578b3fc48371aa45d209663683e24cfdaa0e11
...
$ docker run --rm rclone/rclone:latest version
rclone v1.49.1
- os/arch: linux/amd64
- go version: go1.12.9
There are a few command line options to consider when starting an rclone Docker container from the rclone image.
-
You need to mount the host rclone config dir at
/config
into the Docker container. Due to the way in which rclone updates tokens inside its config file, you need to mount a host config dir, not just a host config file. -
You need to mount a host data dir at
/data
into the Docker container. -
By default, the rclone binary inside a Docker container runs with UID=0 (root). As a result, all files created in a run will have UID=0. If your config and data files reside on the host with a non-root UID:GID, you need to pass these on the container start command line.
-
It is possible to use
rclone mount
inside a userspace Docker container, and expose the resulting fuse mount to the host. The exactdocker run
options to do that might vary slightly between hosts. See, e.g. the discussion in this thread.You also need to mount the host
/etc/passwd
and/etc/group
for fuse to work inside the container.
Here are some commands tested on an Ubuntu 18.04.3 host:
# config on host at ~/.config/rclone/rclone.conf
# data on host at ~/data
# make sure the config is ok by listing the remotes
docker run --rm \
--volume ~/.config/rclone:/config/rclone \
--volume ~/data:/data:shared \
--user $(id -u):$(id -g) \
rclone/rclone \
listremotes
# perform mount inside Docker container, expose result to host
mkdir -p ~/data/mount
docker run --rm \
--volume ~/.config/rclone:/config/rclone \
--volume ~/data:/data:shared \
--user $(id -u):$(id -g) \
--volume /etc/passwd:/etc/passwd:ro --volume /etc/group:/etc/group:ro \
--device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined \
rclone/rclone \
mount dropbox:Photos /data/mount &
ls ~/data/mount
kill %1
Install from source
Make sure you have at least Go 1.7 installed. Download go if necessary. The latest release is recommended. Then
git clone https://github.com/rclone/rclone.git
cd rclone
go build
./rclone version
You can also build and install rclone in the
GOPATH (which defaults to
~/go
) with:
go get -u -v github.com/rclone/rclone
and this will build the binary in $GOPATH/bin
(~/go/bin/rclone
by
default) after downloading the source to
$GOPATH/src/github.com/rclone/rclone
(~/go/src/github.com/rclone/rclone
by default).
Installation with Ansible
This can be done with Stefan Weichinger's ansible role.
Instructions
git clone https://github.com/stefangweichinger/ansible-rclone.git
into your local roles-directory- add the role to the hosts you want rclone installed to:
- hosts: rclone-hosts
roles:
- rclone