6.5 KiB
6.5 KiB
CHANGELOG - 服务器运维日志
v1.0.0 (2026-06-14)
Added
- 初始化仓库:README、CHANGELOG、DECISION_LOG
- 每日运维总结机制确立
- 首份总结:2026-06-14 服务器功能变动总结
v1.1.0 (2026-06-15)
Added
- — Cookie session auth proxy 完整源码和 systemd 服务文件
- — Python HTTPServer,bcrypt 密码验证,HMAC-SHA256 token 签名
- — systemd 服务,port 9002,开机自启
Changed
- 安全认证升级:Caddy basicauth → auth_proxy Cookie session
- 所有保护服务(gitea/dashboard/books/nav/brief/todo)改为走 auth_proxy:9002
- 新增 auth.xybkwd.top 子域作为登录入口
- Session cookie: 7天过期,HttpOnly,SameSite=Lax,Domain=.xybkwd.top
- 密码验证不变(bcrypt),token 签名防篡改(HMAC-SHA256)
- — 去掉所有 basicauth,改为 reverse_proxy localhost:9002
- 服务清单更新:books (Calibre-Web) 状态同步
Fixed
- 移动端重复登录问题:basicauth 每 ~1 小时要求重新输入密码
- Cookie 跨子域失效:缺 Domain=.xybkwd.top 导致各子域不共享 cookie
- Set-Cookie 值带多余引号:浏览器拒绝该 cookie
Security
- 认证安全性不变:bcrypt + HMAC-SHA256,无明文密码传输
- 公开服务(blog/vaultwarden/memos)不经过 auth_proxy,不受影响
v1.1.0 (2026-06-15)
Added
- — Cookie session auth proxy 完整源码和 systemd 服务文件
- — Python HTTPServer,bcrypt 密码验证,HMAC-SHA256 token 签名
- — systemd 服务,port 9002,开机自启
Changed
- 安全认证升级:Caddy basicauth → auth_proxy Cookie session
- 所有保护服务(gitea/dashboard/books/nav/brief/todo)改为走 auth_proxy:9002
- 新增 auth.xybkwd.top 子域作为登录入口
- Session cookie: 7天过期,HttpOnly,SameSite=Lax,Domain=.xybkwd.top
- 密码验证不变(bcrypt),token 签名防篡改(HMAC-SHA256)
- — 去掉所有 basicauth,改为 reverse_proxy localhost:9002
- 服务清单更新:books (Calibre-Web) 状态同步
Fixed
- 移动端重复登录问题:basicauth 每 ~1 小时要求重新输入密码
- Cookie 跨子域失效:缺 Domain=.xybkwd.top 导致各子域不共享 cookie
- Set-Cookie 值带多余引号:浏览器拒绝该 cookie
Security
- 认证安全性不变:bcrypt + HMAC-SHA256,无明文密码传输
- 公开服务(blog/vaultwarden/memos)不经过 auth_proxy,不受影响
v1.2.0 (2026-06-15) — rollback
Removed
- auth_proxy 对主服务的拦截:恢复 Caddy 直接反向代理到后端
- gitea → localhost:3000, dashboard → localhost:9000, books → localhost:8083
- nav/brief → file_server(静态文件),nav/api/* → todo 9001
- auth.xybkwd.top 仍保留 auth_proxy:9002 作为登录门户(不影响其他服务)
Added
- 认证方案待修复:Caddy v2.11 basic_auth bcrypt hash 格式需要重新调试
Lesson Learned (Critical)
- 🔴 铁律:所有配置变更必须先 commit 到 git,再部署到生产环境
- 本次事故的根因:直接修改 /etc/caddy/Caddyfile 后未及时 git commit, 导致回滚时需要从 git 历史中找回正确版本(commit 6c35f31)
- git 历史在此次事故中挽救了服务:回滚前险些无法恢复
2026-06-16
要闻流水线改造 v0.3
改动:
- fetch 脚本时效过滤 — fetch_news.py (48h) / fetch_policy.py (72h) / fetch_research.py (72h)
- 新增 archive_daily_brief.py — 每日要闻归档到 daily-brief 仓库(含跨日去重)
- 新增 cn_merge.py — 合并本地国内新闻到流水线
- 所有新闻条目增加 [MM-DD] 日期标记(支持多种时间格式解析)
- crontab 新增:22:40 归档 / 05 3,9,15,21 cn_merge
架构变更:
- 新增本地抓取层:WorkBuddy 本地运行 local_fetch_cn.py,通过 SCP 推送到东京
- 数据源扩展:新华网(3路)+ 微博热搜,约 113 条/轮
- 浏览器展示和归档共享同一数据源(news_summary.json)
涉及文件:
- 东京 ~/scripts/: fetch_news.py, fetch_policy.py, fetch_research.py, cn_merge.py(新)
- 东京 ~/daily-brief/: archive_daily_brief.py(新), archive/2026/06/2026-06-16.md
- 本地 Claw/: local_fetch_cn.py(新), local_fetch_daemon.py(新), start_cn_fetch.bat(新)
要闻流水线改造 v0.4 — 扩源 + RAW分层 + 精选器
改动:
- fetch_news.py v2.0 — 新增 5 个国际源(BBC, The Guardian, CNBC, FT中文, Bloomberg),12源/轮约342条
- local_fetch_cn.py v2.0 — 清理失效源(人民网/观察者网/腾讯/澎湃),保留新华网3路+微博
- cn_merge.py v2.0 — 分两路输出:全量→news_raw.json+RAW ndjson,精选→news.json(送AI摘要)
- 新增 selector.py — 多策略评分精选器(来源权重+时效+多样性,16主题分类)
- 行情数据采集 — 新增 fetch_market_daily.py,31品种日线OHLCV,daily-brief/market_data/
- RAW存档机制 — 所有新闻全量写入 daily-brief/raw/YYYY-MM-DD.ndjson(逐行JSON,0 token)
架构变更:
- 抓取层从
200条/轮扩张至500条/轮,RAW全量存档 - AI摘要层从全量处理改为精选80条,token成本不变
- 新增行情数据采集线(事件线+价格线双轨归档)
crontab 更新:
- 50 23 * * * — 行情日线采集(新增)
- 10 0 * * * — RAW存档推送到Gitea(新增)
- 05 3,9,15,21 — cn_merge v2(含selector精选,更新)
涉及文件:
- 东京 ~/scripts/: fetch_news.py, cn_merge.py (更新), selector.py (新)
- 东京 ~/daily-brief/: fetch_market_daily.py (新), raw/ (新目录)
- 本地 Claw/: local_fetch_cn.py (更新)
Hotfix 2026-06-16 — 新华网RSS下线 + URL日期提取防线
问题: 新华网 RSS(3路)返回300条2022年12月旧闻,且 published 字段全为空,绕过48h时效过滤,导致浏览页面显示4年前旧闻。
修复:
- 全面移除新华网 RSS — xinhuanet.com 和 news.cn 域名全线瘫痪,返回2022年旧闻
- 清理新浪新闻 RSS — 返回2018年旧闻("光纤之父"高锟离世...),一并移除
- 新增 URL 日期提取防线 —
parse_published_time增加从 link URL 提取日期(/YYYY-MM/DD/),作为 published 为空时的第二道防线 - 清洗 RAW 存档 — 从 ndjson 中移除 1186 条新华网旧数据
- 清洗 news.json — cn_merge 重新精选,确认0条旧闻
当前中文源: 36氪(东京RSS)+ FT中文(东京RSS)+ 微博热搜(本地页面抓取) 国内RSS生态现状: 全线死亡。新华网/新浪/人民/澎湃/凤凰/环球/第一财经/界面 — 均无可用RSS。