Status
Live dashboard for core services on the host: state, CPU, RAM, and uptime, with one-click controls (start/stop/restart/reload). Access: root.
What it shows
- Status — Active / Inactive / Failed / Not installed (from
systemctl
). - CPU / RAM — point-in-time % for the unit’s MainPID (via
ps
). - Uptime — time since the unit entered the “active” state (derived from
ActiveEnterTimestamp
).
How services are discovered
- Reads
services.yaml
and builds a list of enabled components. - Special cases:
- nginxapache: install=on → adds both apache and nginx.
- database → adds mariadb, and phpmyadmin if enabled.
- filetransfer → adds ftp plus helper daemons pure-certd and pure-authd; adds sftp if enabled.
- mail → adds mail (Exim), dovecot, spamassassin, and roundcube if enabled.
- Per-user PHP pools are intentionally omitted.
Unit mapping
Friendly names are mapped to systemd units, e.g. apache→httpd
, nginx→nginx
,
mariadb→mariadb
, ftp→pure-ftpd
, mail→exim
, etc.
Controls & refresh
- Per-row actions: Start, Stop, Restart, Reload. Each runs
systemctl <cmd> <unit>
and then refreshes that row. - Refresh status (row) — re-polls a single service.
- Refresh all — reloads the full table.
- Badges: green = Active, red = Inactive/Failed, gray = Not installed, amber = other states.
How status is computed
- Installed?
systemctl list-unit-files …
for the mapped unit. - State:
systemctl is-active
. - Main PID:
systemctl show -p MainPID
→ps -p <pid> -o %cpu=,%mem=
. - Uptime:
systemctl show -p ActiveEnterTimestamp
→ human-readable elapsed time.
Notes & tips
- “Not installed” can also mean “no unit file present for the mapped name.”
- CPU/RAM reflect the main process only; auxiliary workers are not summed.
- Some stacks run multiple units (e.g., FTP helpers); each is tracked individually.
Safety: These actions control production daemons. Use Restart/Reload during maintenance windows when possible.