重建:从 Halo 失败到静态数据博客
这台博客服务器上个月开始折腾博客系统,先后试了两次都没装上:先是 Typecho,再是 Halo。今天终于换了思路,把博客换成了「静态站 + 开放数据接口」的组合,一小时内上线。把过程记下来。
两次失败的安装
Typecho 的镜像在 compose 里跑起来过,但初始化页面始终没能写完——数据库里建了一个 blog 库,里面却一张表都没有。Halo 更典型:容器状态 healthy,但每次访问都被重定向到 /console/setup,初始化流程永远走不完。
回头看,原因基本可以锁定在资源上:这台腾讯云 SA2 是 2 核 2G 的小机型,当时上面同时跑着 MySQL 从库、n8n、Jupyter 等 10 个容器,内存长期吃紧——swap 用到 86%,连 MySQL 都有 766MB 的数据页被换到磁盘。Java(Halo)和 PHP(Typecho)在这种环境下做初始化,安装页超时是必然。
换个思路:静态站 + 数据接口
把「博客」拆成两半:文章是静态 HTML,数据是接口。静态站零常驻内存,Caddy 直接伺服,再大的访问量也只是文件读取;真正「动态」的部分——行情、指数、油价——全部由本机的 quant-api 出数,前端用 ECharts 画图。
结论:2G 内存的小服务器,不值得为「后台编辑器」付常驻内存的代价。写作在本地完成,构建后同步上线,和日常的发布流程天然一致。
顺手修掉的坑
- API 前缀剥除导致 404:旧 Caddy 配置把
/api前缀剥掉再转发,但 quant-api 的路由本身以/api/v1开头,等于所有经域名访问的接口都 404。新配置不剥前缀、直通后端。 - API 密钥暴露风险:浏览器端不携带密钥,由 Caddy 在服务端注入
X-API-Key,前端代码里看不到任何凭据。 - 北向资金数据空洞:north_flow 表 2024-08-16 之后金额全为 NULL——交易所从那天起停发北向当日买卖数据,属于上游政策变化,不是故障;看板里标注说明,接口保留历史数据。
现在的样子
- 首页市场速览:上证、沪深300、布伦特原油实时卡片;
- 数据看板:个股 K 线(搜索 + 成交量 + MA5/MA20)、指数走势、油价走势;
- 数据更新:从库每日自动追平主库,看板打开即最新,零人工干预。
往后的文章会围绕数据管道、商品航运观察和宏观速读展开——每一个数字都能在 接口文档 找到出处。