文档/ 部署/ 模板

模板

使用 sh0 的模板目录在几秒内部署热门应用。浏览 170+ 个预配置模板,涵盖数据库、Web 框架、开发工具等。

模板目录

模板目录可通过任何堆栈中的 新建应用模板 访问。每个模板包含预配置的 Docker 镜像、默认环境变量、卷挂载和健康检查——让服务立即运行所需的一切。

Template catalog grid showing popular templates like PostgreSQL, Redis, WordPress, and Nginx

模板支持按名称、类别或标签搜索。你也可以使用侧边栏导航按类别筛选。

Template search bar with filter results showing database templates

模板类别

模板按以下类别组织:

类别示例数量
数据库PostgreSQL、MySQL、MariaDB、MongoDB、Redis、ClickHouse18
Web 框架WordPress、Ghost、Strapi、Directus、Payload CMS22
开发者工具Gitea、Drone CI、Verdaccio、SonarQube、Sentry19
监控Grafana、Prometheus、Uptime Kuma、Netdata12
通信Mattermost、Rocket.Chat、n8n、Chatwoot10
存储MinIO、Nextcloud、Seafile、Garage9
分析Plausible、Umami、Matomo、PostHog8
网络Nginx、Traefik、WireGuard、Pi-hole7
其他Vaultwarden、Planka、Bookstack、Outline14

一键部署

部署模板只需一次点击。从目录中选择模板,查看默认设置,然后点击 部署。sh0 处理所有事务:

  1. 从配置的镜像仓库拉取 Docker 镜像
  2. 为持久化数据创建命名卷
  3. 使用安全默认值设置环境变量(自动生成随机密码)
  4. 为服务配置健康检查
  5. app-name.your-domain.com 上配置域名
  6. 通过 Caddy 签发 SSL 证书
One-click deploy confirmation screen for PostgreSQL with generated credentials
Tip
sh0 为每个需要凭据的模板生成强随机密码。这些密码安全存储在应用的环境变量中,可从控制台访问。

部署前自定义

部署前可以自定义任何模板设置:

  • 应用名称:为服务选择名称(用于 URL)
  • 镜像标签:选择特定版本(例如 postgres:16postgres:15
  • 环境变量:覆盖任何默认值
  • 资源限制:设置容器的 CPU 和内存限制
  • 卷大小:指定持久化数据的存储分配
  • 域名:分配自定义域名代替默认子域名
Template customization form with fields for name, image version, environment variables, and resource limits
Note
所有模板设置在部署后都可以更改。自定义界面只是让你在首次部署前设置初始值。

创建自定义模板

你可以创建自己的模板来标准化团队的部署。自定义模板以 YAML 定义,可通过控制台添加或放置在 sh0 服务器的 templates/ 目录中。

模板格式

templates/my-api.yaml
name: My API Template
description: Standard Node.js API with PostgreSQL
icon: server
category: web-frameworks
tags:
  - nodejs
  - api
  - postgresql

services:
  api:
    image: node:20-alpine
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
      DATABASE_URL: postgres://user:pass@db:5432/api
    healthcheck:
      path: /health
      interval: 30s
    volumes:
      - uploads:/app/uploads

  db:
    image: postgres:16
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: "{{random_password}}"
      POSTGRES_DB: api
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  uploads:
  pgdata:

undefined} 占位符在部署时会被替换为安全的随机字符串。其他可用占位符包括 undefined}undefined}

共享模板

放置在 templates/ 目录中的自定义模板对 sh0 实例上的所有用户可用。你可以按类别将它们组织到子目录中。

Template directory structure
templates/
  databases/
    my-postgres-cluster.yaml
    my-redis-sentinel.yaml
  web/
    company-api.yaml
    company-frontend.yaml
Tip
自定义模板与内置模板一起显示在目录中。它们以「自定义」标记进行视觉区分,便于团队识别。