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
| Category | Templates |
|---|---|
| Web Servers | Nginx, Apache HTTP Server |
| Databases | PostgreSQL, MySQL, Redis, MongoDB |
| Applications | WordPress, Ghost, Uptime Kuma, Gitea |
| AI / ML | Jupyter Notebook, Ollama, ComfyUI |
| Dev Tools | VS Code Server, Adminer, pgAdmin |
Using a Template
Start a New Deployment
Click New Deployment from the Deployments page.
Browse the Template Gallery
Scroll through available templates or use the search bar to filter by name or description.
Select a Template
Click on a template to load its SDL into the editor. Review the manifest to understand what will be deployed.
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.