文档 / 入门 / 首次部署

首次部署

在五分钟内在 sh0 上部署你的第一个应用。本指南将带你完成每个步骤,从创建堆栈到看到应用上线。

概述

在 sh0 上部署应用遵循一个简单的流程:

  1. 创建堆栈 -- 堆栈将相关服务组合在一起(如应用及其数据库)。
  2. 添加应用 -- 将 sh0 指向 Git 仓库或选择模板。
  3. 配置域名 -- 分配域名或使用默认的 *.sh0.app 子域名。
  4. 部署 -- sh0 自动构建并启动你的应用。
  5. 验证 -- 访问你的应用并确认一切正常。
Tip
在本指南中,我们将从公共 Git 仓库部署一个简单的 Node.js 应用。你可以使用自己的项目跟随操作,也可以使用我们的示例仓库。

第一步:创建堆栈

堆栈是 sh0 中的顶级组织单元。可以将堆栈理解为一个项目文件夹,将应用与其相关服务(数据库、缓存、工作进程)组合在一起。

  1. 在控制台中,点击右上角的 新建堆栈 按钮。
  2. 为堆栈输入名称(例如 my-first-app)。
  3. 可选地添加描述以便日后识别堆栈。
  4. 点击 创建堆栈。
New Stack dialog with a name field showing 'my-first-app', a description field, and a Create Stack button
Creating a new stack

新堆栈出现在堆栈列表中。点击它可打开堆栈详情视图,在这里你将添加第一个应用。

Empty stack detail view with an 'Add App' button prominently displayed in the center, plus tabs for Apps, Environment, Settings
A fresh stack ready for its first app

第二步:添加应用

在堆栈内,点击 添加应用。你可以从 Git 仓库、Docker 镜像或预构建模板进行部署。

从 Git 仓库

最常见的部署方式。提供 Git URL,sh0 处理其余事务:

  1. 选择 Git 仓库 作为来源。
  2. 输入仓库 URL。本示例使用我们的演示应用:
    Repository URL
    https://github.com/sh0-dev/demo-node-app
  3. 选择要部署的分支(默认为 main)。
  4. sh0 自动检测项目技术栈(Node.js、Python、Go 等)并选择适当的构建配置。
  5. 点击 添加应用。
Add App form showing Git Repository selected, with a URL field containing a GitHub URL, branch selector set to 'main', and auto-detected stack showing 'Node.js'
Adding an app from a Git repository
私有仓库
对于私有仓库,你需要先连接 Git 提供商。前往 设置 > Git 提供商 链接你的 GitHub、GitLab 或 Bitbucket 账户。或者,你可以添加部署用 SSH 密钥。

从模板

如果你想部署热门应用而无需编写任何代码,请使用模板:

  1. 选择 模板 作为来源。
  2. 浏览或搜索模板库(170+ 个选项,包括 WordPress、Ghost、Plausible、Uptime Kuma 等)。
  3. 点击模板查看其详情——所需资源、包含的服务和默认配置。
  4. 点击 部署模板。
Template gallery showing a grid of application templates with icons, names, and descriptions -- WordPress, PostgreSQL, Redis, Ghost, Plausible, Uptime Kuma visible
Browse over 170 one-click deploy templates

第三步:配置域名

每个应用都需要域名才能访问。sh0 提供两个选项:

默认子域名

sh0 自动分配类似 my-first-app.sh0.app 的子域名。无需 DNS 配置——非常适合测试。

自定义域名

使用你自己的域名(例如 app.yourdomain.com)。需要添加指向服务器 IP 的 A 记录。SSL 自动配置。

要为应用配置域名:

  1. 在应用设置中,前往 域名 选项卡。
  2. 点击 添加域名。
  3. 输入域名(或保留默认的 .sh0.app 子域名)。
  4. 如果使用自定义域名,请在 DNS 提供商处添加指向服务器 IP 地址的 A 记录。
  5. 点击 保存。sh0 将自动配置 SSL 证书。
Domain configuration tab showing a domain input field, DNS instructions with the server IP, and an SSL status indicator showing 'Certificate Active'
Adding a custom domain with automatic SSL

第四步:部署

应用配置完成后,就可以部署了。点击 部署 按钮。sh0 将执行以下操作:

  1. 克隆 Git 仓库(或拉取 Docker 镜像)
  2. 检测项目技术栈并生成 Dockerfile
  3. 构建容器镜像
  4. 启动新容器并运行健康检查
  5. 配置反向代理以路由流量
  6. 将部署标记为上线
Deployment progress view showing a real-time build log with steps: Cloning repository, Detecting stack (Node.js 20), Building image, Starting container, Running health check, Configuring proxy -- each with a green checkmark
Real-time deployment progress with build logs

你可以实时查看构建日志。典型的 Node.js 应用部署需要 30-90 秒,取决于依赖项大小。

构建缓存
sh0 在构建之间缓存 Docker 层。后续部署速度显著加快,因为只需重新构建更改的层。缓存的 Node.js 构建通常在 15 秒内完成。
Build log showing detailed output: npm install progress, dependency tree, build output, and final container start confirmation
Detailed build output during deployment

第五步:验证

部署完成后,你的应用即已上线。验证其运行状态:

  1. 点击应用概览中显示的域名链接,在新标签页中打开应用。
  2. 检查应用状态指示器——应显示绿色的 运行中 标记。
  3. 在 部署 选项卡中查看部署条目以了解完整历史。
App overview page showing status 'Running' with a green badge, the domain link, resource usage (CPU, memory), uptime, and deployment history below
Your app is live and running

你也可以通过命令行验证:

Terminal
curl -I https://my-first-app.sh0.app
Response
HTTP/2 200
content-type: text/html; charset=utf-8
server: Caddy
x-powered-by: sh0
DNS 传播
如果你使用自定义域名,DNS 更改可能需要最长 24 小时在全球传播,但大多数更新在几分钟内完成。等待期间可使用默认的 .sh0.app 子域名立即访问。

下一步

恭喜——你的第一个应用已部署。以下是一些建议的后续步骤: