abraunegg-onedrive/README.docker.md
Jack Thomasson 460596dd36 Add smaller footprint Docker container builds using Alpine and Debian Stretch (#369)
* Add additional Docker container builds utilising a smaller OS footprint
* Resolve compiling with LDC on Alpine as musl lacks some standard interfaces
2019-02-17 06:13:19 +11:00

3.8 KiB

onedrive docker image

Thats right folks onedrive is now dockerized ;)

This container offers simple monitoring-mode service for 'Free Client for OneDrive on Linux'.

Usage instructions

0. Install docker under your own platform's instructions

1. Pull the image

docker pull driveone/onedrive

NOTE: SELinux context needs to be configured or disabled for Docker, to be able to write to OneDrive host directory.

2. Prepare required stuff

Onedrive needs two volumes. One of them is the config volume.

If you dont't need an extra config file, You can create a docker volume:

docker volume create onedrive_conf

This will create a docker volume labeled 'onedrive_conf', which we will use it later.

The second one is your data folder that needs to sync with. Keep in mind that:

  • The owner of the folder must not be root

  • The owner have permission to its parent directory
    (because onedrive will try to setup a monitor for the sync folder).

3. First run

Onedrive also needs to be authorized with your account.
This is done by running docker in interactive mode.

make sure to change onedriveDir to your own.

onedriveDir="${HOME}/OneDrive"
docker run -it --restart unless-stopped --name onedrive -v onedrive_conf:/onedrive/conf -v "${onedriveDir}:/onedrive/data" driveone/onedrive
  • You will be asked to open a specific link using your web browser
  • login into your Microsoft Account and give the application the permission
  • After giving the permission, you will be redirected to a blank page.
  • Copy the URI of the blank page into the application.

If your onedrive is working as expected, you can detach from the container with Ctrl+p, Ctrl+q.

4. Status, stop, and restart

Check if monitor service is running

docker ps -f name=onedrive

Show monitor run logs

docker logs onedrive

Stop running monitor

docker stop onedrive

Resume monitor

docker start onedrive

Unregister onedrive monitor

docker rm -f onedrive

5. Edit the config

Onedrive should run in default configuration, but however you can change your configuration.

First download the default config from here
Then put it into your onedrive_conf volume path, which can be found with:

docker volume inspect onedrive_conf

Or you can map your own config folder to config volume (copy stuffs from docker volume first)

The detailed document for the config can be found here: additional-configuration

Run or update with one script

If you are experienced with docker and onedrive, you can use the following script:

# Update onedriveDir with correct existing OneDrive directory path
onedriveDir="${HOME}/OneDrive"

firstRun='-d'
docker pull driveone/onedrive
docker inspect onedrive_conf > /dev/null || { docker volume create onedrive_conf; firstRun='-it'; }
docker inspect onedrive > /dev/null && docker rm -f onedrive
docker run $firstRun --restart unless-stopped --name onedrive -v onedrive_conf:/onedrive/conf -v "${onedriveDir}:/onedrive/data" driveone/onedrive

Build instructions

You can also build your own image instead of pulling the one from dockerhub:

git clone https://github.com/abraunegg/onedrive
cd onedrive
docker build . -t local-onedrive

There are alternate, smaller images available by building Dockerfile-stretch or Dockerfile-alpine. These multi-stage builder pattern Dockerfiles require Docker version at least 17.05.

docker build . -t local-ondrive-stretch -f Dockerfile-stretch

or

docker build . -t local-ondrive-alpine -f Dockerfile-alpine