Docs/ Deployment/ Templates

Templates

Deploy popular applications in seconds with sh0's template catalog. Browse 170+ pre-configured templates for databases, web frameworks, developer tools, and more.

Template Catalog

The template catalog is accessible from New AppTemplates in any stack. Each template includes a pre-configured Docker image, default environment variables, volume mounts, and health checks -- everything needed to get a service running immediately.

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

Templates are searchable by name, category, or tag. You can also filter by category using the sidebar navigation.

Template search bar with filter results showing database templates

Template Categories

Templates are organized into the following categories:

CategoryExamplesCount
DatabasesPostgreSQL, MySQL, MariaDB, MongoDB, Redis, ClickHouse18
Web FrameworksWordPress, Ghost, Strapi, Directus, Payload CMS22
Developer ToolsGitea, Drone CI, Verdaccio, SonarQube, Sentry19
MonitoringGrafana, Prometheus, Uptime Kuma, Netdata12
CommunicationMattermost, Rocket.Chat, n8n, Chatwoot10
StorageMinIO, Nextcloud, Seafile, Garage9
AnalyticsPlausible, Umami, Matomo, PostHog8
NetworkingNginx, Traefik, WireGuard, Pi-hole7
OtherVaultwarden, Planka, Bookstack, Outline14

One-Click Deploy

Deploying a template takes a single click. Select a template from the catalog, review the default settings, and hit Deploy. sh0 handles everything:

  1. Pulls the Docker image from the configured registry
  2. Creates named volumes for persistent data
  3. Sets up environment variables with secure defaults (random passwords are generated automatically)
  4. Configures health checks for the service
  5. Provisions a domain at app-name.your-domain.com
  6. Issues an SSL certificate via Caddy
One-click deploy confirmation screen for PostgreSQL with generated credentials
Tip
sh0 generates strong random passwords for every template that requires credentials. These are stored securely in the app's environment variables and are accessible from the dashboard.

Customizing Before Deploy

Before deploying, you can customize any template setting:

  • App name: Choose a name for your service (used in the URL)
  • Image tag: Select a specific version (e.g., postgres:16 vs postgres:15)
  • Environment variables: Override any default values
  • Resource limits: Set CPU and memory limits for the container
  • Volume size: Specify storage allocation for persistent data
  • Domain: Assign a custom domain instead of the default subdomain
Template customization form with fields for name, image version, environment variables, and resource limits
Note
All template settings can be changed after deployment. The customization screen simply lets you set initial values before the first deploy.

Creating Custom Templates

You can create your own templates to standardize deployments across your team. Custom templates are defined in YAML and can be added through the dashboard or placed in the templates/ directory on your sh0 server.

Template Format

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:

The undefined} placeholder is replaced with a secure random string at deploy time. Other available placeholders include undefined} and undefined}.

Sharing Templates

Custom templates placed in the templates/ directory are available to all users on your sh0 instance. You can organize them into subdirectories by category.

Template directory structure
templates/
  databases/
    my-postgres-cluster.yaml
    my-redis-sentinel.yaml
  web/
    company-api.yaml
    company-frontend.yaml
Tip
Custom templates appear alongside built-in templates in the catalog. They are visually distinguished with a "Custom" badge so your team can easily identify them.