应用名称:abraunegg/onedrive (第三方开源 Linux 客户端)

运行环境:Debian / Docker

核心逻辑:配置与数据分离,先交互获取授权,再转入后台静默运行。

1. 核心路径规划

部署前,需提前规划并创建好宿主机上的对应目录:

  • 配置文件目录/usr/local/etc/docker/onedrive (用于存放账号授权文件,千万不能丢失或随意删除)

  • 数据同步目录/mnt/Public/NetDisk/onedrive (用于存放从 OneDrive 同步下来的真实文件,建议挂载在大容量硬盘上)


2. 获取微软账号授权 (前台交互模式)

注意:由于 OneDrive 容器在没有授权文件时会自动退出,如果直接使用后台自启模式,会导致容器陷入“无限崩溃重启”的死循环。因此,必须先用临时容器跑一次前台模式。

在 SSH 终端执行以下命令:

docker run -it --rm \
  
-e ONEDRIVE_UID=1000 \
  
-e ONEDRIVE_GID=1000 \
  
-v /usr/local/etc/docker/onedrive:/onedrive/conf \
  
-v /mnt/Public/NetDisk/onedrive:/onedrive/data \
 
/onedrive:latest


运行后,终端会暂停,并打印出一串以 https://login.microsoftonline.com/... 开头的超长授权链接。


3. 极速抢夺授权代码 (核心难点)

微软的 OAuth 验证页面在浏览器授权完成后,会尝试调用本地协议并瞬间跳转,容易导致白屏或报错。必须快速抓取正确的 URL。以下要在chrome浏览器里打开。

  1. 无痕模式打开:复制终端里的超长链接,在电脑浏览器打开一个无痕/隐私窗口(避免已有账号干扰),粘贴并回车。

  2. 正常登录授权:输入微软账号和密码,点击同意授权。

  3. 抓取跳转链接:点击同意后,网页会迅速跳转并可能变成白屏。在这一瞬间,立刻点击浏览器地址栏,全选并复制里面的所有内容!

    • (正确的链接格式必定是以 https://login.microsoftonline.com/common/oauth2/nativeclient?code= 开头的。)

  4. 回填终端验证:回到 SSH 终端,将刚才复制的完整链接粘贴到提示符 Paste redirect URI here: 的后面,按下回车。

  5. 强行中断:当屏幕输出 Successfully reached... 并开始读取或同步文件时,说明授权文件(凭证)已成功写入本地配置目录。此时立刻按下 Ctrl + C 强行结束当前进程(临时容器会自动销毁,凭证已安全保留)。


4. 正式启动后台守护进程

授权完成后,转用真正的后台守护模式,让 OneDrive 在后台静默运行并保持开机自启。

在终端执行最终的完美部署命令:

docker run -d \
  
--name onedrive \
  
--restart unless-stopped \
  
-e ONEDRIVE_UID=1000 \
  
-e ONEDRIVE_GID=1000 \
  
-v /usr/local/etc/docker/onedrive:/onedrive/conf \
  
-v /mnt/Public/NetDisk/onedrive:/onedrive/data \
 
/onedrive:latest


5. 常用运维与监控命令

  • 查看实时同步日志(看下载进度和速度):

  • docker logs -f onedrive
  • ( Ctrl + C 退出日志查看,不影响后台同步)

  • 重启 OneDrive 服务(修改配置后生效):

  • docker restart onedrive
  • 更新 OneDrive 镜像到最新版

  • docker pull driveone/onedrive:latest
  • docker stop onedrive
  • docker rm onedrive
  • # 然后重新运行第 4 步的正式启动命令即可(配置和数据均不会丢失)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注