deployment.yml
Versioned, strict, and the complete desired configuration.
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-dnsStable 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.