一句话
不是把容器跑起来就算结束,而是让它以后还能查、能更、能回滚。
Kairo Auth Stack 是我用自己的域名搭建的一套临时测试邮箱:Cloudflare Email Routing 接收邮件,Worker 处理,D1 保存,再由本地 Docker 服务和检查脚本负责管理。它适合测试自己网站的登录邮件、为不同项目建立邮箱别名,以及学习一封邮件如何从域名进入数据库。
项目不只解决“能不能收到邮件”,还把配置、运行数据、诊断、更新和回滚整理成一套以后仍能维护的流程。
为什么做它
原始组件各自都能工作,真正麻烦的是它们连在一起之后:
- 邮件收不到时,不知道问题在 DNS、Email Routing、Worker 还是数据库;
- 服务看似启动成功但健康检查失败时,不知道是配置、客户端版本还是上游连接;
- 镜像更新依赖
latest,更新后很难判断代码和依赖发生了什么变化; .env、运行数据和日志很容易被误传到公开仓库。
这个项目解决的是这些“跑起来之后”的问题。
我做了什么
统一命令入口
.\kas.ps1 init
.\kas.ps1 doctor
.\kas.ps1 update
.\kas.ps1 snapshot
.\kas.ps1 test
初始化、诊断、升级和审计不再依赖散落的临时命令。
启动前安全阻断
如果配置里仍有 CHANGE_ME,程序会拒绝启动。真实 .env、运行数据和本地审计快照全部被排除在 Git 之外。
分层健康检查
Doctor 不只看“容器是不是 Up”,还会分层检查 Docker、目标服务、依赖发现、配置占位符和本地安全状态。
上游版本审计
更新前保存镜像元数据与配置备份;需要深入比较时,把上游文件提取到本地私有审计区,再对两个版本做 Diff。审计快照不会进入公开 Git。
邮件基础设施
邮件 → Email Routing → Worker → D1 → 本地测试任务
子域名、Catch-all、Worker 绑定名和数据库连接任意一处配置错误,都会让收信链路中断。项目把这些依赖关系拆成可以逐层验证的检查项。
当前结果
- 可以使用自有子域名接收测试邮件;
- 邮件由 Worker 处理并保存到 D1;
- 1 个统一 CLI 入口;
- 4 个独立维护脚本;
- 自动拒绝默认密码配置;
- 可复现的上游快照与升级流程;
- 一份私人排错记录和一篇经过安全改写的公开复盘;
- 一份独立的第三方声明和安全策略。
开源边界
产品中的编排、检查工具、维护流程和公开文档使用 MIT License。第三方运行时继续适用各自的许可证与使用边界,项目不重新分发许可证不明确的源码或镜像。
项目只公开通用的部署维护、安全检查和版本审计方法,不提供第三方账号自动化、验证码绕过、凭证导出或规避平台限制的操作教程。
现在做到哪里
v0.1.0 已完成结构、Compose、PowerShell 语法、图片链接和敏感信息检查。GitHub 仓库暂未发布,先作为 Kairo 的真实实验作品持续验证。