diff --git a/CLAUDE.md b/CLAUDE.md index 2229279..ced602f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -96,7 +96,7 @@ EPD_HOST=epd400a44.local python3 main.py - 进程:systemd **`eink-server.service`**(`/etc/systemd/system/`,`User=ubuntu`、`Restart=always`、日志追加 `output/server.log`)。改代码后:本机 rsync 同上 → `ssh njcq sudo systemctl restart eink-server`;查看 `ssh njcq 'systemctl status eink-server; tail output/server.log; curl -s 127.0.0.1:8790/health'`。 - 反代与证书走 **1Panel(v2.2.4,OpenResty 容器 host 网络)**:站点 `eink.njcqit.com`(id 10,类型 proxy → `http://127.0.0.1:8790`,默认分组)+ Let's Encrypt 证书(ssl id 11,EC256,`dnsAccount` 腾讯云 DNS 账号 id 1 + acme 账号 id 1,自动续期,与其它 njcqit.com 站点同一套);HTTP 301 到 HTTPS、HSTS。生成的配置:`/opt/1panel/www/conf.d/eink.njcqit.com.conf` + `/opt/1panel/www/sites/eink.njcqit.com/proxy/root.conf`。建站时用的是 **1Panel API**(面板已开 API、白名单 127.0.0.1,浏览器扩展当时未连接):服务器上留有辅助脚本 `~/.1p_api.sh METHOD /api/v2/path [json]`(运行时从 `/opt/1panel/db/core.db` 取 ApiKey 算 `1Panel-Token=md5("1panel"+key+ts)`,不落盘不回显)。**坑**:v2.2.4 的建站请求体与 dev 分支 swagger 不同——用 `domains:[{domain,port,ssl}]` 而非 `primaryDomain`(发 `primaryDomain` 直接 500 空响应),可 `enableSSL:true, websiteSSLID` 一步挂证书;结构体以 `raw.githubusercontent.com/1Panel-dev/1Panel/v2.2.4/agent/app/dto/request/website.go` 为准。建站后配置未即时生效(拿到面板默认证书、HTTP 404),`docker exec 1Panel-openresty-wYew nginx -t` 通过后几秒内自行生效。 - **境内上游可达性**:JM 后端、和风、SenseCraft 都通;**OKX/Coinbase/Huobi 主域名全部不通且各超时 4~8s**(合计超 `FETCH_BUDGET`,K 线永远拿不到),故 `btc_api.py` 新增 `gateio`/`huobi_aws`(api-aws.huobi.pro)/`binance_vision`(data-api.binance.vision)三源并加 `BTC_SOURCES` 顺序配置(config.py);本机默认顺序不变。 - - 该服务器原有 2026-06 部署的 **旧 main 分支 Zectrix 版**(每分钟 cron 推 Zectrix 设备 44:1B:F6:89:C7:78),已备份为 `~/eink-push.legacy-zectrix`、cron 行注释保留(`crontab -l` 可见),本分支无 Zectrix 推送。 + - 同一服务器上另有 **旧 main 分支 Zectrix 版仍在用**(2026-06 部署,每分钟 cron 推 Zectrix 云设备 44:1B:F6:89:C7:78,那块屏还在):目录 `~/eink-push-zectrix`(2026-09-18 由原 `~/eink-push` 改名,`run.sh` 内 `cd` 路径同步改)、cron `* * * * * /home/ubuntu/eink-push-zectrix/run.sh`、日志 `~/eink-push-zectrix/output/cron.log`。与 `~/eink-push`(本分支 E1002 服务)**并存互不干扰**:各自目录/`.env`/缓存,Zectrix 版不占端口、无 systemd;只共用 JM/和风上游接口。本分支代码不含 Zectrix 推送,**部署本分支时切勿覆盖或删掉 `~/eink-push-zectrix`**。 - **本机不再跑 server/cloudflared**:`com.jm.eink-server`/`com.jm.eink-cloudflared` 两个 LaunchAgent 已 bootout 并删除 plist;只保留 `com.jm.eink-push`(小屏推送 + 用量上报)。历史坑(cloudflared 快速隧道会被 Cloudflare 静默回收、SIGTERM 退出慢、需 `--protocol http2`)已不再相关。 - **shell 坑**:本机是 fish——`env -u …` 不能存进变量再当命令执行;含中文的 Python heredoc 用 `python3 -X utf8 - <<'EOF'`,否则 stdin 解码报错;`gh` 未登录且 GitHub API 匿名限流,取源码走 `curl raw.githubusercontent.com`。 - **用量采集验证**:`python3 claude_usage.py --force` 应打出 `status: fetched` 且 `seven_day_fable` 非空;紧接着不带 `--force` 再跑应为 `cache`;缓存文件里不得出现 token。`python3 codex_usage.py --force` 未登录时报「authentication required…请先执行 CODEX_HOME=… codex login」,登录后应有 `five_hour`/`seven_day`。历史:statusline 补丁(`~/.claude/statusline.sh`)仍在本机产出 `~/.claude/usage-snapshot.json`,但本项目已不读它。