Supervisor
Vinza Store Supervisor
Supervisor
Free Tools
supervisorprocessworkerceleryqueuedaemon
Get this app
Free
Available to all users. No license needed.

Supervisor gives the panel a front end for supervisord: you can define programs, control their processes and read their logs without touching a shell. Creating or editing a program writes a single managed config section — command, working directory, run-as user, environment, autostart, autorestart (true/false/unexpected), startsecs, priority, numprocs and the stopasgroup/killasgroup flags — with each field validated before it is rendered (numprocs 1-64, startsecs 0-3600, priority 0-999). Saving or deleting a program automatically runs reread + update, and deletion stops the program first so removing its file cannot leave orphaned processes behind.

The process table polls and shows each process's state, with start, stop and restart per process or process group, plus a log viewer that tails stdout or stderr and can clear a process's logs. A small supervisord event listener installed alongside it records programs that go FATAL or keep restarting, and the panel raises them as admin notifications (and on the admin's alert channels). You can also start, stop and restart the supervisor service itself. Everything runs through the root agent, because supervisor's control socket is 0700 root:root and systemctl needs a PAM session — the unprivileged Django process can drive neither. The plugin does not install supervisor; if the daemon is absent, install it via the bundled install.sh first, and the sidebar shows a grey dot rather than a false "stopped" when the agent itself is unreachable. The full page is admin-only, because a supervisor program is an arbitrary command run as an arbitrary user under root's daemon. Hosting accounts granted "Can run own background workers" get a confined page of their own: their workers always run as their own Linux user, from a directory in their home, within the limits the admin sets.

Availability: Free on every plan, including the Free plan.

Min Panel Version
1.4.1
Platform
Ubuntu 20.04+ / 22.04+ / 24.04+
License
Free — no key needed
Permissions
plugins.manage
VinzaPanel handles installation automatically via the Vinza Store. Make sure the panel agent has internet access to download dependencies.
1.0.6 — Hosting accounts are told (bell) when one of their workers goes FATAL or keeps restarting, not only the admin. New “Restart after a deploy” option: a successful deploy from Git Manager or the Python, Node.js and Go apps restarts the workers in that site's folder, so queue workers run the new code (templates turn it on). CPU and memory per process, children included. Logs can be filtered and downloaded (newest 1 MB). The environment field is hidden while typing. Saving refuses an interpreter command whose script is a folder or missing (e.g. `php /home/x/web/site queue:work` with artisan left out, which exits at once with empty logs) or whose interpreter is not installed. A process that is not running gets a “Why it is not running” box in its log viewer: last exit code and what it means, empty logs, script problems. A hosting account's worker without a website starts in the home folder, not a made-up <home>/app. Admin: worker limits per hosting plan or per account over the default, an owner filter on the process list, and a History tab of who changed, started or stopped what. Indonesian translation for the whole plugin; the working directory field explains what it is for. Requires git-manager 1.2.1, python-deploy 1.0.12, node-deploy 1.0.11 or go-deploy 1.1.7 for the deploy restart. 1.0.5 — Environment values are written quoted, the way supervisord reads them: a value with a space, @, ? or & (e.g. a database URL) used to make supervisord reject the whole configuration, so no program could be changed and supervisord would not start again. A configuration supervisord rejects is now rolled back and reported instead of shown as saved. Hosting accounts: a worker name too long for the account is refused with a clear message, and parallel saves cannot exceed the worker limit. 1.0.4 — Hosting accounts start a worker from their website: pick the site and what to run (Laravel queue, Horizon or scheduler, Symfony Messenger, a PHP script, Django Celery worker or beat, a Django management command, a Python script, a Node.js script) and the command, folder and the site's PHP version or Python virtualenv are filled in. 1.0.3 — Hosting accounts can run their own background workers (queue workers, scripts) when an admin grants the new “Can run own background workers (Supervisor)” permission, per user or through a group. They see only their own workers: each always runs as the account's Linux user, from a directory in its home, named u.<user>.<name>, with priority, groups and the service left to the admin. An admin sets workers per account and processes per worker on the Programs tab. A hosting account bound to a Vinza Server node gets its workers on that node. Requires panel 1.4.1. 1.0.2 — Program templates (Laravel queue worker, Laravel Horizon, Celery worker/beat, Node.js script, generic worker) prefill the create form; new stopwaitsecs field. Program groups: create/edit/delete [group:x] sections and start/stop/restart a whole group; deleting a program removes it from its group. 1.0.1 — Alerts: a supervisord event listener (installed by install.sh/update.sh) records programs that go FATAL or keep restarting (3 exits/backoffs in 10 min, then quiet for 10 min); the panel turns them into admin notifications (danger for FATAL). 1.2.0 — the action API existed only on paper: no get_actions(), so every button on the page was denied. Rewritten on the root agent (supervisorctl and systemctl are unreachable from the unprivileged panel process). Adds program create/edit/delete, per-process start/stop/restart, numprocs scaling, live stdout/stderr log viewer, reread+update apply, and a polling process table.

Use VinzaPanel's REST API to download and install this app programmatically.

Download app files
HTTP
POST /plugins/api/download/supervisor/
Content-Type: application/json

{
  "panel_version": "1.0.0"
}
Example response
JSON
{
  "success": true,
  "plugin_id": "supervisor",
  "version": "1.0.6",
  "download_url": "..."
}