Files
vps-management-bot/memory/2026-02-25.md
2026-03-21 01:10:53 +08:00

12 KiB
Raw Blame History

2026-02-25

Gitea 迁移 Tarek → netcup

  • 从 155.103.66.237(Tarek) 迁移到 159.195.41.188(netcup)
  • Docker 部署: gitea/gitea:latest, 端口 3001→3000, 2222→22
  • 数据打包 443K恢复后 app.ini 域名改为 mjjtop.com
  • Nginx 配好短链(/oc /dd /ss /bbr /bk /bak) + Gitea 反代
  • certbot HTTPS 签发成功,到期 2026-05-25自动续期
  • 旧服 Gitea 容器+数据卷+镜像+Nginx配置全部清理
  • 测试机(31.22.111.168)验证5个短链全部正常

netcup 备份 → OVH

  • vps-snapshot 配置: REMOTE_IP=145.239.143.92, /data/backup/netcup/
  • 踩坑: 手写配置文件用了 REMOTE_HOST脚本实际读 REMOTE_IP
  • 快照 1.7G (12G原始数据压缩)120MB/s 同步到 OVH
  • Cron: 0 3 * * * 每天自动备份
  • TG 通知已配置

Jellyseerr 求片系统部署 (OVH)

  • 地址: https://req.088520.xyz | 标题: 顶尖求片
  • Docker: jellyseerr(:5055) + radarr(:7878) + sonarr(:8989) + prowlarr(:9696)
  • compose: /data/docker-compose-arr.yml
  • Caddy 反代 req.088520.xyz → jellyseerr:5055 (自动HTTPS)
  • 对接 Emby(emby:8096, urlBase=/emby) + qB(qbittorrent:8080)
  • Radarr root: /movies | Sonarr root: /tv
  • 管理员: admin (Emby账号登录)
  • 默认配额: 每用户每月10部电影+10部剧集
  • 中文界面, 发现区域CN, 原始语言zh
  • API keys: Prowlarr=306e863ef5fc41979f6e701a3f659526 | Radarr=13312d6d56ed48f78ba692204390b67c | Sonarr=8432ee6ca3174279858fbe839541b1eb
  • 踩坑: Emby API 需要 urlBase=/emby 才能连通; hostname 参数是 IP 不含协议
  • 待完成: Prowlarr 配 M-Team 索引器 → 已完成

M-Team 索引器对接 Prowlarr

  • M-Team API Token: 019c9278-390d-7583-8ae8-4451ef5ed57c (从浏览器CDP操作创建+clipboard拦截获取)
  • Prowlarr 添加 M-Team-TP 索引器, baseUrl=https://api.m-team.io
  • Prowlarr → Radarr(fullSync) + Sonarr(fullSync) 应用关联完成
  • Radarr/Sonarr 均已收到 "M-Team (Prowlarr)" 索引器
  • 全链路: Jellyseerr求片 → Radarr/Sonarr → Prowlarr/M-Team搜索 → qB下载 → Emby入库
  • 踩坑: M-Team API 需要 HMAC-SHA1 签名+JWT; JWT 会过期; 页面令牌脱敏需用clipboard拦截拿完整值

脚本修改约定

  • 以后改脚本以 Mac 本地为源头,改完 push Gitea + GitHub
  • 不在服务器上直接改

求片系统全链路打通

  • 自动批准: 用户权限改为160(REQUEST+AUTO_APPROVE),求片直接自动通过
  • 已有用户(muzichen/sistercon/xmg0828)权限都已更新
  • 默认quality profile: Any(优先最高质量)
  • 首批下载: X(恐怖X档案)28.4GB已完成入库 | The Shadow's Edge 37.1GB下载中

Emby 四库分类

  • 电影(/data/media/电影) → Radarr /movies
  • 电视剧(/data/media/电视剧) → Sonarr /tvshows
  • 动漫(/data/media/动漫) → Sonarr /anime (Jellyseerr默认)
  • 动画(/data/media/动画) → /tv (儿童,手动管理,求片不进此库)
  • Emby库: 电影(id:5) | 电视剧(id:1878) | 动漫(id:1887) | 动画(id:3)
  • Jellyseerr配了两个Sonarr: 默认→/anime(动漫) | Sonarr-电视剧→/tvshows
  • 已有动漫(Chained Soldier/Fights Break Sphere/Man's Inhumanity)从动画库移到动漫库

刮削完成

  • OVH连不上TMDB封面需从Mac下载再base64上传(OVH直接curl TMDB只得2KB错误页)
  • 魔都精兵的奴隶(Tmdb:139060) | 斗破苍穹(Tmdb:79481) | 人间非人(Tmdb:308085) — 中文名+简介+封面
  • 恐怖X档案 | 庇护之地(Shelter) | 疯狂动物城 | 疯狂动物城2 — 已刮削
  • 踩坑: Emby POST Items/{id} 写Name时如果Name变null会导致后续更新报"Value cannot be null"需带ForcedSortName一起写
  • HEARTBEAT.md已加自动刮削任务: 每次心跳检查缺元数据的新片从Mac端web_fetch TMDB→base64上传封面

人间非人归类修正

  • 人间非人是电视剧不是动漫,从动漫库移到电视剧库
  • Sonarr路径: /anime → /tvshows
  • 移库后Emby重建item(ID变了: 系列1915, E17→1917, E20→1918),需重新刮削
  • 目前只有2集(E17/E20)M-Team资源不全Sonarr持续监控

动漫集级刮削

  • 19集全部补上中文集名+简介+缩略图(ffmpeg 40%位置截取480p)
  • Emby更新Episode需先GET完整item再POST回去(直接POST少字段会400)
  • 魔都精兵的奴隶: S1×9集 + S2×7集 = 16集
  • 斗破苍穹: 仅S5E105(1集/271集)M-Team资源极少Sonarr持续监控
  • 人间非人: E17+E20(2集/21集)

封面上传踩坑

  • OVH服务器curl TMDB图片只得2KB错误页(连不上TMDB)
  • 正确流程: Mac下载封面 → base64 -i → pipe到SSH → curl POST Emby
  • macOS base64命令: base64 -i file(不是base64 file)

oc-monitor 迁移 Tarek → netcup

  • 从 155.103.66.237:3800 迁移到 159.195.41.188:3800
  • Docker: oc-monitor:latest, 镜像66MB+数据5MB+源码1.2MB
  • Nginx反代 + certbot HTTPS: https://openclaw.mjjvps.com (到期2026-05-26)
  • 5个节点agent全部更新上报地址: Mac mini/HDY/Tarek/N100/netcup
  • N100是OpenWrtagent跑在Docker容器里的Node.js版(oc-monitor-agent.js)
  • Ciallo(155.103.67.87)节点已从面板删除
  • Tarek旧容器+数据卷+镜像已清理
  • Auth Token: D2DE595D2F9A6F12926212B326DA68BF
  • 踩坑: Nginx WebSocket配置不能写死Connection "upgrade"需用map变量

sub-bot 新部署 netcup

155.103.67.87 (Ciallo) 状态

  • SSH连接超时机器可能没开
  • 上面的OpenClaw待卸载(等机器恢复后处理)

Tarek (155.103.66.237) 清理为测试机

  • OpenClaw/Nginx/oc-monitor-agent/DStatus/certbot 全部卸载
  • Docker容器和镜像清空(回收440MB)
  • 只剩基础系统+Docker引擎+fail2ban
  • 19G磁盘用9.5G2G内存用389MB
  • 以后作为测试机使用

Ciallo (155.103.67.87) 清理

  • OpenClaw/oc-monitor-agent/DStatus/哪吒/playwright 全部卸载
  • npm清理703 packagescrontab清空
  • 只剩基础系统+Docker引擎
  • 20G磁盘用3.5G2G内存用372MB
  • oc-monitor面板已删除Ciallo和Tarek节点

财经快讯机器人 news-bot

  • Bot: @bookooobot_bot | Token: 8339960949:AAEbzWuGC81Ew4FN9Ple11J3QCwYooi3fXY
  • 部署: netcup /opt/news-bot, systemd news-bot.service
  • Mac源码: ~/.openclaw/workspace/projects/news-bot/
  • 7个信息源: 金十数据/华尔街见闻/36氪/新浪财经/Google News/Finviz/TechCrunch
  • 国际源英文自动翻译中文(Google Translate免费API)
  • 新闻标题带可点击链接跳转原文
  • AI评分过滤: >=8秒发, 6-7每30分钟汇总, <6不推
  • 定时总结: 08:00/11:30/20:00
  • 交互命令: /start /news /summary /sources /keywords /settings
  • 管理员: 165067365

NodeSeek 签到

  • 朦胧: +5鸡腿累计428
  • VP404: 今天已签过,重复被拦截

News Bot 链接功能

  • 所有7个源新闻标题加了可点击URL跳转原文
  • 金十: flash_detail/{id}.html | 华尔街见闻: uri字段 | 36氪: 构造/newsflashes/{id}
  • 新浪: url字段 | Google/TechCrunch: RSS link标签 | Finviz: HTML href提取
  • parse_mode 全部从 Markdown 改为 HTML支持标签
  • 已部署到 netcup

Sub-Bot 分组管理功能

  • 新增订阅分组功能561行→812行(+260行)
  • 数据结构: sub_groups[] 每组有 id/name/secret/nodes
  • 功能: 创建/删除/重命名分组、添加节点到分组、独立订阅链接、重置链接(旧链接失效)
  • HTTP端点: /{group_secret}/download 自动匹配分组
  • 三处同步: netcup(159.195.41.188) + xianyu(185.218.6.38) + Gitea(321bb43)
  • Mac备份: ~/.openclaw/workspace/scripts/gitea-backup/sub-bot/bot.py

Sub-Bot 后续修复

  • 检测改为只更新状态不删除节点(auto_cleanup不再自动删)
  • UI重构: 主菜单3入口(默认节点池/分组管理/全部检测)
  • 返回按钮修复: menu_back→sg_back 避免pattern冲突
  • 分组检测+删除节点功能
  • 默认池显示订阅链接+重置按钮(get_default_secret()从data.json读)
  • auto_cleanup完全移除只保留手动检测
  • 三态检测: 🟢通/🟡未知/🔴不通 + IEPL专线提示
  • 最终同步: Gitea ea233c3 + netcup + xianyu + Mac备份

News-Bot 重复推送修复

  • batch_items 立即 mark_pushed不等到推送时
  • _batch_queue 加 existing_ids 去重
  • 清空数据重启

VPS-Reminder 恢复

  • 从 HDY 备份(/data/backup/hdy/ on OVH)提取 vps-reminder 代码
  • Bot token: 8300905342:AAH3Q78FuR5Exrw2zWYJHFRyVeLlws3xnww
  • 部署到 netcup /opt/vps-reminder/systemd 启动
  • 10台VPS数据完整恢复每天09:00自动检查到期
  • 改进续费功能: 新增自动续期选项(根据周期自动算下一到期日) + 手动输入日期
  • 依赖: python-telegram-bot, python-dotenv, python-dateutil
  • Mac备份: ~/.openclaw/workspace/scripts/gitea-backup/vps-reminder/

Stock-Monitor (HDY备份)

  • 从 HDY 备份发现 /opt/tg-stock-monitor/ (商品库存监控Bot)
  • 暂未部署,待顶尖决定是否需要

EvoMap.ai 账号查看

  • 账号: mf0@msn.com / @a110110
  • 4个节点全部Offline: node_01885560ab27(OC2) / node_32e35d004633(OC3) / node_b59cc237cee2(HDY) / node_904d2652b8e2(Mac mini)
  • Published Assets: 0 | Credits: 0 | 每节点 Reputation 50
  • My Questions: 1 (之前提过一个问题)
  • 当时注册了节点但没有成功发布Capsule/Gene

OpenClaw 更新

  • 2026.2.21-2 → 2026.2.24

Koipy 迁移 HK优→netcup (失败,已回滚)

  • 157.254.53.55 → 159.195.41.188 迁移尝试
  • 错误1: 直接 docker pull latest 而不是用 koipy-linux-amd64.zip 覆盖二进制
  • 错误2: sub-store 端口改成3002(因Gitea占3001),但外网访问不通
  • 最终: netcup上Koipy+sub-store全部删除清理迁移取消
  • ⚠️ 教训: Koipy正确部署方式是 docker create基础镜像 → unzip koipy-linux-amd64.zip → docker cp覆盖 koipy/pyrogram/resources → 补i18n

Koipy 部署 155.103.66.237 (Tarek测试机)

  • 用户提供 builtin.rar + koipy-linux-amd64.zip + config.yaml + sub-store-data
  • 解压builtin.rar(需装unrar)unzip koipy-linux-amd64.zip
  • docker create koipy-app(host网络) → docker cp覆盖binary/pyrogram/resources → 补i18n
  • sub-store: xream/sub-store, 端口映射 3001:3001 + 3000:3000
  • ⚠️ sub-store v2.21.27: 后端3000 前端3001Koipy config backend应指向3000不是3001
  • config.yaml里 backend 已改为 http://172.17.0.1:3000/...
  • i18n: 从173.249.199.16(朋友机)拷贝zh-CN.yml覆盖(自定义菜单文字:流媒体解锁/拓扑测试/点我开始顶尖等)
  • Bot: @speedbot01_bot (7905907097)
  • 173.249.199.16是朋友的Koipy只看不改做参考用

⚠️ Koipy 部署教训

  • koipy-linux-amd64.zip 是正确的更新包不是docker save/load镜像
  • sub-store新版后端端口3000前端3001别搞混
  • i18n文件在 resources/localization/zh-CN.yml需拷贝到 resources/i18n/zh-CN.yml
  • 155.103.66.237 SSH用密码(fJ7#vP9s@tL2qX!d)koipy_key连不上
  • config.yaml最终用157.254.53.55的原始配置覆盖(不要乱改别人的后端节点配置)

netcup (159.195.41.188) 服务清单

Docker:

  • Gitea (gitea/gitea:latest, 端口3001→3000, SSH 2222→22)
  • oc-monitor (oc-monitor:latest, 端口3800)

Systemd服务:

  • openclaw.service — OpenClaw Gateway (TG bot 8390351834)
  • news-bot.service — 财经快讯机器人 (@bookooobot_bot)
  • sub-bot.service — 订阅管理 Bot
  • vps-reminder.service — VPS到期提醒 Bot
  • oc-monitor-agent.service — OC Monitor Agent
  • nginx.service — 反代(mjjtop.com) + 短链
  • docker.service
  • fail2ban.service

news-bot 免打扰功能

  • 设置菜单(/settings)新增免打扰按钮
  • 默认21:00-8:30可调整开始/结束时间
  • 免打扰=静音通知(disable_notification),不是停止推送
  • TG streaming已改off解决持续"正在输入"问题