Deployment Templates

Pre-built SDL manifests for common applications to get you running quickly.

Overview

Templates are ready-to-deploy SDL configurations for popular software. Instead of writing a manifest from scratch, pick a template, customize the resources and environment variables, and deploy in seconds.

Templates are a starting point. Always customize resource profiles to match your actual workload -- the defaults are intentionally conservative.

Available Templates

CategoryTemplates
Web ServersNginx, Apache HTTP Server
DatabasesPostgreSQL, MySQL, Redis, MongoDB
ApplicationsWordPress, Ghost, Uptime Kuma, Gitea
AI / MLJupyter Notebook, Ollama, ComfyUI
Dev ToolsVS Code Server, Adminer, pgAdmin

Using a Template

1

Start a New Deployment

Click New Deployment from the Deployments page.

2

Browse the Template Gallery

Scroll through available templates or use the search bar to filter by name or description.

3

Select a Template

Click on a template to load its SDL into the editor. Review the manifest to understand what will be deployed.

4

Customize and Deploy

Adjust resources, environment variables, and storage as needed. Then click Create Deployment to submit.

Customizing Templates

Adjust Resources

Modify the profiles.compute section to allocate more or less CPU, memory, and storage:

profiles:
  compute:
    web:
      resources:
        cpu:
          units: 2        # default might be 0.5
        memory:
          size: 2Gi       # default might be 512Mi
        storage:
          - size: 20Gi    # default might be 5Gi

Set Environment Variables

Add or override environment variables in the services section:

services:
  app:
    image: wordpress:latest
    env:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wp
      - WORDPRESS_DB_PASSWORD=your-secure-password
      - WORDPRESS_DB_NAME=wordpress

Configure Storage

Add persistent storage for data that should survive container restarts:

services:
  db:
    image: postgres:15-alpine
    params:
      storage:
        data:
          mount: /var/lib/postgresql/data
          source: uploads

Example: WordPress with MySQL

A complete two-service template:

version: "2.0"
services:
  wordpress:
    image: wordpress:latest
    expose:
      - port: 80
        as: 80
        to:
          - global: true
    env:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wp
      - WORDPRESS_DB_PASSWORD=changeme
      - WORDPRESS_DB_NAME=wordpress

  db:
    image: mysql:8
    env:
      - MYSQL_ROOT_PASSWORD=changeme
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wp
      - MYSQL_PASSWORD=changeme
    params:
      storage:
        data:
          mount: /var/lib/mysql
          source: uploads

profiles:
  compute:
    wordpress:
      resources:
        cpu:
          units: 1
        memory:
          size: 1Gi
    db:
      resources:
        cpu:
          units: 0.5
        memory:
          size: 1Gi
        storage:
          - size: 10Gi

deployment:
  wordpress:
    anywhere:
      profile: wordpress
      count: 1
  db:
    anywhere:
      profile: db
      count: 1

Creating Custom Templates

You can write your own SDL from scratch. Start with the basic structure:

version: "2.0"
services:
  myapp:
    image: your-image:tag
    expose:
      - port: 8080
        as: 8080
        to:
          - global: true

profiles:
  compute:
    myapp:
      resources:
        cpu:
          units: 1
        memory:
          size: 512Mi

deployment:
  myapp:
    anywhere:
      profile: myapp
      count: 1

See the Advanced SDL guide for environment variables, multi-service setups, and storage configuration.