Towbar
  • Docs
  • Security
  • Status
Open dashboard
  1. Towbar
  2. Docs
  3. deployment.yml

deployment.yml

Versioned, strict, and the complete desired configuration.

DocumentationGetting starteddeployment.ymlSourcesServersSecretsDeploymentsDomains and TLSSecurity

Example

version: 1
servers:
  - ip: 203.0.113.10
    ssh:
      username: deploy
      port: 22
    secrets:
      login: aws:towbar/production/server-login
    proxy:
      cloudflare:
        apiToken: aws:towbar/production/cloudflare

apps:
  - id: towbar-web-app
    name: Towbar dashboard
    description: Private deployment control plane
    server: 203.0.113.10
    context: .
    dockerfile: apps/towbar-web-app/Dockerfile
    container:
      port: 4021
    health:
      path: /health
      timeoutSeconds: 60
    secrets:
      build: aws:towbar/production/web/build
      deployment: aws:towbar/production/web/runtime
    domains:
      primary: app.towbar.dev
      redirects:
        - host: dashboard.towbar.dev
          status: 302
    tls:
      mode: cloudflare-dns

Stable identity

App id is mandatory and unique. Rename name freely without losing deployment or release history. If an ID disappears, Towbar archives it; when it returns, Towbar restores it.

Secret references

References use provider:value syntax. Version 1 supports aws:secret-name. The referenced value must be a JSON object: SSH login uses an unencrypted privateKey; build and deployment bundles use flat string key/value pairs.

Private Docker networks

container.network is optional. Declare it only when an app must join an existing Docker network, such as an API reaching a private database; ordinary apps remain isolated on Docker's default bridge.

Towbar

Opinionated manual deployments to Ubuntu servers you own.

© 2026 Towbar
Back to top
Product
DocumentationJSON SchemaStatus
Legal
PrivacyTerms