RayNode 自托管部署复盘

一次小服务器上部署 Next.js 个人站的真实复盘:远端构建失败、本地 standalone 产物、systemd、Caddy 和回滚边界。

writing.track部署与自动化

关于 RayNode、证据生成、质量门禁和可追溯发布的工程复盘。

让部署、验证和证据不再是聊天记录里的隐性知识。
read.use("raynode-standalone-deployment")适合引用到哪里

read.context("zh-reference")

  • 飞书阶段复盘
  • GitHub issue
  • PR 说明
  • 路线图审查

RayNode 自托管部署复盘

这次部署最有价值的部分不是“服务器最终能访问”,而是中途暴露了一个更真实的约束:小型 ECS 不应该承担当前 Next.js 项目的 production build。

远端 npm ci 和内容校验都没问题,但 next build 卡在 optimized production build 后,SSH banner、HTTP response、HTTPS handshake 都开始超时。这个现象比任何主观判断都清楚:构建不是运行,运行链路必须更轻。

#失败就是信号

如果一次部署把 sshd 和 Caddy 都拖到无法及时响应,它就不是“再等等”的问题,而是架构信号。把失败解释成偶发网络问题,会让下一次部署继续踩同一个坑。

这次更合理的判断是:RayNode 应该成为 runtime host,而不是 build host。Next.js standalone output 正好适合这个边界。

#运行产物和源码分离

源码仓库应该留在 /srv/apps/elegant-developer-studio,运行产物应该释放到 /srv/apps/elegant-developer-studio-runtime。这两个目录分开后,回滚、排查和下一次更新都更清楚。

systemd 只需要跑 node server.js,Caddy 只负责 TLS 和反代。这个结构不华丽,但足够可查。

#部署也是产品可信度

个人主页不是只有视觉和内容。RSS、sitemap、robots、canonical、服务状态、回滚路径和运维记录,都会影响一个访问者和搜索引擎如何判断这个站点。

所以部署文档不应该是附录。它应该进入项目地图,成为这个 Studio 的可信度层。