这个项目能做什么

Levelrail 是一个用 Go 编写的自托管部署平台。根据其 README 的描述,其独特的设计选择是在每个节点上运行一个小型代理,直接与本地 Docker Engine API 通信,而不是由控制平面通过 SSH 登录服务器并执行 docker 命令。通过指向一台或多台 Linux 机器,它旨在充当私有云:将代码推送到 git 仓库,即可获得一个带有 TLS、日志、指标和回滚功能的运行中应用程序。 其描述的核心部署功能包括:使用滚动更新、重建或蓝绿策略实现零停机部署,这些策略基于就绪(readiness)和存活(liveness)探针进行门控,并支持回滚到保留的先前固定镜像。可观测性内置于核心功能中而非单独安装,涵盖 15 秒分辨率的节点本地指标和全文日志搜索,并在指标图表上叠加部署标记,以便将变更与其效果联系起来。 数据库管理通过一个注册表涵盖八个引擎:Postgres、Redis、MySQL、MongoDB、MariaDB、KeyDB、Dragonfly 和 ClickHouse,所有引擎均支持定时备份、恢复和自动备份后验证。 多节点支持包括 WireGuard 网格、跨节点的内部 DNS、隔离(cordon)和排空(drain),且不对托管服务器的入站端口有要求。Git 集成涵盖 GitHub、GitLab 和 Bitbucket 的 Webhooks,以及带有自动销毁功能的每个拉取请求(pull-request)预览环境。访问控制模仿 AWS IAM,采用针对特定资源的 Allow/Deny 策略,并配有支持 CSV 导出的完整审计日志。 告警功能提供阈值、崩溃循环(crashloop)、证书过期和其他规则类型,可发送至包括 Slack、Discord、电子邮件、Telegram、Pushover、PagerDuty、Microsoft Teams、Resend、Gotify、Ntfy、Mattermost、Lark、Rocket.Chat、Opsgenie、Webex、Google Chat 或通用 Webhook 在内的长名单目的地。支撑仪表盘的同一 HTTP API 也支撑一个 MCP 服务器,因此 AI 工具可以列出应用、读取日志并帮助诊断崩溃循环。 根据 README 的架构描述:控制平面是一个单一的 Go 二进制文件,它将声明式资源记录与观察到的 Docker 状态进行协调,这是一种不含 Kubernetes 其他组件的控制器模式;节点代理向控制平面发起连接,并通过 Engine API 使用 Docker socket;Caddy 作为 Go 库嵌入,用于自动 TLS 和域名路由;BuildKit 作为 Go 库而非 docker build 被使用;状态存储在通过 modernc.org/sqlite 实现的 WAL 模式嵌入式 SQLite 中;HTTP API 在 /api/v1 下进行版本管理;前端采用 React、Vite、TypeScript、Tailwind 和 TanStack Router/Query 构建,编译为静态资源并嵌入到控制平面二进制文件中。总共交付两个二进制文件,在单节点模式下,代理传输在进程内运行。 文档记录的安装选项包括:一个为 Linux 提供的 curl 管道安装脚本(同时安装 Docker 和 systemd 单元)、一个使用针对 linux/amd64 和 linux/arm64 发布镜像的 docker run 一行命令,以及使用 Go 从源码构建。本地开发需要 Go 1.26 或更高版本以及 Docker。 状态被明确定义为早期活跃开发阶段,尚无稳定版本;项目表示其尚未准备好用于生产工作负载,且 API、应用规范格式和磁盘数据布局可能会在不通知的情况下发生变化。除了部署路径外,README 列出 IAM 风格的策略引擎、审计日志、特性标志(feature flags)、告警和数据库引擎已交付,并提到一个包含 123 个条目的精选服务模板目录。README 还包含了与 Coolify、Dokploy、CapRover、Dokku 和 Kamal 的详细对比,包括承认在模板目录规模上的差距;这些竞争主张是项目根据其对比文档进行的自我定位。许可协议为 Apache 2.0。