feat: 更新文档并添加 OneDrive 支持

- 在 overview.md 中添加 OneDrive 到存储后端对比
- 更新导航栏和 plume.config 以包含 OneDrive 链接
- 创建详细的 OneDrive 配置指南
- 从 GitHub 和 S3 文档中删除冗余章节
- 将 .env 和缓存目录添加到 .gitignore
This commit is contained in:
2025-11-15 19:37:35 +08:00
parent 641a729592
commit 22b2339d3c
8 changed files with 415 additions and 723 deletions

337
docs/storage/onedrive.md Normal file
View File

@@ -0,0 +1,337 @@
---
title: OneDrive
createTime: 2025/11/15 00:00:00
permalink: /storage/onedrive
---
使用 Microsoft OneDrive 作为存储后端的详细配置。
## 概述
OneDrive 是微软提供的云存储服务,与 Cloud Index 完美集成:
- 💼 企业级可靠性
- 🔄 自动同步和备份
- 🌐 全球访问
- 🔐 强大的权限管理
- 📊 丰富的文件管理功能
- 🖼️ 图片缩略图和预览
## 为什么选择 OneDrive
### 优势
1. **免费存储空间** - 个人用户 5GB 免费Microsoft 365 订阅用户 1TB+
2. **自动同步** - 本地文件自动同步到云端
3. **Office 集成** - 与 Office 套件完美集成,在线编辑
4. **版本历史** - 自动保存文件版本,轻松恢复
5. **跨平台支持** - Windows、Mac、iOS、Android 全平台支持
6. **企业级安全** - 支持企业账户,强大的安全控制
### 限制
- 免费用户存储空间有限5GB
- 需要 Microsoft 账户
- 文件大小限制(个人版单文件最大 250GB
### 推荐用途
- 📄 个人文档和笔记
- 🖼️ 照片和图片库
- 🎥 视频文件
- 📁 项目文件管理
- 👥 团队协作文件
- 🔄 需要跨设备同步的文件
## 账户设置
### 1. 创建 Microsoft 账户
如果还没有 Microsoft 账户,访问 [Microsoft](https://signup.live.com) 创建一个免费账户。
### 2. 注册 Azure 应用
要使用 OneDrive API需要在 Microsoft EntraAzure AD中注册应用
1. 访问 [Azure Portal](https://portal.azure.com)
2. 搜索 "Microsoft Entra ID"(或 "Azure Active Directory"
3. 左侧菜单选择 "应用注册"
4. 点击 "新注册"
5. 填写应用信息:
- **名称**:例如 `Cloud Index`
- **支持的账户类型**:选择 "任何组织目录中的账户和个人 Microsoft 账户"
- **重定向 URI**:选择 "Web",输入 `http://localhost:5000/callback`
6. 点击 "注册"
### 3. 配置应用权限
注册完成后,配置 API 权限:
1. 进入应用详情页
2. 左侧菜单选择 "API 权限"
3. 点击 "添加权限"
4. 选择 "Microsoft Graph"
5. 选择 "委托的权限"
6. 搜索并添加以下权限:
-**Files.ReadWrite.All** - 读写所有文件(必需)
-**offline_access** - 获取刷新令牌(必需)
- ❌ openid, profile - 可选,用于获取用户信息
7. 点击 "添加权限"
8. 点击 "代表 XXX 授予管理员同意"(如果是管理员)
### 4. 创建客户端密钥
1. 左侧菜单选择 "证书和密码"
2. 点击 "新客户端密码"
3. 输入描述(例如 `Cloud Index Secret`
4. 选择过期时间(推荐 "24 个月"
5. 点击 "添加"
6. **立即复制密钥值**(只显示一次)
保存以下信息:
```env
应用程序(客户端) ID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
客户端密钥值 = your_client_secret_value
```
⚠️ **重要**: 不要分享你的客户端密钥!
## 获取刷新令牌
### 1. 构造授权 URL
使用以下模板构造授权 URL替换 `YOUR_CLIENT_ID`
```
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=http://localhost:5000/callback&scope=Files.ReadWrite.All offline_access
```
### 2. 获取授权码
1. 在浏览器中打开上述 URL
2. 使用 Microsoft 账户登录
3. 同意应用权限
4. 浏览器会跳转到 `http://localhost:5000/callback?code=xxx`
5. 复制 URL 中的 `code` 参数值
### 3. 交换刷新令牌
使用授权码交换刷新令牌。可以使用以下 PowerShell 命令:
```powershell
$body = @{
client_id = 'YOUR_CLIENT_ID'
client_secret = 'YOUR_CLIENT_SECRET'
code = 'YOUR_AUTHORIZATION_CODE'
redirect_uri = 'http://localhost:5000/callback'
grant_type = 'authorization_code'
}
$response = Invoke-RestMethod -Method Post -Uri 'https://login.microsoftonline.com/common/oauth2/v2.0/token' -Body $body
$response.refresh_token
```
或使用 Python
```python
import requests
data = {
'client_id': 'YOUR_CLIENT_ID',
'client_secret': 'YOUR_CLIENT_SECRET',
'code': 'YOUR_AUTHORIZATION_CODE',
'redirect_uri': 'http://localhost:5000/callback',
'grant_type': 'authorization_code'
}
response = requests.post(
'https://login.microsoftonline.com/common/oauth2/v2.0/token',
data=data
)
print(response.json()['refresh_token'])
```
保存返回的 `refresh_token`
## 配置环境变量
编辑 `.env` 文件:
```env
# 存储类型
STORAGE_TYPE=onedrive
# OneDrive 配置
ONEDRIVE_CLIENT_ID=your_client_id
ONEDRIVE_CLIENT_SECRET=your_client_secret
ONEDRIVE_REFRESH_TOKEN=your_refresh_token
# 可选:指定文件夹
# ONEDRIVE_FOLDER_ID=folder_item_id # 留空使用根目录
# 可选:重定向 URI如果与授权时不同
# ONEDRIVE_REDIRECT_URI=http://localhost:5000/callback
# 可选:自定义权限范围
# ONEDRIVE_SCOPES="Files.ReadWrite.All offline_access"
```
**配置说明:**
- `ONEDRIVE_CLIENT_ID`: Azure 应用的客户端 ID必需
- `ONEDRIVE_CLIENT_SECRET`: Azure 应用的客户端密钥(必需)
- `ONEDRIVE_REFRESH_TOKEN`: OAuth 刷新令牌(必需)
- `ONEDRIVE_FOLDER_ID`: 指定文件夹作为根目录(可选)
- `ONEDRIVE_REDIRECT_URI`: 重定向 URI可选
- `ONEDRIVE_SCOPES`: 自定义权限范围(可选)
## 环境变量详细说明
| 变量 | 必需 | 默认值 | 说明 |
|------|------|--------|------|
| `STORAGE_TYPE` | ✅ | - | 必须设置为 `onedrive` |
| `ONEDRIVE_CLIENT_ID` | ✅ | - | Azure 应用的客户端 ID |
| `ONEDRIVE_CLIENT_SECRET` | ✅ | - | Azure 应用的客户端密钥 |
| `ONEDRIVE_REFRESH_TOKEN` | ✅ | - | OAuth 刷新令牌 |
| `ONEDRIVE_FOLDER_ID` | ❌ | `root` | 指定文件夹作为根目录 |
| `ONEDRIVE_REDIRECT_URI` | ❌ | - | 重定向 URI应与授权时一致 |
| `ONEDRIVE_SCOPES` | ❌ | - | 自定义权限范围 |
## 高级配置
### 使用特定文件夹作为根目录
如果要将 OneDrive 中的某个文件夹作为 Cloud Index 的根目录:
1. 在 OneDrive 中找到目标文件夹
2. 使用 Microsoft Graph Explorer 获取文件夹 ID
- 访问 [Graph Explorer](https://developer.microsoft.com/en-us/graph/graph-explorer)
- 登录并授权
- 执行 GET 请求:`https://graph.microsoft.com/v1.0/me/drive/root:/your/folder/path`
- 从响应中复制 `id` 字段
3.`.env` 中设置:
```env
3. 在 `.env` 中设置:
```env
ONEDRIVE_FOLDER_ID=01BYE5RZ6QN3ZWBTUFOFD3GSPGOHDJD36K
```
### 公共客户端配置
如果应用注册为"公共客户端"(桌面/移动应用):
- 可以省略 `ONEDRIVE_CLIENT_SECRET`
- 但推荐使用机密客户端以提高安全性
### 企业账户配置
使用企业 OneDriveOneDrive for Business
1. 在 Azure AD 中注册应用
2. 配置相同的权限
3. 使用企业账户登录授权
4. 其他配置步骤相同
## 成本估算
### 个人账户
- **免费存储**: 5GB
- **API 调用**: 无限制(有速率限制)
- **流量**: 无限制
- **总成本**: **免费**
### Microsoft 365 个人版
- **月费**: ¥398/年(约 ¥33/月)
- **存储空间**: 1TB
- **额外功能**: Office 套件、高级安全功能
- **适用场景**: 个人用户、小团队
### Microsoft 365 商业版
- **月费**: ¥75-150/用户/月(根据套餐)
- **存储空间**: 1TB/用户起
- **额外功能**: 企业级管理、合规性工具
- **适用场景**: 中小企业、大型团队
## 与其他存储对比
| 特性 | OneDrive | R2 | S3 | GitHub |
|-----|----------|-----|-----|---------|
| **价格** | 💰 付费/限时免费 | 💚 低成本 | 💛 按需计费 | 💚 免费 |
| **存储空间** | 5GB-1TB+ | 无限 | 无限 | 1GB 限制 |
| **Office 集成** | ✅ 完美 | ❌ 无 | ❌ 无 | ❌ 无 |
| **版本历史** | ✅ 自动 | ❌ 无 | ❌ 无 | ✅ Git |
| **全球 CDN** | ✅ 有 | ✅ 有 | ✅ 有 | ⚠️ 可选 |
| **易用性** | ✅ 简单 | ✅ 简单 | ⚠️ 中等 | ✅ 简单 |
| **适用场景** | 个人/企业 | 个人/小团队 | 企业 | 开源/文档 |
## 迁移指南
### 从其他存储迁移到 OneDrive
1. **备份原有数据**
2. **配置 OneDrive** - 按照本指南完成配置
3. **迁移数据** - 使用批量上传工具
4. **验证数据** - 确保所有文件正确迁移
5. **更新配置** - 修改 Cloud Index 配置
6. **测试功能** - 验证所有功能正常
### 从 OneDrive 迁移到其他存储
1. **选择目标存储** - 确定迁移目标R2/S3/GitHub
2. **导出数据** - 批量下载所有文件
3. **配置新存储** - 完成目标存储配置
4. **上传数据** - 使用批量上传工具
5. **更新配置** - 修改环境变量
6. **验证迁移** - 确保数据完整
## 参考资源
### 官方文档
- [Microsoft Graph API](https://docs.microsoft.com/en-us/graph/api/overview)
- [OneDrive API 参考](https://docs.microsoft.com/en-us/graph/api/resources/onedrive)
- [OAuth 2.0 授权](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow)
- [Azure AD 应用注册](https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app)
### 工具和资源
- [Graph Explorer](https://developer.microsoft.com/en-us/graph/graph-explorer) - 测试 API
- [Azure Portal](https://portal.azure.com) - 管理应用
- [OneDrive 开发者中心](https://developer.microsoft.com/en-us/onedrive)
### 社区资源
- [Cloud Index GitHub](https://github.com/RhenCloud/Cloud-Index)
- [OneDrive API Stack Overflow](https://stackoverflow.com/questions/tagged/onedrive)
- [Microsoft Graph 社区](https://techcommunity.microsoft.com/t5/microsoft-graph/ct-p/MicrosoftGraph)
## 相关文档
- [GitHub 存储配置](/storage/github)
- [Cloudflare R2 配置](/storage/r2)
- [Amazon S3 配置](/storage/s3)
- [存储概述](/storage/overview)
- [快速开始](/guide/quickstart)
- [环境变量配置](/guide/configuration/environment)
## 获取帮助
遇到问题?
1. 查看 [常见问题](#常见问题) 章节
2. 访问 [GitHub Issues](https://github.com/RhenCloud/Cloud-Index/issues)
3. 查阅 [官方文档](https://docs.microsoft.com/en-us/graph/)
4. 加入社区讨论
---
**更新日期**: 2025-11-15
**适用版本**: Cloud Index 主分支