Stacks
A stack is a host (or cluster) that runs apps. You own the underlying server — it lives in your AWS account, your GCP project, or any provider where you have SSH access. OwnStack provisions and configures the dokku layer on top.
Provider types
| Provider | Used for |
|---|---|
| AWS | EC2 instance(s) provisioned from your AWS credentials. |
| GCP | GCE instance(s) in your GCP project. |
| OpenStack | Private clouds with an OpenStack API. |
| Bring-your-own (SSH) | Any Linux host you can SSH into. Bare metal, DigitalOcean, Hetzner, on-prem, anything. |
| Local | ownstack local stack start runs dokku in a Docker container on your machine for development. |
What's installed on every stack
OwnStack provisioning ensures a working dokku environment — you don't install anything by hand:
- dokku — the underlying PaaS engine.
- Standard plugins — postgres, mysql, mongo, redis, letsencrypt, http-auth.
- nginx — managed by dokku for routing and SSL termination.
- An SSH endpoint — the control plane uses this to push deploys, run dokku commands, fetch logs, and configure the app.
You can install additional dokku plugins as needed:
$ ownstack stack plugin-install --stack=<stack> clamav
Provisioning
Most users create stacks in the dashboard (Stacks → New): pick a provider, add credentials, choose a region, hit provision. The control plane creates the instance, installs dokku, configures nginx, runs healthchecks, and marks the stack ready.
Existing dokku hosts can be imported as SSH-provider stacks — see Bring-your-own (SSH).
What lives on a stack
| Resource | Where it lives |
|---|---|
| App containers | Docker on the stack host. dokku ps:report <app> shows the running set. |
| Postgres / MySQL / Mongo / Redis services | Docker containers on the same host, managed by the matching dokku plugin. Data on the host's disk. |
| nginx vhosts | /home/dokku/<app>/nginx.conf |
| SSL certs | /home/dokku/<app>/tls/ (or letsencrypt's path). |
| App config vars | /home/dokku/<app>/ENV (don't edit by hand — use ownstack config). |
Inspecting
$ ownstack stacks # list all stacks
$ ownstack stack data databases <stack> # databases on the stack
$ ownstack stack data volumes <stack> # persistent volumes
$ ownstack stack disk-usage <stack> # df + dokku disk via SSH
$ ownstack stack patches <stack> # pending dokku/system patches
Scaling a stack
Two paths:
- Vertical — bigger instance type. Provisioned in your cloud account; OwnStack respects whatever you set there. Resize is a stack-restart event, so plan a window.
- Horizontal — multiple stacks, with apps deploying to several. Combined with a load balancer in front (often the cloud provider's), you get an active-active topology.
OwnStack itself does not auto-scale stacks. That's a deliberate choice: stack lifecycle should be visible and explicit.
Backups
Stacks support manual and scheduled backups via ownstack stack backup. Backups capture databases and persistent volumes; storage destination (typically S3) is configured per-stack. See Stack backups.
Read next
- Provider-specific provisioning: AWS, GCP, OpenStack, SSH.
- Stack backups
- Deployments — what happens when an app deploys to a stack.