
开发运营
让平台持续在线的基础设施与发布工作:从托管云迁移到自托管 Kubernetes 的生产环境迁移,全程无停机记录;部署在 Cloudflare 之后的 Docker 化服务,推送即发布的 CI/CD,以及通过应用商店审核的移动端发布。备份、TLS 与监控是工作本身的一部分,而非额外项。
一套自托管的家庭实验室:支撑整个工作室,每天维护
工作室自己的基础设施,运行在自托管的 Kubernetes 集群上,于 2026 年 2 月规划,此后每天维护:网站、CMS 和 MCP 服务器,以及它负责维护的客户平台,都通过 Cloudflare 隧道提供服务;每个数据库每晚导出并校验;指标和告警规则推送到手机;家门之外有一个宕机监控;还有一个容器镜像仓库和一个 npm 仓库;一个私有控制台把合并、运行、镜像、Pod 和节点汇集在同一个页面上。
托管 CI 成了最慢的一环,于是构建搬回了家
构建和部署从 GitHub 的托管 runner 搬到了家中的一个 runner 池。过去每次运行都从一台全新机器开始,发布还要等排队、等故障恢复;现在由一台构建机在线时承接每个任务,常开服务器上的备用 runner 则由一个看门狗看守,一旦拿不准,它优先保证还能继续发布。镜像进入私有容器镜像仓库,工作室的程序库进入私有 npm 仓库,两者都在自家环境内,每次运行的记录也会归档,留存时间超过 GitHub 的保留期。最慢的部署从八分二十四秒缩短到三分零五秒,CI 也快了三分之一。
一个节点变成了集群,没有任何应用需要改动
第二台可随时关机的机器加入了一个正在运行的单节点集群,没有改动任何应用。常开服务器保存控制平面、每个数据库和卷以及每个服务的第一个副本;构建机在 taint 之后承担构建任务和无状态服务的第二个副本,它休眠时这些副本会等待,而不是退回常开服务器。工作结束时它自行关机,有任务进入队列时再回来;一个控制台展示每个节点、每个工作负载和每段可用时间;常开服务器上的每一项 CPU request 都经过测量,使其预留从可分配量的 84% 降到 56%。
Fully Booked - Docker 化部署,使用 DigitalOcean 和 Cloudflare
Fully Booked 以五个 Docker 服务的形式上线,部署在 Cloudflare 后面的一台 DigitalOcean droplet 上,让一个很小的团队也能运营一个托管定金的市场平台。一个仓库构建所有镜像,一个 compose 文件和一个 Makefile 把发布简化为 pull、build 和 up,Caddy 代理负责证书和安全头,Playwright 在服务器上渲染每一份报价单和发票的 PDF。由于各服务从一开始就相互独立,后来无需重建就迁移到了自托管的 Kubernetes 集群。
27 Pearls:移动发布和商店提交
一款已完成的 27 Pearls 应用,在为期一周的合作中成为 App Store 和 Google Play 上获批的商店页面,没有经历任何一轮拒审。这一周包括发布构建与签名、围绕学生收益撰写的商店文案、覆盖每种必需设备尺寸的截图、与应用实际收集的数据相符的隐私声明,以及一个可用的审核账号。这款应用至今仍在 Google Play 上。
我构建的其他领域
MCP 服务器把真实平台开放给 AI 助手,Agent 流水线在人工审批关卡之后完成真正的编辑工作,还有让这一切在生产环境持续运转的基础设施。它们作为系统构建,经过认证、限定范围并被审计,从来不是演示品。
可嵌入的组件,把平台带到别人的网站上。借助 Prebooked 小部件,小巴或大巴运营商可以在自己的网站上直接提供预订,由背后的 Fully Booked 平台支撑,客户无需离开页面即可完成预订。安装轻便,并与它所扩展的产品保持同样的标准。












