简介
sh0 是一个自托管部署平台,将所需的一切打包进单个二进制文件。无需 YAML 清单、无需容器编排复杂性——只需推送代码即可运行。
什么是 sh0?
sh0 是你安装在自己服务器上的部署平台。它处理应用的整个生命周期——从将源代码构建为容器、配置自动 SSL 的反向代理、到监控运行时间和管理备份。
与需要云账户和月费订阅的传统 PaaS 方案不同,sh0 完全运行在你控制的基础设施上。一台每月 5 美元的 VPS 就足以开始,平台随你的需求增长而扩展。
单二进制文件架构
整个 sh0 平台以单个编译的 Rust 二进制文件发布。除 Docker 外没有运行时依赖——不需要 Node.js、Python、Java 或外部数据库。控制台、API 服务器、反向代理管理器、构建系统和监控引擎全部编译到一个可执行文件中。
这种架构意味着安装只需几秒、更新只需替换一个文件,并且生产环境中很少有可能出故障的组件。
核心组件
| 组件 | 技术 | 角色 |
|---|---|---|
| 核心引擎 | Rust + Axum | API 服务器、构建编排、部署逻辑 |
| 反向代理 | Caddy | HTTPS 终止、自动 Let's Encrypt、路由 |
| 容器运行时 | Docker Engine | 构建镜像、运行容器、网络管理 |
| 数据库 | SQLite | 配置、部署历史、指标存储 |
| 控制台 | Svelte 5 + SvelteKit | 嵌入在二进制文件中的 Web UI,通过 9000 端口提供服务 |
它替代了什么
sh0 旨在消除拼凑多个工具来在自己的服务器上部署应用的需要。以下是使用 sh0 前后典型自托管设置的对比:
不使用 sh0
- -- 每个应用手动执行 Docker 命令
- -- 需要维护 Nginx/Traefik 配置文件
- -- 用于 SSL 续期的 Certbot cron 任务
- -- 每个项目的自定义 CI/CD 流水线
- -- 独立的监控和告警工具
- -- 手动备份脚本
使用 sh0
- + 一个二进制文件,一条命令安装
- + 自动反向代理配置
- + 通过 Let's Encrypt 自动配置 SSL
- + 内置 Git 推送即部署
- + 内置监控、指标和告警
- + 定时备份到 S3/R2
工作原理
当你运行 sh0 serve 时,二进制文件会启动以下几个子系统:
- API 服务器 -- Axum HTTP 服务器监听 9000 端口,同时提供控制台和 REST API。
- Caddy 管理器 -- sh0 启动并管理一个 Caddy 实例作为子进程,在你添加域名时动态更新其配置。
- Docker 客户端 -- 通过 Unix socket 与 Docker Engine 通信,用于构建镜像、创建容器和管理网络。
- 后台工作进程 -- 处理计划任务,如备份执行、健康检查、SSL 证书续期和指标收集。
核心功能
Git 推送即部署
连接 Git 仓库,每次推送时自动部署。支持 GitHub、GitLab、Bitbucket 和任何 Git URL。
170+ 模板
一键部署热门技术栈——WordPress、PostgreSQL、Redis、Ghost、Plausible 等。
自动 SSL
每个域名都获得免费的 Let's Encrypt 证书,由 Caddy 自动配置和续期。
蓝绿部署
零停机部署和即时回滚。旧版本保持运行直到新版本通过健康检查。
数据库管理
配置 PostgreSQL、MySQL、MariaDB、MongoDB 或 Redis,支持自动备份和连接字符串注入。
多服务器
通过添加远程节点扩展到单台服务器之外。sh0 通过 SSH 隧道在服务器群组间部署容器。
部署流程
以下是使用 sh0 部署应用时的流程:
1. Source Code -- Git clone or image pull
2. Stack Detection -- Auto-detect language and framework
3. Build -- Generate Dockerfile, build container image
4. Health Check -- Verify the new container starts and responds
5. Route -- Update Caddy reverse proxy configuration
6. Live -- Traffic flows to the new container
7. Cleanup -- Remove old container (kept for rollback)下一步
准备好开始了吗?按照安装指南在一分钟内在服务器上运行 sh0。