# 2026-02-24

## 决策
- 备份服务器(155.103.67.87)暂停同步到 Emby 主服(155.103.67.95)，因为即将迁移到 OVH KS2(145.239.143.92)
- OVH KS2 迁移方案：全部动画重新下载（OVH 10Gbps 比 rsync 快），不从旧服同步

## OVH KS2 迁移状态
- RAID5 reshape 已完成，4盘在线，11T 可用
- Docker: emby + qbittorrent + caddy + mysql + embyboss 全部运行
- DNS: media.088520.xyz / qb.088520.xyz → OVH (通过CDN代理)
- Caddy 反代修复: localhost→emby容器名 (502问题)
- Emby 配置从旧服 rsync 完成，12个用户全部迁移
- Bot @mangoemby_bot 迁移完成，旧服 embyboss+mysql 已停
- qB 49个种子，46个已完成，3个0%(啦咘啦哆S02/海底S10/海底S02 可能无种)
- 子代理批量搜索下载了大量动画（Bluey/佩奇/汪汪队/海底小纵队/安全警长等）
- 3个死种(0做种)已删除，换了替代资源：安全警长S02→1080p(26种), 海底S02→FROGWeb 1080p(27种)
- 海底小纵队S10 M-Team只有一个版本且0做种，可能需要从旧服rsync

## Gitea README 修复
- ss-rust: 安装链接从 raw.githubusercontent.com 改为 mjjtop.com/ss
- vps-snapshot: 安装链接改为 mjjtop.com/bk
- Gitea服务器(155.103.66.237) SSH key和密码都认证失败，用API更新的

## 软路由 OpenClaw 语音识别
- 161.129.35.235:22288 (Kwrt 24.10, N100 8GB) Docker 跑 OpenClaw
- 容器内 pip 装 whisper 失败(PyTorch 915MB 下载超时)
- 已给顶尖两个方案: Groq API(推荐) 或 清华源装本地whisper
- ffmpeg/python3/pip3 已装好，只差 whisper

## 当前动画库清单（155.103.67.95，共~304GB）
| 动画 | 集数 | 备注 |
|------|------|------|
| Bluey 布鲁伊 | 152集 | 2160p 中配 |
| Peppa Pig 小猪佩奇 | 236集 | 1080p |
| PAW Patrol 汪汪队 | 112集 | S01/S03-S05 1080p + S11 4K |
| Octonauts 海底小纵队 | 282集 | S01-S09 + 中国之旅S01-S02 + 特别篇 |
| Octonauts Above and Beyond | 48集 | |
| Sheriff Labrador 安全警长啦咘啦哆 | 156集 | S01-S03 4K |
| Sheriff Labrador vs Lynnia 啦咘啦哆大战羚羚羊 | 39集 | S01 4K + S02 1080p |
| The Creature Cases 动物神探队 | 59集 | S01-S07 1080p |
| Gigantosaurus 小恐龙大冒险 | 156集 | S01 1080p + S02-S03 4K |
| My Little Pony 小马宝莉 | 143集 | S02 HDR + S04 1080p |
| 疯狂动物城 | 电影 | 4K HDR DV |

## VPS 备份目标变更
- 旧备份机 155.103.67.87 弃用
- 新备份目标: OVH KS2 145.239.143.92:/data/backup/ (11TB RAID5)
- MEMORY.md 已更新
- 注意: OVH 自身备份不能存本机（同一分区），需要反向备份到其他机器
- OVH 只有一个根分区(/)挂载11TB，不像旧Emby服有独立数据盘(/data)
- vps-snapshot 在 OVH 上跑会把 /data/qbittorrent 也打包（旧服不会因为/data是独立挂载点）
- 需要给 vps-snapshot 加排除规则才能在 OVH 上用

## 小恐龙大冒险补下载
- 子代理漏掉了 Gigantosaurus，手动补上
- S01: FROGWeb 1080p 中配中字 21.85GB (id:1049344)
- S02: ZmWeb 4K 中配 10.09GB (id:954702)
- S03: ZmWeb 4K 中配 8.53GB (id:954706)

## Gitea 服务器 SSH
- 155.103.66.237 SSH key 和密码 fJ7#vP9s@tL2qX!d 都认证失败
- 只能通过 Gitea API (admin:Mango2026!) 操作

## 软路由 OpenClaw
- 161.129.35.235:22288 密码: fJ7#vP9s@tL2qX!d
- Docker 容器: openclaw (8h+运行) + miaospeed
- Bot token: 8782003171:AAGlJK1Icrcwm8QR8bScLlUVp1jHoWC8t5c
- 容器内 DNS 需手动设 8.8.8.8 才能联网(软路由透明代理导致)
- 语音识别未完成，等顶尖自己处理

## OVH 缺失动画补下载 (11:00 AM)
顶尖要求重新下载旧服上有但 OVH 缺的动画，从 M-Team 批量搜索+添加到 qB：

**动物神探队 The Creature Cases S01-S07** (MWeb 中配中字 +10%上传)
- ids: 975595/975592/975591/975589/975586/1095370/1132811
- 约 48GB

**啦咘啦哆警长大战羚羚羊**
- S01 4K ZmWeb (id:1013442, 4.61GB, 49种)
- S02 1080p ZmWeb (id:1128912, 3.27GB, 19种)

**疯狂动物城 Zootopia**
- 第1部 4K HDR10 DBTV (id:1130201, 9.89GB, 33种)
- 第2部 4K HDR10+ CHDWEB 中配国粤英 (id:1128584, 20.09GB, 411种)

**海底小纵队中国之旅**
- S01 (id:1032355) + S02 (id:1018375)

**小马宝莉 My Little Pony S01-S09** (UBWEB H.265 HDR10 中配中字)
- ids: 957585/957733/957731/957729/957726/957673/957657/957628/957607
- 约 50GB，体积小画质好

总计新增 22 个种子，预估 ~140GB
全部已成功添加到 OVH qB (145.239.143.92:8080)

## VPS 备份约定 [重要]
顶尖确认：以后他发 IP 过来，就按标准流程部署 vps-snapshot 备份到 OVH：
1. 安装: `bash <(curl -sL mjjtop.com/bk)`
2. 配置: 远程→145.239.143.92:/data/backup/{机器名}/, LOCAL_KEEP=1, REMOTE_KEEP_DAYS=30, TG通知
3. Cron: `0 3 * * *`
4. 手动触发一次验证
不需要再问，直接执行。

## Stock Monitor 优化 (下午)
- HDY(38.76.204.161) `/opt/tg-stock-monitor/bot.py` 全面优化
- 全部商品改用 curl（去掉 Playwright 依赖），一轮检查从 ~3分钟→<1秒
- 腾讯云 7 商品修复：分类页去重只请求1次，disabled button 检测缺货
- 同 URL 商品去重，并发 asyncio.gather
- Misaka 4个商品 curl 拿不到（SPA），暂时跳过
- RFCHOST 补货当天就检测到了

## OC Monitor 面板修复 (下午)
- https://openclaw.mjjvps.com (155.103.66.237:3800, Nginx反代)
- 问题1: CDN(Photon-Edge) 回源走 HTTPS 443，源站没有 openclaw 的 443 server block → 404
- 修复: 加了 443 server block，借用 git.088520.xyz 证书
- 问题2: CDN 强制 HTTP→HTTPS，certbot HTTP-01 验证失败
- 修复: 顶尖关掉 Cloudflare 代理(DNS Only)，certbot 签了独立证书(到期 5/25)
- 清理: 删除 git.088520.xyz 旧 Nginx 配置(已弃用)
- 清理: 删除多个 null/重复节点

## N100 OC Monitor Agent 重写 (下午)
- 旧 bash agent 依赖 python3，Docker 容器重建后 python3 丢失
- 用 Node.js 重写 agent: `/mnt/data_sda1/openclaw/config/workspace/scripts/oc-monitor-agent.js`
- 持久化在宿主机挂载目录，容器重建不丢
- 修复 providers 双重 JSON 编码问题(260→2)
- start 脚本改用 PID 文件防重复启动
- cron 路径修正: `/root/.openclaw/workspace/scripts/start-oc-monitor.sh`

## N100 网络问题
- Docker 容器连不上 Telegram API（被墙）
- 宿主机有透明代理能连，但容器 DNS 被 Docker 覆盖成 8.8.8.8 绕过了代理
- host 网络模式下 daemon.json dns 配置不生效
- 顶尖让另一个 agent 处理代理问题

## OC Monitor 服务端修复 (下午 ~16:00)
- 根本原因: 服务端 `JSON.stringify(b.providers)` 对已经是字符串的 providers 双重编码
- 修复: `/app/server/index.js` 改为 `typeof b.providers==="string"?b.providers:JSON.stringify(b.providers||[])`
- 修复后所有节点 providers 数据正常，前端不再崩溃

## N100 Agent Node.js 版完善 (下午 ~16:10)
- 加入供应商延迟探测（每60秒后台异步探测，不阻塞心跳）
- 系统指标修复: CPU 用 /proc/stat 差值计算, mem 用 /proc/meminfo, disk 用 df
- 探测结果: newcli ~8362ms(国内到海外正常), terminalpub TLS断开(不稳定)
- 面板正常显示 N100 所有信息

## OVH 下载状态 (16:20)
- 74个种子全部完成，0个下载中
- 磁盘: 458GB / 11TB (5%)
- 待做: 新内容 symlink、小马宝莉选版本、Emby 元数据刮削

## Emby Symlink + 媒体库 (16:30-17:00)
- 创建 symlink: 11个动画系列 91个链接到 `/data/media/动画/`
- 新增目录: My Little Pony(2010), Zootopia(2016), Sheriff Labrador vs Lynnia(2024), The Creature Cases(2022), Octonauts China(2023)
- 补充已有目录缺少的季: Peppa Pig S1-S9+S11, PAW Patrol S1-S11, Octonauts S1-S10+特别篇+电影, Detetive Labrador S1-S3
- 电影: 疯狂动物城1+2 链接到 `/data/media/电影/`
- Emby 库扫描完成: 10个系列 + 2部电影

## 中文元数据写入 (16:40-17:00)
- 系列级别: 10个系列全部写入中文名+简介+TMDB ID
- 电影: 疯狂动物城1+2 写入中文简介+TMDB ID
- 集级别: 子代理用 tmdb_emby_sync.py 从 TMDB 网页拉取
  - 小猪佩奇 236集全部补完
  - 布鲁伊 20集补完
  - 汪汪队 11集补完
  - 安全警长 17集补完
  - 总计 770→464 缺简介（TMDB上国产动画集级别数据缺失）

## Emby 播放修复 (17:10-17:40)
- 问题1: 旧服迁移的 library.db 路径不匹配 OVH 实际目录 → 播放 404
- 问题2: Emby 容器缺 `/data/qbittorrent/downloads` 挂载 → symlink 目标不可达
- 问题3: `/data/media:/data/media` 和 `/data/media:/media` 双挂载 → 2814集重复(应1383)
- 修复: 删 library.db 重建，去掉重复挂载，只保留 `/data/media:/media` + `/data/qbittorrent/downloads:ro`
- docker-compose.yml emby volumes 最终:
  - /data/emby/config:/config
  - /data/media:/media
  - /data/qbittorrent/downloads:/data/qbittorrent/downloads:ro
- 重新添加动画库(/media/动画) + 电影库(/media/电影)
- 重新写入所有中文元数据(系列+电影)
- 播放流验证: HTTP 206 正常
- ⚠️ 扫描后需要重新跑 tmdb_emby_sync.py（Series ID 变了，已更新脚本）
- 脚本路径: scripts/tmdb_emby_sync.py（ID已更新为新library的ID）

## Emby 重复集数修复 + 播放修复 (17:00-18:00)
- 根因: 每个系列目录下有两套 symlink (Season格式 + 中文原始名格式) 指向同一下载目录
- 删除 38 个重复 symlink，只保留 Season* 格式
- 去掉 docker-compose 重复挂载 `/data/media:/data/media`
- 最终 volumes: /data/emby/config:/config + /data/media:/media + /data/qbittorrent/downloads:ro
- 删 library.db 重建3次，最终: 11系列 1774集 2电影
- 1774集 > 旧服1383集，因为 OVH 种子版本文件更多（正确）
- 播放流验证 HTTP 206 正常
- Emby Series ID 变更: 布鲁伊=1548, 小恐龙=1547, 其余11-19

## 中文元数据重写 (18:00-18:30)
- 系列级别: 11个全部写入中文名+简介+TMDB ID (204)
- 电影: 疯狂动物城1+2 写入 (204)
- 集级别 tmdb_emby_sync.py 重跑完成: 869集更新
- 最终: 1025/1774 (58%) 有中文简介

## 封面上传 (18:35-18:50)
- Emby 自动刷新无法拉取 TMDB 图片（容器网络问题）
- 手动: web_fetch 抓 TMDB 页面提取 poster path → 下载 → base64 上传 Emby API
- 11个系列 + 2部电影全部上传成功
- ⚠️ TMDB 253041 已被改为"我在80年代给龙凤胎当继母"（真人剧），啦咘啦哆大战羚羚羊封面用视频截图替代
- 小马宝莉 TMDB ID 20085 不对，用 33765 的封面

## 集缩略图生成 (18:50-19:40)
- OVH 安装 ffmpeg，脚本 /tmp/gen_thumbs.sh
- 从视频 40% 位置截取 480px 宽 jpg，base64 上传 Emby API
- 第一轮: 1774集，完成~720张后中断
- 第二轮: 剩余1055集，完成1016张，19失败，3跳过
- 最终: ~82% 集有缩略图

## TMDB ID 被篡改问题 (19:00-21:00)
- TMDB TV 269149 被改为 "Drinking with Joe and Maya" → 疯狂动物城系列封面错误
- TMDB TV 82027 被改为 "车达莱夫人的爱情"(韩剧) → 小恐龙大冒险封面错误
- TMDB TV 253041 被改为 "我在80年代给龙凤胎当继母" → 啦咘啦哆大战羚羚羊封面错误
- 修正: 小恐龙大冒险正确TMDB ID = 88910, 小马宝莉正确ID = 33765
- 疯狂动物城系列(ID 19)用电影版海报(movie/269149), 啦咘啦哆大战羚羚羊用视频截图

## 缩略图错位修复 (20:00-22:00)
- 第一轮脚本 gen_thumbs.sh 有 bug: episodes 列表顺序和路径对不上，导致截图张冠李戴
- 全量重新生成 regen_all_thumbs.sh: 用精确 ID→路径映射，1695/1774 成功
- 补缺脚本 fix_thumbs3.py (Python, 带3次重试): 554/554 全部成功, 0失败
- 关键: 之前 bash 脚本上传偶尔 HTTP 500, Python 脚本加重试后 0 失败
- 最终: 1774/1774 集全部有缩略图
- 每次上传完缩略图后必须重新上传系列封面(缩略图和封面共用 Primary 字段)

## Emby 图片上传要点 (教训)
- Emby API 上传图片: POST /Items/{id}/Images/Primary, Content-Type: image/jpeg, body=base64
- 直接 POST 原始二进制会 500, 必须 base64 编码
- 集缩略图和系列封面都用 Primary 字段, 上传缩略图会覆盖系列封面
- 上传完缩略图后必须重新上传系列封面
- Emby App 有图片缓存, 更新后需要清缓存才能看到新图

## DD 重装脚本修复
- 移除 `set -e`，修复 `bash <(curl ...)` 下 read 遇 EOF 退出的问题
- Gitea + GitHub 已推送

## OC3→netcup 迁移 (深夜)
- OC3(173.249.215.67) OpenClaw 已停止+删除
- netcup(159.195.41.188) Debian 13, 8GB RAM, 500G 磁盘
- 装了 Node.js 22 + git + OpenClaw 2026.2.23 + ffmpeg
- 从 OC3 打包 .openclaw/ 迁移到 netcup (13MB)
- 删除 whatsapp 插件，重启正常
- OC Monitor: 删除 Chicago 节点，添加 netcup 节点
- OC3 的 oc-monitor-agent 已停止删除
- 问题: workspace 记忆还是 OC3 旧数据，需要从 Mac mini 同步
- 同步了 MEMORY.md + memory/ + USER.md + IDENTITY.md + SOUL.md 等
- 删除 BOOTSTRAP.md 避免重走初始化
- 删除旧 memory/main.sqlite 索引让它重建
- 设置 Telegram 中文菜单
- 踩坑: heartbeat 不是 openclaw.json 合法 key，导致配置校验失败崩溃循环
- 修复: 删掉 heartbeat key，心跳通过 HEARTBEAT.md 自动工作
- 修复 workspace 路径: /data/openclaw-workspace → /root/.openclaw/workspace
- 语音转文字: 改成 audio.enabled:true 让内置自动检测（旧 Groq key 已失效）

## OC3(173.249.215.67) 清理
- 删除旧脚本: kejilion.sh/panel_install.sh/agent.sh/system_snapshot.sh 等
- 清理 npm 缓存，磁盘从 68%→65%
- Docker 容器(Gost+Sub-Store)保留不动

## 待完成
- 确认播放正常后停旧服 emby+qB
- 停旧服 155.103.67.95 的 emby+qB 容器
- netcup 语音转文字验证（Groq key 过期，需新 key 或其他方案）
- 部署 Jellyseerr/求片系统 on OVH
