Scaling

2 min read

Vertical scaling

There's no in-CLI resize — your server's CPU/RAM/disk are whatever your VPS provider gave it. To size up:

  1. Resize the instance through your provider's console/CLI (most support a live or reboot resize)
  2. Once it's back up, teploy needs nothing re-run — your existing deploy state, containers, and Caddy config are untouched

Horizontal scaling

Run the same app across multiple servers with teploy.yml:

app: myapp
domain: myapp.com
servers:
  - web1
  - web2
  - web3
parallel: 3
teploy deploy

teploy deploy deploys to all listed servers (in parallel, up to parallel at once, or --parallel N) and updates the load balancer's upstream list. If any server fails, the servers that already succeeded are automatically rolled back so the fleet never ends up split across two versions.

Scale to more app-role servers directly:

teploy scale 5

This deploys to N app-role servers from servers.yml and updates the load balancer.

Per-process replicas

Run multiple replicas of a single process (e.g. the web process) on one server:

processes:
  web: "npm start"
replicas: 3

Caddy load-balances across the replicas.

App resource limits

Not yet configurable through teploy.yml — there's no memory:/cpus: field today. Containers run without a Docker resource limit unless you set one yourself (e.g. in a custom Dockerfile ENTRYPOINT wrapper, or by editing the container's runtime limits directly). If you need this, treat it as a gap to raise, not a supported feature.

Auto-scaling

Not supported. Horizontal scaling is manual — add a server to servers.yml, add it to teploy.yml's servers: list, deploy.