Skip to main content
All pages in this manual

When you are stuck

The `sixpanel` command line

What this page is for: run your server from an SSH prompt — especially when the panel itself will not open.

You need

  • SSH access to the server.
  • Nothing else. The installer put the tool on the box. It is called sixpanel, and sp is the same tool with a shorter name.

The tool must run as root. On most cloud images you log in as ubuntu or opc — type the command anyway and it re-runs itself through sudo, asking for your password once. In a script it prints the exact sudo sixpanel … line to use instead, so nothing hangs waiting on a prompt you cannot see.

One exception: a project's own account. When you have turned on Let an agent work on the server itself on a project's AI agent page, that project's account (six-<name> or site-<name>) may run a short list of sixpanel commands for its own project, without root — see As a project's own account below.

Start with these three

sixpanel                  the menu — everything below, by number
sixpanel doctor           what is wrong, and the fix under each failure
sixpanel logs nginx -f    watch a service's log live

sixpanel on its own opens a numbered menu. It starts with your panel link and how many services are running, then lists actions. Pick a number. If an action fails you get the reason and the menu again — never a bare shell prompt.

The five you will actually use

1. Find out what is wrong

sudo sixpanel doctor
sudo sixpanel doctor --self

Every check prints a tick, a warning or a cross, and every failure carries the same one-line fix the panel's Health tab shows.

2. Read a log

sudo sixpanel logs nginx -n 50
sudo sixpanel logs app -f
sudo sixpanel logs php --since 10m --grep 'PHP Fatal'
sudo sixpanel logs laravel -n 100

Targets: any service name, app (php + queue + scheduler + nginx together), all, or laravel for the application's own log file. Everything except laravel comes out of the system journal, which is where systemd keeps each service's output. -f follows the log until you press Ctrl-C.

3. Clear the caches after a settings change

sudo sixpanel cache clear

This is the answer to most "I changed a setting and nothing happened" reports. It clears the application's cached configuration, rebuilds the fast caches and restarts the workers.

4. Restart the website

sudo sixpanel service restart app

The classic "turn it off and on again" for the site. The panel keeps running.

5. Send support one file

sudo sixpanel support-bundle

It writes one .tgz — by default into /root/ — with versions, the health report, service states, disk usage and the last 500 lines of every log. Send us that file and most questions are answered in one round trip. What is removed before it is written: the stack settings file is reduced to key names only, the panel's own state file is not included at all, and the secret code in your panel link plus common password-looking values are masked in the collected logs.

And when the panel itself is down, tell AllsWeb support

sudo sixpanel report "the panel stopped after the update"

It files the same problem report as the panel's Report a problem button, and it works when that button cannot — the panel's page will not load, or the panel will not start. It attaches systemctl status sixpanel, the panel's last 300 journal lines, how its last run ended when it has failed, and the rest of the report's diagnostics, all masked the same way. It shows a summary and asks before sending; --preview prints the whole masked report and sends nothing, --yes skips the question. You get the ticket number and its link, or, when AllsWeb cannot be reached, it waits in the panel's outbox and the panel sends it later. See Problem reports.

The ones that get you back in

Each of these undoes one lock, over SSH, in one line. This is the reason root SSH matters as much as your panel password.

sudo sixpanel username           forgot the name you type on the login page
sudo sixpanel password reset     forgot the panel password
sudo sixpanel 2fa off            lost the phone with the 6-digit codes
sudo sixpanel domain none        the panel's own domain broke
sudo sixpanel entry-code reset   the secret link leaked
sudo sixpanel allowlist clear    the login IP allowlist shut you out
sudo sixpanel block clear        you blocked an address you needed
sudo sixpanel unlock             too many failed logins locked your address out
sudo sixpanel origin-lock off    the server is turning away everyone but Cloudflare

sixpanel unlock on its own lists what is locked and why, and changes nothing. Add an address, or all, to let it log in again. It is the answer to "my password is right and the panel still will not take it" — after enough failed tries the panel refuses that address for 30 minutes, and one of the two counters doing it is not written to any file, so there is nothing on the server to read that would explain it.

sixpanel 2fa off forgets the phone you set up, so your next login shows a fresh QR code to scan with the new one. Two-factor stays on and staying on is the recommendation. If you have no phone at that moment the enrolment screen also offers Not now — continue without two-factor login, which is a real way through — it is written to your activity log, and from then on your password alone opens the panel until you enrol again from the Security page.

sixpanel origin-lock is for the other kind of lockout — not the panel refusing you, but the server refusing everybody. The origin lock makes every site this panel manages close the connection unless the visitor arrived through Cloudflare, and if one of your addresses stops resolving to Cloudflare, that address goes dark. sudo sixpanel origin-lock status says whether the lock is on and what it is turning away; sudo sixpanel origin-lock off lifts it. Both work with the panel down. It cannot be switched on from here on purpose — arming it is only safe after every address on the server has been checked, and the panel is what does that check, in Cloudflare → "Refuse visitors that skip Cloudflare".

Two more, for the logins you gave to other people:

sudo sixpanel temp-login              list the temporary logins
sudo sixpanel temp-login revoke-all   delete every one of them
sudo sixpanel demo off                switch the public demo login off

Every one of them says what it will change and asks before it does it. See Security for what each lock does, Let someone else in for the two shared logins, and When something is broken for the symptoms that lead here.

Which of these work when the panel is down

The sixpanel tool is an ordinary program on the machine, not a client for a server that has to be up. The services it talks to are systemd units and the files it reads are on disk, so almost everything keeps working with the panel stopped: info, url, version, logs, every service command, ssl status, disk, prune, top, cache clear, the db commands, sql, exec, artisan, support-bundle, report, server firewall, server os-update, server reboot, password reset, username, entry-code, domain, port, 2fa off, sso, temp-login, demo off, allowlist, block, unlock, backup targets, backup password and deploy history.

Some of those change something the panel keeps in memory. With the panel up they are applied straight away. With it down, the tool stops the panel, writes, and starts it again — that takes ten to twenty seconds and it announces each stage, so a pause is not a hang.

Needs the panel, or its own switch: doctor. Use sixpanel doctor --self for the host-only checks that need nothing from the panel. That is the one to run when the panel will not start.

Runs the panel's own engine: backup run, backup list, backup restore, deploy and deploy rollback. These work when the panel is running normally, and also when it is fully stopped. They refuse in the middle state — a running panel this tool cannot talk to — and tell you which of two things to do: install the small helper (sudo apt-get install -y python3) or do that one action in the panel.

Getting help

sixpanel help              every command, grouped
sixpanel help logs         one command, with examples
sixpanel logs --help       the same thing
sixpanel cheatsheet        the ones people actually use, on one screen
man sixpanel               the manual page

Press Tab to complete commands, service names and project names.

Typed something that is not a command? It suggests the closest ones, including two-word commands: sixpanel restore points at sixpanel backup restore, sixpanel firewall at sixpanel server firewall. It will never offer a command that reboots or deletes something as a guess for an unrelated word.

Safety rules that are true everywhere

  • Anything that cannot be undone tells you what changes, what restarts and how to undo it, then asks.
  • Anything that deletes data makes you type the target's name — the database name, or the stack path. --yes does not skip that one.
  • A password is never accepted as an argument. Use sudo sixpanel password reset (it generates one and prints it), or let your shell read it without showing it:

  read -rs NEW && printf '%s' "$NEW" | sudo sixpanel password --stdin
  • sixpanel server update updates SixPanel. sixpanel deploy updates your own 6ammart code. See Update SixPanel itself.
  • sixpanel port random moves the panel to a new random port. It does not restore an old one; to go back, name it: sixpanel port 41397.

Full reference — you will not need most of this

Everything above is the part people use. What follows is the complete surface, for the day you want to look something up. Skip it until then.

This list mirrors the CLI's own command table. If the two ever disagree, sudo sixpanel help is the truth.

Panel — its address, password and lifecycle

CommandWhat it does
sixpanel panel urlPrint just the panel's secure login URL
sixpanel panel openThe panel URL, large, with a QR code you can scan
sixpanel panel port [<n>|random]Show, set, or randomise the panel's port
sixpanel panel entry-code [reset]Show, or replace, the secret code at the end of your panel URL
sixpanel panel domain <domain>|nonePoint the panel at your own domain, or undo it
sixpanel panel username [set <name>|reset]Show, or change, the name you type on the login page
sixpanel panel password resetSet a new admin password and print it
sixpanel panel 2fa offForget the two-factor phone; the next login enrols a new one
sixpanel panel sso [off]Show, or switch off, one-click sign-in from your AllsWeb dashboard
sixpanel panel temp-login [revoke-all]Show, or delete, the short-term logins you gave to helpers
sixpanel panel demo offSwitch the public read-only demo login off
sixpanel panel allowlist [clear]Show, or switch off, the login IP allowlist that can lock you out
sixpanel panel block [<ip>|clear [<ip>]]Show, add or remove addresses that cannot reach the panel at all
sixpanel panel unlock [<ip>|all]Show what failed logins have locked out, and let an address back in
sixpanel panel ip-access [show|open]Show whether the panel still answers on its IP address and port, and reopen it
sixpanel panel restartRestart just the panel service

Creating a temporary login, and switching the demo login on, are done in the panel and not here. Both hand out a password that is shown exactly once, and both deserve the warning that is on the screen at the time. See Let someone else in.

Each of these also works without the word panel: sixpanel url, sixpanel password reset, sixpanel allowlist clear, and so on.

Services — the systemd units that run your site

CommandWhat it does
sixpanel service listEvery service on this server: state, health, uptime
sixpanel service status [<name>...|all]State of the named services (default: all)
sixpanel service start <name>...|all|appStart services
sixpanel service stop <name>...|all|appStop services
sixpanel service restart <name>...|all|appRestart services
sixpanel service enable <reverb|react>Turn on an optional service
sixpanel service disable <reverb|react>Stop an optional service until the next start

Service names: db, redis, nginx, panel, php, queue, scheduler, reverb, react. With several projects, each project has its own php-SLUG, queue-SLUG, scheduler-SLUG, reverb-SLUG and react-SLUG.

Behind those short names are ordinary systemd services: db is mariadb.service, redis is redis-server@six-<project>.service (one per project — the bare name is the default project's, and redis-<project> names another's), php is your release's PHP-FPM service — php8.5-fpm.service on Ubuntu 26.04 (one service, with one pool per project); the Server page shows the exact version your box runs. The per-project workers are sixpanel-queue@<slug>.service, sixpanel-schedule@<slug>.timer, sixpanel-reverb@<slug>.service and sixpanel-react@<slug>.service. You never have to use those names — but if you already know systemd, systemctl status on any of them works exactly as you expect.

Two shortcuts: all is every service this server defines, including every project's. app is php + queue + scheduler + nginx for the current project — the "restart my website" set.

Projects — one 6ammart install each

CommandWhat it does
sixpanel project listEvery 6ammart project on this server
sixpanel project show <slug>One project: domains, services, disk, install state
sixpanel project create <slug>[panel] Add another 6ammart project
sixpanel project delete <slug>[panel] Remove a project and its database
sixpanel project deploy <slug>[panel] Deploy one project's code

Database

db import replaces everything in that database. Every table in this project's database is replaced by the contents of the file you name. Orders, users and settings that the file does not contain are gone, and nothing takes a copy for you first. Take one yourself before you start: sudo sixpanel db dump -o /root/before.sql.gz. The command then makes you type the database name to confirm, and --yes does not skip that. When the file is a whole shop, tables it does not contain are removed as well once it has loaded — the same as Database → Import in the panel — so the next step does not stop on a table that "already exists". When it finishes, run sudo sixpanel db migrate and then sudo sixpanel cache clear — in that order.

CommandWhat it does
sixpanel db infoDatabase size, table count, biggest tables, engine version
sixpanel db dump [-o FILE]Write a gzipped dump of this project's database
sixpanel db import <file.sql[.gz]>Replace this project's data with a dump
sixpanel db console [--root]Open an interactive MariaDB prompt
sixpanel db slow [-n N]The slowest queries the database has recorded
sixpanel db migrate [--pretend]Run this project's pending Laravel migrations

Backups

CommandWhat it does
sixpanel backup run [full|db|files]Take a backup now and stream its log
sixpanel backup listSnapshots in the backup repository, newest first
sixpanel backup targetsBackup destinations and their last run
sixpanel backup restore <snapshot>Restore a snapshot over the live data; --site NAME puts back one website instead
sixpanel backup passwordReveal the backup encryption password (root only)

A restore writes over your live database and files, and backup password prints a secret to your terminal in plain text. Both are explained on Backups.

Deploying your 6ammart code

CommandWhat it does
sixpanel deployDeploy your 6ammart code: pull, migrate, cache, restart workers (needs the 6amMart addon, or a shop covered from before addons)
sixpanel deploy previewWhat a deploy would pull, without touching anything
sixpanel deploy history [-n N] [--repo admin|website]Recent deploys and how they ended
sixpanel deploy rollback <commit|last>Put the previous release back

This server

server uninstall --purge-data cannot be undone by anything on this server. Without --purge-data the command stops and switches off the services: your databases, uploaded files, certificates and local backups stay on disk, and re-installing picks them up again. With --purge-data the panel's own folder is deleted — its settings and every backup kept on this server. Your databases, your site files (/var/www) and your certificates (/etc/letsencrypt) are not deleted by either form; take them off the server yourself if you want them gone. Either form removes the extra PHP and Node.js versions SixPanel downloaded for websites, except a PHP version a website still runs on — see PHP and Node.js versions. sixpanel disk names the directory your database files are in (Ubuntu keeps them in /var/lib/mysql or /var/lib/mariadb, depending on the release). Backups you sent to S3, SFTP or Google Drive are not touched, but they are encrypted, and the password that opens them is stored in what you are about to delete. Run sudo sixpanel backup password and save that password somewhere else first. The command makes you type the stack path to confirm, and --yes does not skip that.

Whichever form you use, nginx keeps serving your shop's PHP: the site files, the vhosts and the databases are all still there. So the certificates still matter, and uninstall hands their renewal back to the server's own certbot timer (SixPanel had switched it off while the panel did the renewing). One limit: a certificate issued through Cloudflare DNS renews with a token file kept in the panel's folder, so it stops renewing after --purge-data. Uninstall also releases the hold SixPanel placed on the nodejs package.

CommandWhat it does
sixpanel server update [--check]Update SIXPANEL itself (panel, CLI, serving configuration)
sixpanel server os-update [--check]Update UBUNTU itself and its security fixes
sixpanel server rebootReboot the server, shutting everything down cleanly first
sixpanel server firewallThe exact ports this server needs open, and why
sixpanel server uninstall [--purge-data]Stop and remove SixPanel

server update and server os-update are different things. See Server updates and restarts.

Diagnose and fix

CommandWhat it does
sixpanel doctor [--self]Full health check; --self runs host-only checks
sixpanel logs <target> [flags]Tail logs: a service, app, laravel, or all
sixpanel ssl status [<domain>]Every certificate here: issuer, days left, which site
sixpanel ssl renew [<domain>][panel] Re-issue a certificate for a domain
sixpanel cache clearClear Laravel's caches, rebuild the fast ones, restart the workers
sixpanel top [--watch]Memory, tasks and CPU time per service, one screen
sixpanel diskWhere the disk went, per project and per kind
sixpanel pruneReclaim disk: old journal entries, the package cache, fat logs
sixpanel support-bundle [-o FILE]One redacted .tgz with everything support needs
sixpanel report ["what happened"] [--preview]Tell AllsWeb support about a problem, even with the panel down

prune takes no arguments. It trims the system journal to the last seven days, clears the package manager's cache and empties this project's application log. It asks first, and no database, upload or backup can be removed by it.

Getting inside

You will probably never need this group. It is for support, and for people who already know Linux, Laravel and SQL. A wrong command here can break the site in ways the panel cannot repair.

CommandWhat it does
sixpanel exec <service> [cmd...]A shell (or one command) as that service's own user, in its directory
sixpanel artisan <args...>Run php artisan for this project
sixpanel sql [-e "SQL"]Run SQL against this project's database

exec matters more than it looks. There is nothing to "enter" on this server — the programs are simply here — so exec runs your command as the project's own Linux user, in the project's own directory. That is what keeps file ownership right. A root shell in your code folder leaves root-owned files that break the app days later, and this is the command that stops you doing it by accident.

Reference

CommandWhat it does
sixpanel infoPanel URL, admin user, version, and what is running
sixpanel versionSixPanel, panel, Node, nginx, PHP, MariaDB and OS versions
sixpanel cheatsheetThe 20-odd commands people actually use, on one screen
sixpanel menuThe numbered menu (what bare sixpanel shows on a terminal)
sixpanel help [<command>]Help for everything, or one command with examples

[panel] marks commands whose work happens in the panel's web interface, not here. The tool says so before you type it — in help, in the cheatsheet and in man sixpanel — instead of failing at you afterwards.

As a project's own account

A project's own account — the one an agent on the server works as (Terminal and SSH) — gets a different, much shorter sixpanel. It needs no root and no sudo, and every command acts on that account's own project; --project is refused.

CommandWhat it does
sixpanel statusWhat this project is, whether it is live, its services and recent errors
sixpanel logs [what] [-n N]Recent log lines; sixpanel logs help names the logs
sixpanel deployPut the repository's code live: pull, build, database migrations, caches. A 6amMart project: sixpanel deploy storefront for the storefront
sixpanel restart [what]Restart a service of this project (6amMart: php — the default — queue, scheduler, reverb, storefront; a Node.js app: its process)
sixpanel jobsThe panel's recent jobs for this project
sixpanel job <id>One job: its steps, its error, its last log lines
sixpanel changesA staging site on a branch: what changed on the server, and how far the branch is from production
sixpanel commit -m "<message>"A staging site on a branch: commit what changed and push it to the copy's branch
sixpanel syncA staging site on a branch: bring production's new commits in and deploy the copy
sixpanel mcpThe same tools as an MCP server on stdin and stdout, for an agent that asks for one. An agent started in the account needs nothing added: it has the commands above
sixpanel helpThis list

deploy answers when the deploy has finished, with how it ended. A change that cannot be taken back waits for your approval in the panel — the bell at the top of every page shows it. --json prints the answer as the panel gave it. Every other command answers one sentence: it is for the server's administrator.

The exit code is 0 when it worked, 1 for a command the account does not have, 3 when the panel is not answering, and 4 when the panel refused or the action failed — the sentence it prints says which.

These commands are part of SixPanel Pro.

Flags every command understands

FlagEffect
--jsonMachine-readable output, for scripts and monitoring
--yes, -yDo not ask for confirmation
--quiet, -qOnly the answer, no chatter
--project <slug>Act on one project when you run several here
--offlineNever look up the public IP over the network
--forceAccept a check the command would otherwise refuse
--help, -hHelp for the command in front of it

What the exit codes mean

0 fine · 1 you typed something wrong · 2 SixPanel is not installed · 3 the panel is unreachable · 4 the check or the action failed.

So a monitoring hook is one line:

sudo sixpanel doctor --json || alert-someone

If it went wrong

  • "sixpanel must run as root" — put sudo in front, exactly as the message prints it.
  • "no /etc/sixpanel.conf found" — SixPanel is not installed on this server, or the stack folder moved.
  • "sixpanel libraries not found" — the tool was copied by hand. Re-run the installer for this server.
  • "… is read out of the panel's JSON, and this host has no JSON reader" — a few commands read the panel's own file to answer: backup list, backup targets, deploy history, deploy rollback last and allowlist. They stop with that message rather than print an empty list you would believe. Install a reader and run it again: sudo apt-get install -y python3 (or jq). sudo sixpanel allowlist clear does not need one, so a lockout is still one command away.

More symptoms, in the order people hit them: see When something is broken.

Something unclear?Ask Tia