clouderized.yaml Reference

Every field explained — written by the operator, read by the platform

clouderized.yaml is the platform config for your app — written by the Clouderized operator during onboarding, not committed to your repo. It tells the platform what port your app listens on, what tier to run it on, and how to route traffic. You don't edit this file directly; if you need a change (e.g. a new env var, a different port), contact the operator.

Full example

clouderized.yaml
customer: acme
app: backend
tier: pro
port: 8080
domain: acme-backend.clouderized.com

healthcheck:
  path: /health
  interval: 30s
  timeout: 10s

volumes:
  - name: uploads
    mount: /app/uploads

env:
  PORT: "8080"
  LOG_LEVEL: info

custom_domains:
  - api.acme.com

# JVM apps only — set automatically by the provisioner
jvm_opts: "-Xms256m -Xmx1536m"
stop_signal: SIGKILL

Required fields

customer string · required

Your Clouderized account name. Used as a namespace for all your containers and networks. Set by the operator at signup — do not change.

app string · required

The name of this specific app. Combined with customer to form the container name: customer-app. Lowercase, no spaces.

tier string · required

Determines the resource limits applied to your container.

Value Memory CPU Rate limit
starter 512 MB 0.5 vCPU 50 req/s avg, 100 burst
pro 2 GB 2 vCPU 1000 req/s avg, 1500 burst

JVM/Scala apps require Pro — 512 MB is insufficient for stable JVM operation.

port integer · required

The port your app listens on inside the container. Traefik routes external HTTPS traffic to this port. Must match your app's actual bind port — commonly 8080, 3000, or 8000.

domain string · required

The primary domain assigned to your app — always in the form customer-app.clouderized.com. Set by the operator. Use custom_domains to add your own domain on top.

Optional fields

healthcheck object · optional

Configures the Traefik load balancer health check. If omitted, defaults are used (path: /, interval: 10s, timeout: 5s).

FieldDefaultDescription
path/HTTP path Traefik probes
interval10sHow often to probe
timeout5sProbe timeout before marking unhealthy

Expose a GET /health endpoint that returns HTTP 200 for best results. A slow or missing health endpoint will delay traffic routing after deploys.

volumes list · optional

Extra persistent bind mounts beyond the default /app/data. Each entry has a name (used for the host directory) and a mount (container path).

volumes:
  - name: uploads      # host dir: ./data/app/uploads/
    mount: /app/uploads
  - name: cache
    mount: /app/cache

All volumes survive redeploys. Every app also gets /app/data automatically — no need to declare it here.

env map · optional

Static environment variables baked into the compose config. Use these for non-secret config like PORT, LOG_LEVEL, or APP_ENV. Secret values (DB passwords, API keys) should be set as Gitea repo secrets instead — they are written to app.env by the deploy workflow and never committed.

env:
  PORT: "8080"
  LOG_LEVEL: info
  APP_ENV: production
custom_domains list · optional

Additional domains to route to your app. Your customer-app.clouderized.com domain always works regardless. Point your domain's DNS to Clouderized before the operator adds it here.

custom_domains:
  - api.yourdomain.com
  - www.yourdomain.com
jvm_opts JVM / Scala apps only

JVM flags injected via JAVA_TOOL_OPTIONS. Set automatically by the provisioner for JVM-based apps — you rarely need to set this manually. Controls heap size and GC tuning within the container's memory limit.

# Pro tier — 2 GB limit, heap capped at 1.5 GB
jvm_opts: "-Xms256m -Xmx1536m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
stop_signal JVM / Scala apps only

Signal sent to the container on stop/restart. Set to SIGKILL for JVM apps — the JVM ignores SIGTERM, so skipping straight to SIGKILL avoids a 30-second shutdown delay. Set automatically by the provisioner when a JVM base image is detected.

Minimal example

Only the five required fields — everything else uses defaults.

customer: acme
app: backend
tier: starter
port: 3000
domain: acme-backend.clouderized.com