Reference
Commands
Every command, and what works today. Jokku keeps Dokku's command names, argument order and output, except where noted.
Every row has a status: WorksJokku onlyReplaces Dokku’sPlannedNot planned. A command marked Replaces Dokku’s takes over from a Dokku command, named beside it.
Run any of them over SSH as ssh jokku@your-server <command>, or on the server as sudo jokku <command>.
Apps and config#
| Command | Status |
|---|---|
apps:list, apps:create, apps:destroy [--force], apps:rename, apps:clone, apps:lock, apps:unlock, apps:exists, apps:report | Works |
config:show, config:get [--quoted], config:set [--no-restart] [--encoded], config:unset, config:keys, config:export [--format], config:clear, all with --global and --merged | Works |
config <app> (alias of config:show) | Works |
Deploys#
How an app is built is the one area that departs from Dokku. Dokku has no compose builder, and choosing a builder and its file takes commands in several namespaces. In Jokku it is one command: builder:dockerfile, builder:compose or builder:image.
| Command | Status |
|---|---|
git push jokku main (creates the app if needed; builds and deploys with zero downtime) | Works |
git:set, git:report (deploy-branch, keep-git-dir) | Works |
builder:dockerfile <app> [<path>], the default builder (replaces builder:set selected and builder-dockerfile:set dockerfile-path) | Replaces Dokku’sWorks |
builder:compose <app> [<path>]: deploy a compose file, a process type per service | Jokku onlyWorks |
builder:image <app> <image> (replaces git:from-image; pulls the image and creates the app if needed) | Replaces Dokku’sWorks |
builder:set (build-dir, procfile), builder:report | Works |
registry:login [--password-stdin] <server> <username> [<password>], registry:logout, registry:report | Works logins apply to every app |
ps:rebuild | Works |
releases | Jokku onlyWorks |
git:sync [--build], git:from-archive | Planned |
git:generate-deploy-key, git:public-key, git:allow-host, git:auth | Planned |
docker-options:add ... build (build args) | Planned |
releases:rollback | Jokku onlyPlanned |
| herokuish, CNB, nixpacks and railpack builders | Not planned for now: Dockerfiles, compose files and images |
Processes and resources#
| Command | Status |
|---|---|
ps:scale <app> [type=n ...] [--skip-deploy], ps:report, ps:set (restart-policy) | Works |
ps:start, ps:stop, ps:restart | Works |
resource:limit [--process-type] [--cpu] [--memory], resource:limit-clear, resource:report | Works applied with a rolling restart |
checks:set (wait-to-retire, timeout), checks:report | Works |
logs [-t] [-n N] [-p type] [-q], with app[router] lines per request (-p router for only those) | Works |
enter <app> [<process>] [<command>...] (a shell, or one command, in a running instance; --root) | Works |
checks:enable, checks:disable, checks:skip | Planned |
run (a one-off instance) | Planned |
ps:inspect | Not planned use ps:report |
resource:reserve | Not planned in a microVM, the limit is the reservation |
Routing#
| Command | Status |
|---|---|
domains:add, domains:remove, domains:set, domains:clear, domains:report, and the -global variants | Works |
proxy:enable, proxy:disable, proxy:report | Works |
letsencrypt:enable, letsencrypt:disable, letsencrypt:set (email), letsencrypt:report | Works off for new apps, as in Dokku |
certs:add, certs:remove, certs:report | Planned |
ports:list, ports:add, ports:set, ports:remove, ports:clear | Planned apps listen on $PORT for now |
nginx:* | Not planned Caddy replaces nginx |
Storage and services#
| Command | Status |
|---|---|
storage:mount <app> <name>:<path> [--process-type] [--size] [--no-restart], storage:unmount, storage:list, storage:report | Works named volumes instead of host directories |
storage:create [--size] [--type], storage:resize, storage:move <app> <name> <node>, storage:destroy [--force] | Jokku onlyWorks |
storage:export <app> <name> [--live], storage:import <app> <name> [--clear] [--keep-owners] | Jokku onlyWorks |
Object-storage volumes (--type s3), shared by many instances | Planned |
postgres:*, redis:*, ... as apps plus volumes plus *:link | Planned |
backups:destination-add <name> --endpoint --bucket [--region] --access-key-id [--no-encrypt], backups:destinations, backups:destination-remove, backups:key | Jokku onlyWorks S3-compatible buckets; encrypted with a key you keep |
backups:set <app> <volume> <destination> [<path>], backups:unset, backups:run, backups:list, backups:restore <app> <volume> [<backup>] [--node] [--skip-backup], backups:report | Jokku onlyWorks incremental, block by block |
| Scheduled backups, and restoring onto another server automatically when one dies | Jokku onlyPlanned |
storage:ensure-directory | Not planned volumes are disks, created by storage:mount |
plugin:* | Not planned |
Cluster#
| Command | Status |
|---|---|
cluster:join-command [--ttl 1h] [--reusable] (prints an install.sh --join one-liner) | Jokku onlyWorks |
cluster:report | Jokku onlyWorks |
nodes:list, nodes:report, nodes:set (schedulable, ingress) | Jokku onlyWorks |
nodes:drain, nodes:undrain | Jokku onlyWorks |
nodes:remove [--force] | Jokku onlyWorks |
events [<app>] [-n N] | Jokku onlyWorks |
top, a live dashboard of servers, apps, instances, events and traffic | Jokku onlyWorks |
| Updating every server from the control server | Planned |
| A replicated control server | Planned |
Access and server#
| Command | Status |
|---|---|
ssh-keys:add <name> [file] (or stdin), ssh-keys:remove [--fingerprint], ssh-keys:list [--format json] | Works |
ssh jokku@host <command>, with nothing installed locally | Works |
jokku update [--yes] [--version vX] (asks first; backs up and rolls back) | Jokku onlyWorks |
jokku setup (repair or reapply server setup) | Jokku onlyWorks |
tokens:create, tokens:list, tokens:remove (an HTTPS API for CI and tools) | Jokku onlyPlanned |