sixnix-deskctl
For whoever is running the desk.
sixnix-deskctl runs a desk’s maintenance tasks. It finds the web container and runs there, so the long
docker compose exec -u www-data web php artisan in front of everything is not something you type.
curl -fsSL -o /usr/local/bin/sixnix-deskctl https://registry.sixnix.net/install/sixnix-deskctlchmod +x /usr/local/bin/sixnix-deskctlRun it from the directory holding docker-compose.yml. If you would rather run it from anywhere, set
DESK_DIR to that directory.
It is not sixnix-desk
There are two CLIs and they do unrelated things.
sixnix-deskworks one project’s issues over the API, from anywhere, with an automation key. For CI jobs, scripts and assistants. See Automation keys and the CLI.sixnix-deskctladministers an installation, on the machine it is installed on. This page.
What it does
This is sixnix-deskctl help, which is where it comes from. If the two ever disagree, believe the
command.
Everyday status which services are running, and whether they are well version the release this desk is on logs [service] [-f] what the containers are saying tail the desk's own log, followed shell a shell where the application lives tinker a REPL with the desk's database behind it
Backups backup take one now: the database and the files backups what backups there are restore [NAME] put one back, replacing what is here. Asks first.
People admin EMAIL create an administrator, or reset one's password
Workers workers the queue workers, and whether each is running workers restart restart them without restarting the container
Upgrading upgrade back up, fetch the new compose file and image, and bring it up upgrade --dry-run say what would change, and change nothing
Upkeep migrate apply any pending database changes migrate:status what is applied and what is pending optimize rebuild the desk's caches after a configuration change cache:clear empty the application cache queue:restart tell the workers to pick up new code queue:failed jobs that gave up queue:retry ID|all put them back mail:poll fetch from the mailboxes now, rather than waiting knowledge:refresh re-read knowledge sources that are due
Demonstration data demo [--scale=N] fill this desk with invented brands, tickets and issues to look at demo --undo take it all out again
Moving in blesta:import-tickets import tickets from a Blesta Support Manager. Try --dry-run first.
Anything else artisan COMMAND … run an artisan command directly. Everything is reachable this way; the list above is what you are likely to want.
DESK_DIR=/path where the desk is, if you are not standing in itWhy the list is short
Laravel ships around a hundred and fifty commands. Most mean nothing to somebody running a support desk,
and a few of them end it. The short list is what you are likely to want; everything else is still there
behind sixnix-deskctl artisan ….
Four are refused by name rather than hidden, so that somebody reaching for one is told why:
migrate:fresh, migrate:reset, migrate:refresh, db:wipe | every ticket, client and setting, with no undo |
queue:flush, queue:clear | queued work, mail waiting to go out, drafts, indexing |
Each refusal names the command that would have been the right one instead, and tells you how to insist if you really mean it.
What it deliberately will not tell you
sixnix-deskctl status says which services are running. It does not say whether the desk is well, and the
difference matters: a queue with no worker looks perfectly healthy from outside. The desk’s own answer to
that is Settings → Health, which watches the heartbeat the scheduler writes.
The reason it is not here: the only command that touches the heartbeat records one. Calling it from
status would make a desk whose scheduler had stopped insist it was fine, which is worse than the
question going unanswered.