使用docker部署onedrive容器

好久不见,我终于更新了……
原本计划是要更新kubernetes相关文章的,但是:

🕊️了

今天来讲解onedrive的事

为什么要用docker部署onedrive?

众所周知我人是非常非常非常!!!讨厌Windows的,所以目前我已经全面转向使用Linux了。
虽然是已全面转向Windows,但Office365还续着费呢,并且由于分享站,以及移动端的需求,我也不打算停止续费。
既然如此,那必定是需要把Onedrive利用起来的。

由于微软“强大的”开发实力,并没有为linux推出官方的onedrive客户端,所以我们就需要自己动手部署第三方的了

准备工作

安装docker

这里可以直接使用脚本安装

curl -fsSL https://get.docker.com | bash -s docker

对于国内的小伙伴可以使用以下脚本

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

确定文件夹位置

这次我们使用的是来自abraunegg/onedrive的第三方客户端,同时使用docker部署,以避免可能遇到的各种各样奇奇怪怪的问题。

对于docker部署来说,我们主要用到两个文件夹:

容器路径 说明 主机路径推荐
/onedrive/conf 用于放置数据库以及TOKEN ~/docker/onedrive/conf
/onedrive/data onedrive的文件夹(默认为onedrive根目录) ~/OneDrive

以上是我储存数据的位置

创建文件夹

mkdir -p ~/docker/onedrive/conf
mkdir ~/OneDrive 

开始部署

注意:使用这个客户端双向同步的话将完全同步OneDrive下的所有文件,如果OneDrive中有巨量文件的话将占用大量本地磁盘空间!

首次运行

首次运行请参照以下格式运行:

docker run -it --name onedrive -v /home/${USER}/docker/onedrive/conf:/onedrive/conf \
    -v "/home/${USER}/OneDrive:/onedrive/data" \
    -e "ONEDRIVE_UID=${UID}" \
    -e "ONEDRIVE_GID=${GID}" \
    driveone/onedrive:latest

请将以上命令按照下方步骤填充好

确定用户文件夹绝对路径

使用以下命令可以确定用户文件夹路径

cd ~/
pwd

输出结果为用户文件夹路径,例如我的为: /home/xianyu

确定自己的用户ID以及组ID

请务必确定好自己的用户ID以及组ID,如果不使用正确的用户ID以及组ID将有极大可能无法正常访问使用文件夹下的文件!

id

这里我的UID和GID均为1000

填充命令并执行

docker run -it --name onedrive -v /home/xianyu/docker/onedrive/conf:/onedrive/conf \
    -v "/home/xianyu/OneDrive:/onedrive/data" \
    -e "ONEDRIVE_UID=1000" \
    -e "ONEDRIVE_GID=1000" \
    driveone/onedrive:latest

获取TOKEN

在执行完上方命令后,命令行会输出一个URL,复制到浏览器后打开,将会登录微软帐号。
按照指示操作完后页面会全白,此时不要担心,不是电脑网络不好,只需要将此时浏览器上的URL填入容器输出窗口并回车即可完成首次的设置。

删除首次运行使用的容器

查找容器ID

docker ps -a

将首次运行用的容器删除

docker rm <ID>

使用docker-compose运行

注意:使用docker-compose运行也必须经过上方首次运行的步骤,先确保获取到TOKEN并填入容器!

安装docker-compose

下载二进制文件

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

也可使用国内镜像

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

下载完成后赋予可执行权限

sudo chmod +x /usr/local/bin/docker-compose

编写docker-compose文件

我习惯将文件放在~/docker/onedrive文件夹下

cd ~/docker/onedrive
vim ~/docker/onedrive/docker-compose.yml

文件内容就是将首次运行时的docker命令变为配置文件的形式

version: "3"
services:
    onedrive:
        image: driveone/onedrive:latest
        restart: unless-stopped
        environment:
            - ONEDRIVE_UID=1000
            - ONEDRIVE_GID=1000
        volumes: 
            - /home/xianyu/docker/onedrive/conf:/onedrive/conf
            - /home/xianyu/OneDrive:/onedrive/data

部署

cd ~/docker/onedrive
docker-compose up -d

当修改了微软账户密码

在修改了微软账户密码后,容器就会无法使用TOKEN进行同步,此时需要重新部署容器,按照官方文档的操作方法,需要先停止并删除容器,再在启动时添加一条变量退出登录并清楚conf文件夹下内容。和我一样嫌麻烦的同学可以按照下方操作进行重新登录

停止容器

cd ~/docker/onedrive
docker-compose down

删除TOKEN文件

rm -rf /home/xianyu/docker/onedrive/conf/refresh_token

重复首次部署流程

接下去的操作与首次部署时完全一致,使用docker命令部署容器,并输入URL即可重新登录

使用体验

除了必须全量同步这一点上非常蛋疼外什么都好

你也可以像我一样将文件夹图标改成OneDrive的Logo,让它看起来更加没有违合感


使用docker部署onedrive容器
https://blog.xianyu.one/2022/08/27/onedrive-on-docker/
作者
咸鱼
发布于
2022年8月27日
许可协议