Debian 服务器 Docker 部署 OneDrive 完美指南
应用名称: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浏览器里打开。
-
无痕模式打开:复制终端里的超长链接,在电脑浏览器打开一个无痕/隐私窗口(避免已有账号干扰),粘贴并回车。
-
正常登录授权:输入微软账号和密码,点击同意授权。
-
抓取跳转链接:点击同意后,网页会迅速跳转并可能变成白屏。在这一瞬间,立刻点击浏览器地址栏,全选并复制里面的所有内容!
-
(正确的链接格式必定是以
https://login.microsoftonline.com/common/oauth2/nativeclient?code=开头的。)
-
-
回填终端验证:回到 SSH 终端,将刚才复制的完整链接粘贴到提示符
Paste redirect URI here:的后面,按下回车。 -
强行中断:当屏幕输出
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步的正式启动命令即可(配置和数据均不会丢失)