jabali CLI reference: every command with flags
Last updated
The jabali binary is one cobra root with subcommands. Run jabali --help or jabali <cmd> --help for live flags.
This page lists every shipped subcommand grouped by area, with the one-line Short description from the binary and the exact verbs/flags. (Generated from panel-api/cmd/server/*.go.)
Global
jabali --help
jabali --version
jabali version # commit + runtime info
jabali serve # start the panel-api HTTP(S) server
jabali update # pull latest, rebuild, migrate, restart
jabali repair [--diagnose | --auto | --all --yes]
jabali diagnostic # encrypted diagnostic bundle
jabali release list # show current release + channel
jabali release promote [commit-ish] # promote a build to the stable channel
Users & auth
jabali user list # all panel users (direct DB, M20-safe)
jabali user create --username --email --package --primary-domain [--password]
jabali user delete <email|username|user-id>
jabali user password <email|username|user-id> # rotate (auto-generated if omitted)
jabali user 2fa-reset <email|username|user-id> # strip TOTP + recovery codes
jabali user --link <email> # emit Kratos recovery URL
jabali user suspend <id> # suspend user (cascade)
jabali user unsuspend <id> # reverse cascade
jabali user reprovision <email|username|id> # re-sync Linux account with DB state
jabali user-token list <user-email|id>
jabali user-token mint <user-email|id> --name <name> # mint API token, secret shown once
jabali user-token revoke <token-id>
jabali automation-token list # no secrets exposed
jabali automation-token mint <name>
jabali automation-token revoke <id>
jabali ssh-key list [--user <user>]
jabali ssh-key add
jabali ssh-key delete <key-id>
jabali package list
jabali package create
jabali package edit <package-id>
jabali package delete <package-id>
jabali package apply <package-id> # re-apply limits to all users
jabali account-restore # bypass-UI account restore
jabali session list [--user <user>]
jabali session revoke <session-id>
jabali session revoke-user <email-id> # sign out everywhere
Domains
jabali domain list # direct DB, M20-safe
jabali domain create --user <id> --name <fqdn> [--php <ver>]
jabali domain enable <name|id>
jabali domain disable <name|id>
jabali domain delete <name|id> # reconciler tears down nginx
jabali domain browse <name> [path]
jabali domain email-enable <domain-id> # generate DKIM
jabali domain email-disable <domain-id> # keep DKIM key
jabali domain email-dkim-rotate <domain-id> # ADR-0043 rotate
jabali domain php-version set <domain>
jabali domain php-settings get <domain>
jabali domain php-settings set <domain>
jabali domain dir-privacy add <domain> --path /dir
jabali domain dir-privacy remove <domain> <rule-id>
jabali domain dir-privacy cred-add <domain> <rule-id> --user <name>
jabali domain dir-privacy cred-list <domain> <rule-id>
jabali domain ip-acl list <domain>
jabali domain ip-acl add <domain>
jabali domain ip-acl delete <acl-id>
jabali domain catchall show|set|clear <domain>
jabali domain disclaimer show|set|clear <domain>
PHP applications
jabali app registry # available app types + schema
jabali app list [--user <id>]
jabali app get <install-id|domain-name>
jabali app install --user <id> --domain <name> --app wordpress
jabali app delete <install-id|domain-name>
jabali app clone <src-install-id> # WordPress only today
jabali app cache <install-id> # enable/disable WordPress cache
jabali app cache-doctor [--repair] # detect + optionally repair cache drift
jabali app refresh-cache-plugin # update jabali-cache plugin on all sites
jabali app scan # find unregistered apps under a homedir
jabali app magic-link <install-id> # 60 s one-time login link
Docker apps
jabali docker-app catalog # list catalog entries
jabali docker-app install <slug> # install a docker app
jabali docker-app list
jabali docker-app status <id> # full state (DB row + agent)
jabali docker-app delete <id> # uninstall + row removal
jabali docker-app logs <id> # tail container logs
jabali docker-app update <id> # pull image + recreate stack
jabali docker-app edit <id> # edit domain/ports (container stops)
jabali docker-app patch <id> # update settings (update mode, CPU/mem/PID)
jabali docker-app env # view / edit / regenerate env vars
jabali docker-app regenerate <id> <KEY> # mint a fresh generated secret
jabali docker-app exec <id> -- <cmd> # one-off command in container
jabali docker-app backup-create <id>
jabali docker-app backups <id> # list restic snapshots
jabali docker-app restore <id> <snapshot-id>
jabali docker-app parity # audit DB rows vs docker reality
jabali docker-app engine status # daemon health + userns-remap + storage
jabali docker-app tenant <sub> # tenant-scoped mirror commands
Python apps
jabali python-app list
jabali python-app create # same validation as UI
jabali python-app start|stop|restart|reload <app-id>
jabali python-app logs <app-id>
jabali python-app delete <app-id> # stop + remove unit; files kept
jabali python-app env get <app-id>
jabali python-app env set <app-id> KEY=VAL [KEY=VAL ...]
jabali mailbox list [domain]
jabali mailbox create --email <e> [--quota-mib N] [--send-only]
jabali mailbox delete <email>
jabali mailbox set-quota <email> <mib>
jabali mailbox passwd <email> # auto-generated if --password omitted
jabali mailbox forwarder list <email>
jabali mailbox forwarder add <email>
jabali mailbox forwarder remove <forwarder-id>
jabali mailbox autoresponder set|show|clear <email>
jabali mailbox shares list <owner-email>
jabali mailbox shares add
jabali mailbox shares remove <share-id>
jabali mail-group list [domain]
jabali mail-group create <domain> <local-part>
jabali mail-group delete <group-id>
jabali mail-group add-member <group-id> <member-email>
jabali mail-group remove-member <group-id> <member-email>
jabali mail-group set-members <group-id> [members]
jabali mail-group set-resources <group-id> # toggle shared collections
jabali mail deliverability # per-domain score
DNS
jabali dns list # all zones
jabali dns record list <domain>
jabali dns record add <domain> --name <n> --type <T> --content <v>
jabali dns record update <domain> <record-id>
jabali dns record delete <domain> <record-id>
jabali dnssec enable <domain> # generate KSK + ZSK
jabali dnssec disable <domain>
jabali dnssec status <domain>
jabali dnssec ds <domain> # DS records for the registrar
jabali pdns backfill # sync recursor.forwards with DB
SSL
jabali ssl list
jabali ssl enable <domain> # cert within ≤60 s
jabali ssl disable <domain> # cert will be revoked
jabali ssl renew <domain>
jabali ssl issue [hostname|mail]
jabali ssl toggle [hostname|mail]
jabali cert set-custom # install custom cert + key
jabali mail-cert enable|disable|show <domain>
jabali mail-cert reissue <domain> # clear backoff, re-issue
jabali mail-cert mta-sts <domain> # ADR-0109 toggle
jabali panel-cert status
jabali panel-cert issue [hostname|mail]
jabali panel-cert toggle [hostname|mail]
jabali panel-cert skip-auto-san <domain> # opt in/out of auto-SAN
Databases
jabali db list
jabali db create
jabali db delete
jabali db backup <db-id|db-name> # returns .sql path
jabali db restore <db-id|db-name>
jabali db processes
jabali db kill <process-id>
jabali db config get
jabali db config set param=value [param=value ...]
jabali db root-password rotate
jabali db user list
jabali db user create
jabali db user delete
jabali db user grant
jabali db user rotate-password <db-user-id>
Backups
jabali backup destination list
jabali backup destination create
jabali backup destination get <id-or-name>
jabali backup destination update <id>
jabali backup destination delete <id>
jabali backup destination test <id> # connectivity
jabali backup destination rotate-password <id> # rotate restic password
jabali backup retention apply # restic forget + prune
jabali backup schedule list
jabali backup schedule create
jabali backup schedule get <id>
jabali backup schedule update <id>
jabali backup schedule delete <id>
jabali backup schedule run-now <id> # trigger immediately
jabali backup scheduler tick # one enqueue+dispatch pass (sync)
Cron
jabali cron list [--user <user>]
jabali cron add # 5-field cron, allowlisted
jabali cron update <job-id>
jabali cron delete <job-id>
jabali cron run-now <job-id> # sync
jabali cron http-trigger <url> # internal self-domain fetcher
Migrations
jabali migrate up # run pending DB migrations
jabali migrate import # run/resume 4-stage pipeline
jabali migrate pull-source # SSH + pull backup tarball
jabali migrate imap # migrate remote IMAP into a mailbox
jabali migrate import-wp # import staged WP migration
jabali migrate refresh # force re-pull already-migrated account
jabali migrate restore # offline restore from cpmove
jabali migrate reap-secrets # wipe per-job env files
Security
# CrowdSec
jabali crowdsec decisions list|add|delete
jabali crowdsec allowlists list|add|remove
jabali crowdsec alerts # list / inspect
jabali crowdsec blocklists list # or refresh
jabali crowdsec geoblock set # mode + countries
jabali crowdsec captcha set # remediation config
# AppArmor / AIDE
jabali apparmor status # profiles + modes
jabali apparmor flip-mature # LEARNING -> ENFORCED
jabali aide status # DB age + last check
jabali aide check # on-demand integrity check
jabali aide rebuild # re-baseline after deliberate change
# Malware
jabali malware scan <path|username>
jabali malware scan-status <session-id>
jabali malware events
jabali malware quarantine list
jabali malware quarantine restore <id>
jabali malware quarantine delete <id>
jabali malware yara list
jabali malware yara upload <file.yar>
jabali malware yara delete <filename>
jabali malware yara toggle <filename>
jabali malware settings set
jabali malware-purge # hard-delete old quarantine rows
# UFW + PHP defense
jabali ufw status
jabali ufw rule add <ip|address>
jabali ufw rule delete <num>
jabali php-defense # PHP defense operator commands
Notifications
jabali notification channels list
jabali notification channels create --name <n> --kind <email|slack|discord|ntfy|webhook|webpush|sms> --config <json>
jabali notification channels delete <id>
jabali notification channels test <id>
jabali notification events list
jabali notification events set <event-kind> --enabled <true|false>
jabali notification broadcast --title <t> [--body <b>] [--severity ...]
jabali notification dlq list
jabali notification dlq replay <id>
jabali notification dlq replay-all
jabali notification dlq drop <id>
jabali notification dlq clear
Audit
jabali audit query [--user <u>] [--domain <d>] # recent audit events
jabali audit verify # recompute hash chain, report tamper
jabali audit prune --days <n> # delete rows older than N days
PHP versions & pools
jabali php version list
jabali php version install <version>
jabali php ext list <version>
jabali php pool list
jabali php pool get <user>
jabali php pool set <user> # set user's PHP version
jabali php pool create
jabali php pool delete <pool-id>
jabali php pool reapply-all # mark all pools pending (re-render)
jabali php pool ini list <pool-id>
jabali php pool ini add <pool-id>
jabali php pool ini update <override-id>
jabali php pool ini remove <override-id>
System & admin
jabali settings get
jabali settings set key=value [key=value ...]
jabali service start|stop|restart|reload|enable|disable
jabali admin diag bundle # encrypted support tarball
jabali admin sso rotate-key
jabali admin sso reap # sweep orphan jabali-sso-*.php files
jabali admin slice cutover # M9 per-user PHP pool slice cutover (one-time)
jabali admin panel primary # set / show panel primary user
jabali disk-usage show <username|id>
jabali disk-usage refresh <user-email|id>
jabali nspawn list
jabali nspawn build # debootstrap immutable rootfs
jabali nspawn prune # remove sealed images not pinned
jabali per-user-egress get <email-id>
jabali per-user-egress set-policy <email-id>
jabali per-user-egress requests # pending admin queue
jabali impersonation create --admin <a> --target <u> # 60-min grant
jabali impersonation list [--admin <a>]
jabali impersonation end <grant-id>
jabali ip-manager list
jabali ip-manager add <address>
jabali ip-manager delete <id>
jabali ip-manager update <id>
jabali shared-resource list <domain>
jabali shared-resource create
jabali shared-resource remove <id>
jabali shared-resource grants <id>
jabali shared-resource grant <id>
jabali shared-resource revoke <id>
jabali backfill-usernames # assign username to users missing one
jabali log access # mint / revoke log-stream grants
jabali log list
jabali log create --user <u> --type <t> [--domain <d>] # 15-min grant
jabali limits apply <username> # re-apply effective limits
jabali limits check # probe host for M18 prerequisites
jabali files list <path>
jabali files read <path>
jabali files download <path> --out <f>
jabali files write <path>
jabali files mkdir <path>
jabali files chmod <path> <mode>
jabali files move <path>
jabali files copy <path> --to <dest>
jabali files archive <path...> --out <f> # tar.gz
jabali files extract <archive-path>
New since the last CLI reference
Docs before this rewrite pre-dated whole subsystems. New / substantially expanded areas:
python-app— Python 3.8–3.14 apps managed as systemd units (see Python Apps).docker-app— 40+ compose stacks with catalog, install, backups, tenant mirror (see Docker Apps).backup destination/backup schedule— multi-destination restic (ADR-0080), replaces the older single-backup applyflow.crowdsecallowlists / geoblock / captcha / blocklists — beyond just decisions.malwareYARA + quarantine + settings — full malware surface.notificationDLQ + replay + broadcast + WebPush + ntfy channels — ADR-0094.audit— unified tamper-verified audit log (ADR-0106).domain dir-privacy/ip-acl/email-dkim-rotate/catchall/disclaimer— per-domain admin surface expanded.mailbox forwarder/autoresponder/shares/mail-group— full user mail surface.per-user-egress— M34 per-user firewall policies + admin request queue.shared-resource— M52 shared mail resources (calendars, contacts, files).impersonation/session revoke-user/log access— extended operator tooling.release list/release promote— release channel + promotion pipeline.