ownstack ssh
Into the running container
$ ownstack ssh app <app> [--stack=<stack>]
Drops you into a bash shell inside a running web container. $DATABASE_URL and friends are set; you can run rails console, node, etc.
Onto the stack host
$ ownstack ssh stack <stack>
Drops you onto the stack as the ubuntu user via the control-plane proxy. For OS-level operations: dokku plugin installs, log file inspection, disk operations.
Direct SSH (bypass the proxy)
Add your local public key to the stack once:
$ ownstack stack add-key <stack>
Key added. You can now connect directly:
ssh ubuntu@203.0.113.10
Then connect directly — no control plane involved:
$ ssh ubuntu@<stack-ip>
Auto-detects ~/.ssh/id_ed25519.pub, id_rsa.pub, or id_ecdsa.pub. Use --key=PATH for a different key. Idempotent — safe to run again.
Direct dokku SSH (advanced)
$ ssh dokku@<stack-ip> apps:list
$ ssh dokku@<stack-ip> ps:report <app>
$ ssh dokku@<stack-ip> logs <app> --tail
$ ssh dokku@<stack-ip> postgres:list
Your account's SSH key is authorized for dokku@<stack-ip> when you provision a stack. Run any dokku subcommand — these bypass the OwnStack control plane.
If you SSH and run dokku ps:scale, config:set, etc., the change happens but the control plane doesn't see it. Most things are fine; some aren't (multi-stack syncing, audit logs). Prefer the CLI when an equivalent exists.
One-off commands
$ ownstack remote run <app> rails db:migrate
Spawns a fresh container, runs the command, exits. Doesn't share state with the running web/worker.