# Software, search and the system monitor

> Source: https://www.allsweb.com/sixpanel/docs/software-search-monitor
> Markdown for agents: https://www.allsweb.com/sixpanel/docs/software-search-monitor.md
> Publisher: AllsWeb (www.allsweb.com)

Part of: SixPanel documentation

**What this page is for:** three things that sit across the whole panel — **Server →
Software**, where you add optional programs to this server with one press; the **search**
at the top of every page, which finds a place by any of the words people use for it; and
the **system monitor**, which keeps the server's load, processor, memory, swap, disk and
network for days so you can look back at them.

**You need**

- The owner's login to install or remove software and to switch the system monitor on or
  off. A temporary login sees the Software tab and the monitor's charts read-only; the
  read-only demo shows them and changes nothing.
- Nothing else for the search: it works on every page, for everyone who can sign in.

**The rule that does not move:** nothing on these pages runs until you ask for it. A
program on the Software tab is not installed, and does not run, until you press
**Install**; the system monitor keeps nothing until you switch it on.

---

## Server software

Open **Software** in the menu. **All software** is its first tab; **PHP** and **Node.js** are
the next two.

The line at the top says what this server has: its memory (and how much is free), free
disk, processor (amd64 or arm64) and operating system.

Under it is **one list of every program on this server** — the ones SixPanel installed
itself and the ones you can add — grouped by what each is for, always in this order:
**Web server**, **Languages and runtimes**, **Databases**, **Caching**, **Email**,
**Security**, **Tools** (Docker, the FTP server, Local AI). nginx stands beside Apache,
MariaDB beside PostgreSQL, Redis beside Memcached.

Each row says on its first line the program's name, its state — **Running**, **Stopped**,
**Off**, **Failed**, **Installing…**, **Not installed**, or **On this server** for one that
is not a service (certbot, PHP, Node.js) — its version, and **Update waiting** or
**Security update** when a newer version is offered. Under that:

- what the program is, in a line;
- **Used by**, and the projects, websites and mail domains that use it (below);
- for a program you add here, what it **needs**: memory, disk, the processor it is built
  for and the operating systems it runs on. A program this server cannot run says **Cannot
  be installed here**, with the reason — for example the memory it needs and what this
  server has — and its **Install** button stays grey.

A program's **parts** stand under it, each with its own state: the mail server's
**Postfix**, **Dovecot** and **Rspamd** under Email (once it is installed), and the
**PHP-FPM** of each PHP version under PHP.

The buttons at the end of a row (under it on a phone) are the ones that program has:

- **Install** asks first — the dialog repeats what the program needs and says that nothing
  else on the server changes — and then runs as a job. One install or removal runs at a
  time, like every job on the panel.
- **Manage** opens the program's own page — for example Docker's containers, images and
  volumes. **Updates** opens its updates, **Open** the page its settings are on.
- **Reload** (nginx) and **Restart** (MariaDB, Redis) — see below.
- **Start** a program that is stopped or failed — the first thing to press when one has
  crashed. **Stop** and **Restart** ask first and name what stops working: "Until then these
  stop working: Jar Shop, mail-example.com". Each runs as a job, and is refused with that
  job's name while another job runs. Stop leaves it stopped until you start it again.
- **Log** shows the newest lines of the program's own log (its systemd journal), read again
  with **Refresh**.
- **Start at boot** decides whether the program starts by itself when the server starts.
- **Remove** takes the program off the server and **keeps its data**, so installing it
  again finds everything where it was. To delete the data as well, tick **Also delete its
  data** and type the program's name to confirm — that cannot be undone.

**Not every program has every button**, on purpose:

- **nginx, MariaDB and Redis** have no Stop and are always started at boot. Every website
  and shop on the server uses them, and a stopped one would leave all of them down until
  somebody came back. Their own **Reload** or **Restart** is the safe way.
- **Varnish, Apache and Memcached** run exactly while a website uses them, and SixPanel starts
  them again when one is down. They have **Start** and **Restart** but no Stop and no boot
  switch: turn one off on each website's page instead.
- **Local AI and phpMyAdmin** are turned on and off (Start, Stop); that also decides whether
  they start at boot.
- **PostgreSQL, Docker, the email server and the FTP server** have every button. Docker is
  stopped together with its socket, so nothing starts it again behind your back.

**Remove is refused while anything uses the program.** The dialog lists each project, website
and mail domain that uses it, each a link to where it does, and offers no removal: turn the
program off there, or remove them, first. The server refuses it too, whoever asks.

Only the owner of the server sees these buttons; a temporary login sees the state alone.

**While a job you started from a row runs** — an install, a removal, a restart — that row
says which step it is on ("step 2 of 5 — Install the packages"). When the job has ended, the
row says **done** or **failed**, with the reason, for ten minutes. **Watch the log** beside
it opens that job's log; the bar at the top of the page names the running job as well.

**A program's own page starts with its row** from the list — its state, who uses it and the
same buttons — so nginx, MariaDB and Redis have their Reload or Restart there too, above
their updates. **All software** at the top of the page brings you back to the list.

**PHP, Node.js and ionCube** have their rows too, with what this server has (the server's
own version, the extra versions, which PHP versions have ionCube on). They are managed on
their own tabs: **Open** goes to **Software → PHP** or **Software → Node.js**.

**One-click apps** — ready-made apps that run in Docker on this server, each with its own
address — appear under the list when this version of SixPanel carries them, each with what
it needs and a **Set up** button. They are not programs on the server, so the filters leave
them out: they show under **All**.

**nginx, MariaDB, Redis, certbot, phpMyAdmin** and, once SixPanel Email's webmail is
installed, **Webmail (Roundcube)** are installed with SixPanel, and every website and shop
uses them. Their rows say what the others' do, and more: Redis how many of its instances
run, certbot how many certificates there are and when the renewals were last checked, and
the webmail which PHP version and pool it runs in.

- **Reload** on nginx tests its configuration first and then reloads it: no request is
  dropped. A configuration nginx refuses is not loaded, and the server keeps serving as before.
- **Restart** on MariaDB or Redis asks you first, because every website and shop loses its
  connection to it for a moment. The background workers are paused around it and started
  again afterwards.
- While another job runs (a deploy, a backup, an install), Restart is refused with that job's
  name — a restart in the middle of it would break it. Wait for it to finish, then press again.

Only the owner of the server sees Reload and Restart.

### Finding one quickly

The buttons above the list filter it: **All**, **Running**, **Stopped**, **Updates** and
**Not installed**, each with the number of programs it shows — counted from the list itself,
parts included, so a number is always the rows you get. **Failed** and **Installing** appear
beside them while a program is in that state: a program that crashed is never counted among
the stopped ones. **Search software** narrows the list to the programs whose name or
description has the words you type. Nothing is asked of the server again while you filter or
search.

**Check everything now**, beside the search, asks every program whether a newer version is
offered. It runs as a job and installs nothing.

**Update all…** appears beside it while a program has an update waiting, and each such row
has its own **Update**. Both open the same dialog, which **lists every program it will update,
from which version to which**, each ticked — the row's with that one program alone. Untick one
to leave it as it is. A database server in the list (MariaDB, PostgreSQL, MongoDB, SQL Server)
asks first whether to copy every database, or whether you have a backup. Nothing runs until you
press **Update**. Then one job updates them **one after the other**, each exactly as its own
Update on its page: only its own packages move, it is restarted the way it must be and checked,
and its old version is put back if anything is wrong. A program that fails does not stop the
others; the job ends **failed**, naming each one that was not updated and why, and each row
says how its own update went.

Left out of Update all, on purpose: a program you **held** at its version, a version you
**skipped**, an update the check found could not be installed as it stands, and **Local AI**,
which moves with a SixPanel update. An update that would leave no way back is never made from
here: open that program's page, where its Update asks you that question.

### Who uses it

A card says **Used by** and names the projects, websites and mail domains that use that
program — for example Redis lists every project (each has its own Redis), MariaDB every
project and website with a MariaDB database, PHP the websites on each version, Docker the
Docker apps and the websites with a MongoDB or SQL Server database, Email and Webmail the mail
domains. Each name opens the page where it uses it.

### The same card where it is used

The pages that use a program show its card too — the same card, with the same state and the
same Restart, and an **On Software** button that brings you back to its row here:

- **Server → Database** and a project's **Database** page: MariaDB, PostgreSQL, MongoDB,
  SQL Server and phpMyAdmin.
- **Email**: Email, its three parts and the webmail.
- **FTP** (the project's and the website's): ProFTPD. **AI**: Local AI. A Docker app's page:
  Docker. **Domain & SSL** (the project's and the website's): certbot.
- A project's **Services** page: its own Redis and MariaDB. A website's **Cache** page: its
  Redis, Memcached and Varnish. Its **PHP** page: the PHP-FPM it runs on, and Apache when it
  uses it. Its **Database** page: the database engines and the Redis it uses. Its
  **Overview**: the Node.js, Python or Java it runs on, or Docker.

On a project's or website's page only what that project or website uses is shown, and
**Restart** on its Redis restarts **that Redis only**: the question names the project, its
cache and queue pause for about a second, its background workers are paused around it, and
nothing else on the server is touched. The same rules hold as on this tab: only the owner sees
Restart, it asks first, and it is refused while another job runs.

A program that is not part of your version of SixPanel is simply not on the tab; it
appears after the update that brings it. If a program's own code cannot be read, its card
says **Not available on this server** with the reason, and the rest of the tab works.

### Updates

Most of what the server runs exists **once** on it: nginx, Apache, MariaDB, PostgreSQL,
Redis, Memcached, Varnish, Docker, the mail server (Postfix, Dovecot, Rspamd), ProFTPD,
certbot and the Brotli module, from your release's own package sources; MongoDB and SQL
Server, as container images; phpMyAdmin and the ionCube Loader, from their own download
sites; and the webmail (Roundcube), from Roundcube's own releases, while it is installed.
**Updates of the server's software**, folded under the list, is the table of each one's
version installed and the version available at the last check. A row with an
update waiting says **Update waiting**, or **Security update** when the new version is in the
release's security pocket. **Check everything now** asks again.

Each program's own page has an **Updates** section:

- **Check now** asks again for this one program.
- **Update** moves **only this program's own packages**, never the whole server. Nothing
  restarts while they are unpacked. Then the program restarts the way it must:
  - nginx and Apache test their configuration first, then reload, and restart only when
    the program file itself was replaced;
  - MariaDB, PostgreSQL, MongoDB and SQL Server first copy every database (choose
    **Make a copy of every database first**, or say you have a backup), then restart and
    must answer again;
  - Memcached, Varnish, Redis, Docker and the mail server restart every part that was
    running, and each one must answer.
  The version installed now is kept, and it is put back if anything is wrong. The job log
  says what moved, from which version to which.
- **Hold at this version** holds its packages with apt. Neither this page nor the daily
  security updates move them while they are held.
- **Skip version …** stops offering that one version. A newer one is offered again.

**phpMyAdmin and the webmail** are downloaded and checked against the checksum their makers
publish before anything is switched; the version in use stays until the new one answers. The
webmail's database (address books, settings) is brought up to the new version with Roundcube's
own tool. Only a newer release of the same line is offered (Roundcube 1.7.4 → 1.7.5, never
1.7 → 1.8). A Roundcube release published without a checksum is shown as available, with the
words **verify it by hand**, and is not installed from here. After an update, the version in
use and the one before it are kept on the server; older ones are removed.

**A new major version is never an update.** PostgreSQL 18 → 19, MariaDB 11.8 → 12, or
another MongoDB line is a migration of every database, and the page says so. Only a newer
build of the version this release carries is offered. The Node.js SixPanel itself runs on
is never offered here: it moves with SixPanel's own updates. Local AI (Ollama) also moves
with a SixPanel update, because its download is checked against the checksum the signed
release carries.

**Tia** can tell you what is installed and whether a program fits this server ("can this
server run PostgreSQL?"). She installs or removes a program only through the same steps,
and **always asks you first** — the bell at the top of the page shows her request.

## Search

The **Search** field is at the top of every page. Press **Ctrl K** (**⌘K** on a Mac) or
**/** to open it from anywhere; on a phone it is the magnifier in the page's header.

It finds:

- every page and every tab of the panel — **Server → Firewall**, **Settings → Updates**;
- the settings and actions on them — **Two-factor login (2FA)**, **phpMyAdmin (database
  browser)**, **Disk cleanup**, **System monitor**;
- your projects and websites by name or domain, and each page of them — type
  **blog cron** for the scheduled tasks of the website *blog*;
- the optional programs on **Software**;
- every page of this manual and every heading in it (they open in a new tab).

Each result says where it lives: *Server → Firewall*, *Settings → Alerts*, *blog*,
*Manual · Backups*. Use **↑ ↓** to move, **Enter** to open, **Esc** to close.

### Related words find the same place

People call one place by different names, and the search knows them. A few of them:

| You type | It finds |
|---|---|
| cron, cron job, cronjob, crontab, scheduled task, timer | **Cron jobs** |
| firewall, ports, open port, ufw | **Server → Firewall** |
| SSL, HTTPS, certificate, Let's Encrypt | **Domain & SSL** |
| database, MySQL, MariaDB, phpMyAdmin, PostgreSQL | **Database** |
| env, environment variables, .env | **App .env**, a website's **Environment** |
| email, mail, SMTP, mailbox | the email settings and the email server |
| FTP, SFTP | the FTP server, and the backup storage that can use SFTP |
| DNS, records, nameservers | Cloudflare → DNS, and the Cloudflare page |
| backup, snapshot, restore | **Backups** |
| logs, errors, error log | **Logs** |
| Tia, assistant, chatbot | **AI → Tia** |
| vhost, nginx config, server block | the web-server configuration pages |
| upgrade, update, new version | **Settings → Updates** |

When a place was found by another of its names, the result says what it is called here —
*"timer" is called "Cron jobs" here* — so the next time you know the
panel's word for it.

**In your language too.** The panel's own labels in the language you chose find their
places, and so does every English word in the table above, whatever language the panel is
in.

**A small typo is forgiven.** A word that matches nothing as typed is matched with one
letter wrong (two in a word of seven letters or more) — *firewal*, *databse*,
*certifcate* — and the result says *closest to "…"*. Words of four letters or fewer are
never guessed at: one letter apart, *smtp* is *sftp*.

Nothing is sent to the server while you type: the search reads what the page already
knows, and the list of tabs once, when it first opens.

## System monitor

It is the first card on **Home**. (It was under the checks on **Server → Monitoring** until
20 Oct 2026; that tab is the checks and incidents alone now.) Home draws it after every other
card, in a space already kept for it, and it reads its history once each time you open Home —
so it never makes Home slower, and nothing under it moves when the charts arrive.

Under its title, one row says what this server is: its name, how long it has been up, its
cores, total memory, total disk and operating system, and whether the web server (nginx) and
the database are running.

It keeps, once a minute:

- the **load average** over 1, 5 and 15 minutes;
- **CPU** — how much of the processor was in use, and how much of the time it was
  **waiting for disk**;
- **memory** in use, of the total;
- **swap** in use (a server with no swap says so);
- **Storage** — how much of the disk's space is used, as a percentage and as "X GB of
  Y GB": the disk that holds your websites (`/var/www`), or `/` when there is no such
  folder — the note under the chart names it. It is the **Disk** meter at the top of Home,
  over time. Days kept before this chart existed have no Storage line; the other charts of
  those days are drawn as before;
- **disk I/O** — how much was read and written each second, and how busy the disk was;
- **network I/O** — what came in and went out each second.

**It is off until you switch it on.** Tick **Keep history**; the first readings appear
within two minutes. Choose how long to keep them under **Keep history for** — from one day
to a year, 30 days unless you change it; older days are deleted by themselves once a day.
The card shows how much it takes on disk. **Clear history** deletes every day it kept (the
switch stays as it is). Switching it off stops the readings and keeps what was kept, until
you clear it or its days pass.

**What it costs the server:** nothing you could measure. It starts no program: once a
minute it reads the kernel's own counters (five small files under `/proc`) and asks the
filesystem how full it is, and it writes ten readings at a time, not one a minute. A day is
about 130 KB on disk; a finished day is
compressed to less than half of that. The files are in the panel's own data folder,
`/opt/sixpanel/data/panel/sysmon/`, one per day.

**The charts.** Choose **Today**, **Yesterday**, **Last 7 days** or **Custom** (a **From**
and a **To** day, up to 31 days at a time). Times and days are your own computer's. The
card reads once each time you open Home; press **Today** again for the newest minutes. Under
each chart are its average and its highest value.

- **Read a moment.** Move the pointer over any chart — or touch it on a phone — and a line
  marks that minute on every chart at once, with one box listing every value at that
  moment. With the keyboard, Tab to a chart and use the **left and right arrow keys**
  (**Esc** hides the line).
- **Zoom in.** Drag across a chart to show just that stretch on every chart; the range reads
  **Custom**, and **Reset zoom** goes back. A zoom uses what is already on the page — it
  asks the server nothing.
- **The 90% line.** CPU, Memory and Storage carry a faint dashed line at 90%, where the panel
  starts to call a resource tight. A line that runs along it for long is worth a look.

- A minute with no reading — the server was off, the panel was restarting, or the monitor
  was switched off — is a **gap** in the line, never a drop to zero.
- Percentages are always drawn from 0 to 100%, so a server at 2% looks quiet, as it is.
- A long range shows each point as the average of the minutes it covers.

The newest point of each chart is this moment; the rest is its history.

**Tia** reads the same history when you ask her — "was the server slow yesterday at
3 pm?", "what happened to memory this week?" — and says so when it is switched off.
