使用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,让它看起来更加没有违合感