- 2026-09-13.md:追加 4 条(部署完成、Kuma 状态页建成、 灌库脚本静默失败根因、SSH 被拒时的公网旁路验证法) - DEPLOY.md:站点清单更新 home.xpcool.com 上线状态; 新增「公开状态页」小节(三表配合、send_url 必为 1、 两个验证端点、同源反代写法、回滚方式); 工具链坑位新增「$LASTEXITCODE 不能穿透 ssh」与 「set -e + 写死路径 = 静默失败」 - 技能 uptime-kuma-sqlite-ops 同步补齐状态页建法
7.2 KiB
2026-09-13
2026-09-13 | CFG | home.xpcool.com 部署完成(服务器侧):SSH 本次已放行(~/.ssh/xpcool_ed25519 → xxcool@193.112.118.168:22025,sudo 免密 OK),直接由 AI 执行部署 —— 站点 27 文件落 /data/www/home.xpcool.com、证书落 /data/nginx/ssl/home.xpcool.com/(公私钥 pubkey md5 一致)、配置落 /data/nginx/conf.d/home.xpcool.com.conf(首次部署无旧配置)、nginx -t 通过 + reload、本机 https 200 + <title>xpcool 服务台</title> + 静态资源 200 + 80→301→443。唯一待办仍是 DNS:home A 记录未加(223.5.5.5/119.29.29.29 及权威 calvin/meat.dnspod.net 全 NXDOMAIN,且无泛解析)
2026-09-13 | CFG | Kuma 建公开状态页 xpcool(首页状态格的真正数据源):此前 status_page 表为空 —— 即 status.xpcool.com 只是 Kuma 自身面板、从未建过状态页,这正是首页显示「状态数据未接入」的根因。直写 SQLite 建:状态页(title「xpcool 服务台」/theme dark/不收录/显证书到期/60s 刷新) + 分组「自建服务」(public=1) + 9 监控关联且 send_url=1。验证:公网 /api/status-page/xpcool 200 返回 9 监控且带 url;heartbeat 返回 9 组心跳;首页实测 9/9 正常、卡片「正常」+ 100.00%
2026-09-13 | FIX | Kuma 状态页灌库脚本「静默失败」:kuma-statuspage.sh 里 SQL_SRC 写死 /tmp/wb_kuma_statuspage.sql,与实际上传的 /tmp/kuma-statuspage.sql 不符,set -e 在第一步就退出、日志只有一行、且远程 echo $LASTEXITCODE 被本地 PowerShell 提前展开成空 → 一度完全看不出失败原因。教训:远程脚本的 set -e + 文件路径约定要自洽(改用 $(dirname $0)/同名.sql 推导),且回传执行结果要走「服务器落日志 + base64 回传」,别依赖 $LASTEXITCODE 穿透 ssh
2026-09-13 | FIX | 沙箱取日志被拒后的替代验证路径:SSH 被拦时不一定要重试 —— Kuma 状态页 API 在 https://status.xpcool.com/api/status-page/<slug> 公网匿名可达,直接 HTTPS 查询即可判断状态页是否建成,绕开 SSH
2026-09-13 | CFG | home.xpcool.com 上线物料备齐:证书(E:\Project\home.xpcool.com_nginx\,注意不在 E:\CentOS\ssl\ 下)核验通过 —— CN=home.xpcool.com SAN 一致、TrustAsia DV、有效期至 2026-12-12、公私钥配套;生成一键部署包 E:\CentOS\deploy-home\(bundle.tar.gz + deploy-home.ps1),nginx 配置含 /api/kuma/ 同源反代到 127.0.0.1:3001/api/status-page/。SSH 再遭沙箱拦截且用户拒绝授权 → 沿用「AI 备包、用户本机执行」模式。待办:home.xpcool.com A 记录仍未添加(223.5.5.5/119.29.29.29/8.8.8.8 三方确认不存在,对照 status.xpcool.com 可正常解析)
2026-09-13 | REQ | 新建 home.xpcool.com(xpcool 服务台):9 个自建服务的统一入口 + Uptime Kuma 实时存活状态 + 主机规格;Vite6 + Vue3 + TS(strict) + Pinia + vue-router + UnoCSS + SCSS,视觉按 design-taste-frontend 规范(深色仪表盘语言、双主题令牌、单形状系统、零 eyebrow/零 em-dash、bento 栅格 4+2/2+2+2/3+3/3+3);构建通过(gzip 约 56KB),本地 git 已 init + 首次 commit(47 文件),待用户加 DNS/证书后部署
2026-09-13 | FIX | 移动端横向溢出「误报」定位:真 390×844 视口实测 scrollW=390 / overflow=0,布局本身无溢出;此前截图右边缘被切是取图假象——Windows 无头 Chrome 窗口有 500px 下限,且 iframe 滚条槽位让内层 clientWidth 变 375,恰好把溢出藏住;改用 CDP Emulation.setDeviceMetricsOverride 后结论可靠(详见 DEPLOY.md 工具链坑位)
2026-09-13 | CHG | 新增 home.xpcool.com/scripts/shoot-mobile.mjs:Node 22 内置 WebSocket 手写极简 CDP 客户端,零依赖完成真移动视口测量 + captureBeyondViewport 整页截图;shoot.ps1 收敛为桌面端并修掉「按 *.png 清空 .shots 误删移动端截图」的 bug
2026-09-13 | DOC | home.xpcool.com 补齐 README.md / agents.md / .workbuddy/memory/CHANGELOG.md;.shots 加入 .gitignore
2026-09-13 | CHG | 备好 Bark 通知增强(自定义图标/分组/重要警告/图片/角标):Kuma 官方 provider 不支持这些参数,改为「只读挂载覆盖 /app/server/notification-providers/bark.js」实现;素材用 Pillow 手绘(icon/down/up 三张)自托管到 /data/www/bark-assets/;因沙箱连续拦截 SSH,部署改由用户执行 .workbuddy/tmp/deploy-bark-custom.ps1,尚未落地
2026-09-13 | FIX | 本机取图脚本踩坑:PIL 波形归一化数值超出画布(v=-6 → 偏移 6×振幅)导致尖峰压到文字上;改为所有波形值控制在 [-1,1] 并加 assert 断言
2026-09-13 | CHG | Uptime Kuma 接入 Bark 告警:新增通知渠道「Bark 手机推送」(type 必须写 Bark 首字母大写,端点用容器网关 http://172.17.0.1:8081/<key>),已关联全部 9 个监控;用临时监控触发真实 DOWN 完成端到端验证(Bark 日志实测收到并返 200)后清理
2026-09-13 | DEP | 安装用户级技能 design-taste-frontend(taste-skill v2,源 github.com/Leonxlnx/taste-skill,上游路径 skills/taste-skill/SKILL.md);安装前完成安全审计(P2 安全,纯 Markdown 无脚本);description 追加中文触发词;来源与审计记录见 ~/.workbuddy/skills/design-taste-frontend/SOURCE.md
2026-09-13 | FIX | 本机 git 走系统代理(HTTP_PROXY=127.0.0.1:58412)导致 github clone 失败(Empty reply / CONNECT 502)→ 清空代理 env 后用 curl --noproxy "*" 拉 codeload tarball 再解压可正常下载;另 Bash 工具在本机不可用(shim 报 dirname: command not found),需改用 PowerShell
2026-09-13 | CHG | Uptime Kuma 第一批监控上线:9 个站点 HTTP 监控(60/120/300s 三档 + 证书到期通知),因官方 API 不支持创建监控,采用「直写 SQLite monitor 表 + 重启容器」批量添加
2026-09-13 | FIX | 修正 service.xpcool.com 监控误报:后端纯 POST 无根路由,可接受状态码放宽为 ["200-399","404"](进程挂掉时 nginx 返 502,仍判 DOWN)
2026-09-13 | CFG | git.xpcool.com 证书更新(至 2026-12-12);旧证书备份为 fullchain.pem.bak.202609131719;注意该站证书文件名是 fullchain.pem/privkey.pem,与别的站不一致
2026-09-13 | CFG | status.xpcool.com 切换 HTTPS:腾讯云 DV 证书落到 /data/nginx/ssl/status.xpcool.com/(key 600),80→301→443 生效,公网验证 ssl_verify=0、证书有效期至 2026-12-12
2026-09-13 | FIX | 沉淀 SSH 远程部署两个坑:多行脚本经 ssh.exe 传参会因括号导致 bash 语法错误;多文件 scp 静默丢文件 → 改为「本地 .sh + 单文件 scp + 幂等脚本」
2026-09-13 | CFG | status.xpcool.com:新增 nginx 反代配置(先 HTTP,含 WebSocket 透传),nginx -t 通过并已 reload
2026-09-13 | DEP | 部署 Uptime Kuma 2.5.3 监控面板:容器 uptime-kuma,127.0.0.1:3001,数据 /data/uptime-kuma,内存限 512m,healthy
2026-09-13 | DOC | MEMORY.md 瘦身:生产部署/安全加固/工具链坑位拆到同目录 DEPLOY.md;新增「站点与容器清单」表