手把手教你在飞牛OS (fnOS) 上通过 Docker 部署 OneDrive 客户端,实现重要数据的跨云端自动化离线备份与双向同步。
前言
飞牛OS (fnOS) 系统内置了极佳的网盘备份应用,原生支持百度网盘与阿里云盘等国内主流云存储服务。
然而出于数据安全隔离与合规考虑,部分重要文件或私人资料并不适合直接保存在国内网盘中。

为了构建更加稳固的多重备份体系(满足 3-2-1 备份原则),将文件异地容灾备份至微软 OneDrive 离线云端是一个极佳的解决方案。本文将手把手带你通过 Docker 容器化部署开源 OneDrive 客户端,实现 NAS 数据的自动同步。
准备工作与账号注册
在开始部署之前,你需要准备好以下基础设施:
- 微软账号:拥有一个可用的 Microsoft 账户。若尚未注册,可前往 Microsoft 微软官方账号注册页面 申请。
- 扩容建议:免费账号拥有 5GB 空间。如果需要备份较多数据,推荐通过订阅 Microsoft 365 获得 1TB 的 OneDrive 云存储容量。
开启 SSH 并登录飞牛OS命令行
因为首次运行 OneDrive 客户端时需要进行交互式 OAuth 授权,我们无法仅在 UI 界面完成配置,需要临时开启 SSH 登录后台命令行。
- 打开飞牛OS控制台,依次进入 系统设置 -> SSH,开启 SSH 服务功能。

- 在本地电脑的终端(Windows PowerShell / Terminal 或 macOS Terminal)中输入以下命令连接飞牛OS:
ssh 你的用户名@飞牛OS的IP地址
注意
登录密码即为飞牛OS管理员账户的密码。在终端中输入密码时画面不会显示任何字符或星号,这是正常安全机制,直接输入完毕后回车即可。
- 当出现提示符且显示登录成功信息时,表示已成功连入 NAS 后台。

切换 Root 权限与配置目录准备
为了确保 Docker 容器对挂载目录拥有完整的读写权限,我们需要切换至 root 账户并创建配置文件存储目录。
- 执行以下命令切换为 root 用户:
sudo su再次输入管理员密码,当命令行提示符前缀由 $ 变为 # 时,说明已切换成功。

重要
Root 权限拥有操作系统的最高控制权,请严格按照教程命令执行,避免误删系统关键文件。
- 确认你的存储池路径。飞牛OS的标准存储路径格式一般为
/vol1/1000/你的用户名/。 你也可以在飞牛OS网页端进入 文件管理 -> 我的文件 -> 右键目标文件夹 -> 详细信息 -> 点击 复制原始路径 来准确获取。

- 创建用于持久化保存 OneDrive 配置信息的文件夹:
mkdir -p /vol1/1000/你的用户名/docker/onedrive/conf/(请根据实际用户名与存储池编号替换路径中的变量)
首次交互部署与 OneDrive 账号授权
第一次运行容器时需要开启 -it 交互终端模式以完成微软账号授权。
- 在终端中运行以下 Docker 部署命令:
docker run -it --name onedrive \
-v /vol1/1000/你的用户名/docker/onedrive/conf/:/onedrive/conf \
-v 需要被同步的NAS本地路径:/onedrive/data \
-e "ONEDRIVE_UID=1000" \
-e "ONEDRIVE_GID=1000" \
driveone/onedrive:latest例如:
docker run -it --name onedrive \
-v /vol1/1000/emz/docker/onedrive/conf:/onedrive/conf \
-v /vol1/1000/emz/同步/onedrive:/onedrive/data \
-e "ONEDRIVE_UID=1000" \
-e "ONEDRIVE_GID=1000" \
driveone/onedrive:latest- 容器启动后,终端内会输出一段微软授权认证 URL 链接。

- 复制该 URL 到浏览器中打开,登录你的微软账号并同意授权。

授权成功后,浏览器会跳转至一个空白页面(或显示成功提示)。复制当前浏览器地址栏中的完整 URL 网址,粘贴回 SSH 终端提示处并按下回车。
验证通过后,OneDrive 客户端将自动开始同步文件。

- 此时在挂载的
conf目录下会生成一个refresh_token文件,该文件保存了你的 OAuth 登录凭证。

小心
refresh_token 包含云盘访问权限,请妥善保管该目录。若后续修改了微软账号密码,需删掉此文件并重新执行交互授权流程。
配置后台静默与开机自动运行
交互式授权完成后,直接按 Ctrl + C 退出容器,此时容器会停止运行。我们需要将其重建为后台静默运行模式。
- 删除临时交互容器:
docker rm -f onedrive- 使用
-d参数与--restart always重新启动持久化容器:
docker run -d --name onedrive \
--restart always \
-v /vol1/1000/你的用户名/docker/onedrive/conf/:/onedrive/conf \
-v 需要被同步的NAS本地路径:/onedrive/data \
-e "ONEDRIVE_UID=1000" \
-e "ONEDRIVE_GID=1000" \
driveone/onedrive:latest- 此时打开飞牛OS网页端的 Docker 管理器,可以看到
onedrive容器已在后台稳定运行。

- 在容器日志选项卡中,可实时监控文件同步进度与日志动态。

配置文件与同步策略优化
在挂载的配置目录 /vol1/1000/你的用户名/docker/onedrive/conf/ 中,可以创建或修改 config 配置文件,精细化控制同步行为。
推荐配置示例:
# 容器内挂载的同步根目录
sync_dir = "/onedrive/data"
# 双向忽略规则(正则表达式,符合的文件/文件夹不会上传也不会下载)
skip_dir = "~*|.~*|*.tmp"
# 忽略所有隐藏文件与隐藏文件夹
skip_dotfiles = "true"更多高级参数配置(如单向备份、仅下载、带宽限制等),可查阅 OneDrive Client 官方配置说明文档。
附:Docker 部署常用参数解析
| 参数选项 | 说明解析 |
|---|---|
-it | 开启交互式模式与伪终端(仅首次授权登录时使用) |
-d | 容器在后台静默运行(长期运行推荐) |
--name onedrive | 指定容器名称为 onedrive |
-v <宿主机路径>:<容器路径> | 挂载文件目录,将飞牛OS本地磁盘映射入容器内部 |
-e "ONEDRIVE_UID=1000" | 设置容器内运行用户的 UID,避免产生权限错乱 |
--restart always | 设置容器开机自启及异常崩溃后自动重启 |