mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-04 20:46:37 +08:00
docs: add cloud storage diagnostics and status report
- Add PowerShell diagnostic script for cloud storage issues - Document all cloud storage features and capabilities - Provide troubleshooting guide for common problems - Include configuration examples and best practices
This commit is contained in:
+169
@@ -0,0 +1,169 @@
|
|||||||
|
# MediaStationGo 云盘功能状态报告
|
||||||
|
|
||||||
|
## 已实现的功能
|
||||||
|
|
||||||
|
### 1. 云盘存储支持
|
||||||
|
- ✅ 支持的云盘类型:
|
||||||
|
- Quark (夸克网盘)
|
||||||
|
- 115 (115网盘)
|
||||||
|
- CloudDrive2 (桥接网盘)
|
||||||
|
- OpenList/AList (兼容网盘)
|
||||||
|
|
||||||
|
### 2. 播放机制
|
||||||
|
- ✅ HTTP 302 重定向播放(直连云盘CDN)
|
||||||
|
- ✅ STRM 文件支持
|
||||||
|
- ✅ Emby 协议兼容(标记 IsRemote=true)
|
||||||
|
- ✅ Token 认证传递
|
||||||
|
|
||||||
|
### 3. CORS 支持
|
||||||
|
- ✅ 支持的 Header:
|
||||||
|
- Authorization
|
||||||
|
- Content-Type
|
||||||
|
- X-Requested-With
|
||||||
|
- X-Emby-Token
|
||||||
|
- X-MediaBrowser-Token
|
||||||
|
- X-Emby-Authorization
|
||||||
|
|
||||||
|
### 4. 图片代理
|
||||||
|
- ✅ 云盘图片缓存
|
||||||
|
- ✅ Emby API 图片端点:/Items/{id}/Images/Primary
|
||||||
|
- ✅ 直接图片输出(避免 token 401)
|
||||||
|
|
||||||
|
### 5. 启动健康检查
|
||||||
|
- ✅ 云盘配置验证
|
||||||
|
- ✅ Ping 测试连通性
|
||||||
|
- ✅ 自动扫描云盘媒体库
|
||||||
|
|
||||||
|
### 6. 存储管理
|
||||||
|
- ✅ 删除云盘时清理媒体库
|
||||||
|
- ✅ 停止相关扫描任务
|
||||||
|
|
||||||
|
## 可能的问题原因
|
||||||
|
|
||||||
|
### 第三方播放器无法播放
|
||||||
|
|
||||||
|
**可能原因:**
|
||||||
|
1. **云盘未配置** - 检查是否添加了云盘存储配置
|
||||||
|
2. **Cookie 过期** - 云盘 Cookie 需要定期更新
|
||||||
|
3. **CORS 配置** - 生产环境需要配置 cors_origins
|
||||||
|
4. **网络问题** - 云盘 CDN 网络不可达
|
||||||
|
|
||||||
|
**诊断步骤:**
|
||||||
|
\\\ash
|
||||||
|
# 1. 运行诊断脚本
|
||||||
|
./diagnose-cloud.ps1
|
||||||
|
|
||||||
|
# 2. 检查日志中的错误
|
||||||
|
docker logs mediastation-go 2>&1 | grep -i "cloud storage"
|
||||||
|
|
||||||
|
# 3. 检查 CORS 配置
|
||||||
|
# 编辑 config.toml,添加:
|
||||||
|
# cors_origins = ["*"] # 或具体的播放器域名
|
||||||
|
\\\
|
||||||
|
|
||||||
|
### 云盘海报不显示
|
||||||
|
|
||||||
|
**可能原因:**
|
||||||
|
1. **图片路径格式错误** - 应该是 /api/cloud/play/{type}?ref={path}
|
||||||
|
2. **图片未缓存** - 首次加载可能较慢
|
||||||
|
3. **云盘权限问题** - Cookie 权限不足
|
||||||
|
|
||||||
|
**检查方法:**
|
||||||
|
\\\ash
|
||||||
|
# 查看图片代理日志
|
||||||
|
docker logs mediastation-go 2>&1 | grep -i "image"
|
||||||
|
|
||||||
|
# 测试图片 URL(需要替换 token)
|
||||||
|
curl -H "X-Emby-Token: YOUR_TOKEN" http://localhost:8080/Items/MEDIA_ID/Images/Primary
|
||||||
|
\\\
|
||||||
|
|
||||||
|
### 媒体库重复扫描
|
||||||
|
|
||||||
|
**说明:**
|
||||||
|
- 每个用户首次访问会触发扫描
|
||||||
|
- 云盘媒体库在启动时自动扫描
|
||||||
|
- 扫描结果对所有用户共享
|
||||||
|
|
||||||
|
**优化建议:**
|
||||||
|
- 使用调度任务定期扫描
|
||||||
|
- 避免手动触发多次扫描
|
||||||
|
|
||||||
|
## 配置示例
|
||||||
|
|
||||||
|
### 1. 添加云盘存储
|
||||||
|
|
||||||
|
通过 Web UI 的"外部存储"页面添加:
|
||||||
|
- 选择云盘类型(Quark/115/CloudDrive2)
|
||||||
|
- 输入 Cookie(从浏览器开发者工具获取)
|
||||||
|
- 测试连接
|
||||||
|
- 启用存储
|
||||||
|
|
||||||
|
### 2. 创建云盘媒体库
|
||||||
|
|
||||||
|
媒体库路径格式:
|
||||||
|
\\\
|
||||||
|
cloud://{provider}:{scan_dir}:{display_dir}
|
||||||
|
\\\
|
||||||
|
|
||||||
|
示例:
|
||||||
|
\\\
|
||||||
|
cloud://quark:/电影:/Movies
|
||||||
|
cloud://cloud115:/剧集:/TV Shows
|
||||||
|
\\\
|
||||||
|
|
||||||
|
### 3. CORS 配置(针对第三方播放器)
|
||||||
|
|
||||||
|
编辑 config.toml:
|
||||||
|
\\\ oml
|
||||||
|
[app]
|
||||||
|
cors_origins = [
|
||||||
|
"*", # 允许所有来源(开发环境)
|
||||||
|
# 或指定具体域名(生产环境):
|
||||||
|
# "https://app.emby.media",
|
||||||
|
# "app://infuse"
|
||||||
|
]
|
||||||
|
\\\
|
||||||
|
|
||||||
|
## 最新改进(本次提交)
|
||||||
|
|
||||||
|
1. **存储删除功能** - 删除云盘时自动清理关联的媒体库和媒体项
|
||||||
|
2. **健康检查** - 启动时验证所有云盘配置,及早发现问题
|
||||||
|
3. **扫描验证** - 扫描前检查存储配置是否存在,避免无效扫描
|
||||||
|
|
||||||
|
## 下一步建议
|
||||||
|
|
||||||
|
### 对于用户:
|
||||||
|
1. 运行诊断脚本:./diagnose-cloud.ps1
|
||||||
|
2. 检查是否配置了云盘存储
|
||||||
|
3. 验证 Cookie 是否有效
|
||||||
|
4. 配置 CORS(如果使用第三方播放器)
|
||||||
|
|
||||||
|
### 对于开发:
|
||||||
|
1. ✅ 添加更详细的错误日志
|
||||||
|
2. ✅ 启动时健康检查
|
||||||
|
3. 🔄 优化扫描缓存机制
|
||||||
|
4. 🔄 添加 Cookie 自动刷新
|
||||||
|
5. 🔄 改进错误提示
|
||||||
|
|
||||||
|
## 参考项目对比
|
||||||
|
|
||||||
|
### MoviePilot 云盘方案
|
||||||
|
- 使用 CloudDrive/Alist 作为统一桥接层
|
||||||
|
- STRM 文件 + 302 重定向
|
||||||
|
- 支持本地缓存
|
||||||
|
|
||||||
|
### Nowen-Video 云盘方案
|
||||||
|
- 直接集成各云盘 API
|
||||||
|
- WebDAV 挂载
|
||||||
|
- 支持多种播放模式
|
||||||
|
|
||||||
|
### MediaStationGo 优势
|
||||||
|
- 原生多云盘支持(无需额外桥接工具)
|
||||||
|
- Emby API 完全兼容
|
||||||
|
- 轻量级架构
|
||||||
|
- 自动健康检查
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**更新时间:** 2026-06-11 12:55:56
|
||||||
|
**版本:** main@7ef4af6
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# MediaStationGo 云盘诊断脚本
|
||||||
|
# 用于检查云盘配置和媒体库状态
|
||||||
|
|
||||||
|
Write-Host "=== MediaStationGo 云盘诊断 ===" -ForegroundColor Cyan
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
# 1. 检查容器状态
|
||||||
|
Write-Host "[1] 检查容器状态..." -ForegroundColor Yellow
|
||||||
|
docker ps --filter name=mediastation-go --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
# 2. 检查最近的日志(云盘相关)
|
||||||
|
Write-Host "[2] 检查云盘初始化日志..." -ForegroundColor Yellow
|
||||||
|
docker logs --tail=500 mediastation-go 2>&1 | Select-String -Pattern "cloud|storage|boot" -CaseSensitive:False | Select-Object -Last 20
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
# 3. 检查CORS配置
|
||||||
|
Write-Host "[3] 检查CORS配置..." -ForegroundColor Yellow
|
||||||
|
docker exec mediastation-go cat /data/config.toml 2> | Select-String -Pattern "cors"
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
# 4. 测试API健康状态
|
||||||
|
Write-Host "[4] 测试API健康状态..." -ForegroundColor Yellow
|
||||||
|
try {
|
||||||
|
= Invoke-WebRequest -Uri "http://localhost:8080/api/health" -TimeoutSec 5 -UseBasicParsing
|
||||||
|
Write-Host "API状态: " -ForegroundColor Green
|
||||||
|
} catch {
|
||||||
|
Write-Host "API状态: 无法访问 - " -ForegroundColor Red
|
||||||
|
}
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
# 5. 检查媒体库配置
|
||||||
|
Write-Host "[5] 检查是否有云盘媒体库..." -ForegroundColor Yellow
|
||||||
|
docker logs --tail=1000 mediastation-go 2>&1 | Select-String -Pattern "cloud library|ParseCloudLibraryMount" | Select-Object -Last 10
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
Write-Host "=== 诊断完成 ===" -ForegroundColor Cyan
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "如果看到 'no enabled cloud storage configured',说明需要先配置云盘存储" -ForegroundColor Yellow
|
||||||
|
Write-Host "如果看到 'cloud storage ping failed',说明云盘配置有问题(Cookie过期或网络问题)" -ForegroundColor Yellow
|
||||||
|
Write-Host "如果看到 'cloud library scan completed',说明云盘扫描正常" -ForegroundColor Green
|
||||||
Reference in New Issue
Block a user