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#

CommandStatus
apps:list, apps:create, apps:destroy [--force], apps:rename, apps:clone, apps:lock, apps:unlock, apps:exists, apps:reportWorks
config:show, config:get [--quoted], config:set [--no-restart] [--encoded], config:unset, config:keys, config:export [--format], config:clear, all with --global and --mergedWorks
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.

CommandStatus
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 serviceJokku 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:reportWorks
registry:login [--password-stdin] <server> <username> [<password>], registry:logout, registry:reportWorks logins apply to every app
ps:rebuildWorks
releasesJokku onlyWorks
git:sync [--build], git:from-archivePlanned
git:generate-deploy-key, git:public-key, git:allow-host, git:authPlanned
docker-options:add ... build (build args)Planned
releases:rollbackJokku onlyPlanned
herokuish, CNB, nixpacks and railpack buildersNot planned for now: Dockerfiles, compose files and images

Processes and resources#

CommandStatus
ps:scale <app> [type=n ...] [--skip-deploy], ps:report, ps:set (restart-policy)Works
ps:start, ps:stop, ps:restartWorks
resource:limit [--process-type] [--cpu] [--memory], resource:limit-clear, resource:reportWorks applied with a rolling restart
checks:set (wait-to-retire, timeout), checks:reportWorks
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:skipPlanned
run (a one-off instance)Planned
ps:inspectNot planned use ps:report
resource:reserveNot planned in a microVM, the limit is the reservation

Routing#

CommandStatus
domains:add, domains:remove, domains:set, domains:clear, domains:report, and the -global variantsWorks
proxy:enable, proxy:disable, proxy:reportWorks
letsencrypt:enable, letsencrypt:disable, letsencrypt:set (email), letsencrypt:reportWorks off for new apps, as in Dokku
certs:add, certs:remove, certs:reportPlanned
ports:list, ports:add, ports:set, ports:remove, ports:clearPlanned apps listen on $PORT for now
nginx:*Not planned Caddy replaces nginx

Storage and services#

CommandStatus
storage:mount <app> <name>:<path> [--process-type] [--size] [--no-restart], storage:unmount, storage:list, storage:reportWorks 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 instancesPlanned
postgres:*, redis:*, ... as apps plus volumes plus *:linkPlanned
backups:destination-add <name> --endpoint --bucket [--region] --access-key-id [--no-encrypt], backups:destinations, backups:destination-remove, backups:keyJokku 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:reportJokku onlyWorks incremental, block by block
Scheduled backups, and restoring onto another server automatically when one diesJokku onlyPlanned
storage:ensure-directoryNot planned volumes are disks, created by storage:mount
plugin:*Not planned

Cluster#

CommandStatus
cluster:join-command [--ttl 1h] [--reusable] (prints an install.sh --join one-liner)Jokku onlyWorks
cluster:reportJokku onlyWorks
nodes:list, nodes:report, nodes:set (schedulable, ingress)Jokku onlyWorks
nodes:drain, nodes:undrainJokku onlyWorks
nodes:remove [--force]Jokku onlyWorks
events [<app>] [-n N]Jokku onlyWorks
top, a live dashboard of servers, apps, instances, events and trafficJokku onlyWorks
Updating every server from the control serverPlanned
A replicated control serverPlanned

Access and server#

CommandStatus
ssh-keys:add <name> [file] (or stdin), ssh-keys:remove [--fingerprint], ssh-keys:list [--format json]Works
ssh jokku@host <command>, with nothing installed locallyWorks
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