Manage Supervisor processes from Plesk with admin, reseller, and customer scoped access.
Overview
Supervisor Manager is a Plesk extension for creating and managing Supervisor programs directly from the Plesk interface.
It is built for hosting panels where admins need to run background commands for individual domains while keeping customers locked to their own domain scope. It can manage PHP workers, Node workers, queue consumers, schedulers, websocket servers, custom scripts, and other long-running services.
Admin dashboard for all managed Supervisor programs.
Customer and reseller scoped access by assigned Plesk domain.
Add, edit, delete, start, stop, restart, and regenerate config.
Live log preview with pause/resume and 120/300/500 line views.
Automatic Supervisor config generation.
Project root locking so users cannot escape their domain area.
Project root validation for domain-owned applications.
Runtime PATH handling for Plesk PHP, Plesk Node.js, and system binaries.
Generated config and log paths shown in the UI.
One-click Supervisor install on supported Linux distributions.
Requirements
Plesk Onyx or Obsidian on Linux.
PHP available to Plesk admin runtime.
Supervisor installed, or an OS supported by the install button.
Required runtime installed for the command you want to run, such as PHP, Node.js, Python, or another CLI binary.
Supported install detection includes:
Ubuntu / Debian
AlmaLinux / Rocky / RHEL / CentOS / Fedora
Installation
Install the latest runner-built package directly from GitHub:
plesk bin extension --install-url https://github.com/ghostcompiler/supervisor-manager/releases/download/latest/supervisor-manager.zip
This URL points to the rolling latest release asset. The Package Latest workflow rebuilds supervisor-manager.zip from the current main branch on every push and whenever it is started manually, so the install command stays stable and does not depend on a hardcoded version number.
Pinned version installs are also available after publishing a versioned release:
plesk bin extension --install-url https://github.com/ghostcompiler/supervisor-manager/releases/download/v1.0.3/supervisor-manager-1.0.3.zip
plesk bin extension --install build/supervisor-manager-1.0.3.zip
Or install through Plesk UI:
Open Plesk Admin.
Go to Extensions.
Click Upload Extension.
Upload build/supervisor-manager-1.0.3.zip.
Open Supervisor from the Plesk sidebar.
Version 1.0.3
Version 1.0.3 improves Supervisor runtime setup, domain PHP detection, and log handling. It adds service health diagnostics with a repair action, generates domain-scoped Supervisor program names, resolves php through the selected Plesk domain PHP handler, and adds copy/clear controls for live logs.
After installing:
Open Supervisor from Plesk.
Use Repair Supervisor if the service or socket needs setup.
Regenerate existing program configs so domain PHP paths and scoped names are written.
Restart affected programs from the extension.
Use Copy Log or Clear Log from the logs page when troubleshooting.
How It Works
When an authorized user saves a program, the extension:
Validates the selected domain.
Locks the project root to the selected domain area.
Generates a Supervisor config file.
Writes the config to /etc/supervisor/conf.d.
Runs supervisorctl reread and supervisorctl update.
Shows status, config path, log path, and live logs in Plesk.
Adding a Program
Example queue worker:
Supervisor Program Name: queue-worker
Display Name: Queue Worker
Assigned Domain: example.com
Command: php artisan queue:work --sleep=3 --tries=3
Project Root: /var/www/vhosts/example.com/app
Start on boot: enabled
Restart if it exits: enabled
Enabled: enabled
Example Node worker:
Supervisor Program Name: realtime-worker
Display Name: Realtime Worker
Assigned Domain: example.com
Command: npm run worker
Project Root: /var/www/vhosts/example.com/realtime-app
Set Project Root to the application folder where the command should run. For Laravel commands, this is usually the folder containing artisan. For Node.js commands, this is usually the folder containing package.json.
Admins can create, edit, delete, and regenerate all programs.
Customers and resellers can only see programs assigned to domains they can access.
Customer and reseller access is controlled by Plesk service plan permissions.
If Plesk delays exposing custom access/manage permission values after a plan change, a non-zero Maximum Supervisor programs limit is treated as a guarded activation fallback for domains the user already owns or can access.
Project roots are locked to the selected domain area.
Users cannot use ../ style path escapes to reach another domain.
Server-level writes are performed through the Plesk sbin helper.
The sbin helper revalidates config paths, log paths, process users, and allowed project roots before touching server files.
Managed commands run as the selected domain system user. Only grant Manage Supervisor programs to users who are trusted to run commands for that subscription.
Service Plan Access
Supervisor Manager adds permissions to Plesk service plans and subscriptions. Keep them disabled by default, then enable only what each reseller or customer should be allowed to do.
Available permissions:
Supervisor Manager access: allows the user to open the extension and view assigned programs.
Manage Supervisor programs: allows creating, editing, deleting, and regenerating configs for enabled domains.
Control Supervisor programs: allows start, stop, and restart actions.
View Supervisor logs: allows opening the live log preview.
Available limit:
Maximum Supervisor programs: caps how many programs can be created per subscription. Use 0 to prevent customer-created programs, a positive number for a fixed cap, or -1 for unlimited.
Avoid unlimited process counts for shared-hosting customers unless they are trusted. Background programs can consume CPU, RAM, and ports just like commands run over SSH.
Access is checked in three layers:
The logged-in user must have access to the Plesk domain.
The domain subscription must have the matching Supervisor Manager permission enabled.
The posted program must belong to that exact domain ID, not a parent domain or a similar subdomain.
After changing an existing service plan, sync the affected subscriptions in Plesk. Customized or locked subscriptions may keep their old permission values until they are synced or adjusted directly.
The extension always registers its Plesk sidebar and domain buttons so service plan changes can appear without waiting for a new domain event. Security is still enforced in the controller after the button is clicked.
Domain buttons are normalized to site_id, because Plesk context parameters can include dom_id for the subscription/webspace and site_id for the exact domain. Supervisor Manager uses the exact domain ID for filtering and actions.
Live Logs
The log page opens in a new tab and provides:
Auto refresh every 2.5 seconds.
Pause and resume.
Last update timestamp.
120, 300, and 500 line views.
Direct reading from /var/log/supervisor/plesk/*.log.
Useful Commands
Check Supervisor:
supervisorctl status
Reread generated configs:
supervisorctl reread
supervisorctl update
Check generated files:
ls -lah /etc/supervisor/conf.d/
ls -lah /var/log/supervisor/plesk/
Missing command runtime, such as PHP, Node.js, or Python.
Missing application file, such as artisan, package.json, or the script passed to the command.
Port already in use.
Command exits immediately.
Command cannot find an application file
Set Project Root to the folder where the command normally runs over SSH.
cd /var/www/vhosts/example.com/app
ls -lah
For example:
Laravel commands usually run from the folder containing artisan.
Node.js commands usually run from the folder containing package.json.
Python or shell workers usually run from the folder containing the script file.
Runtime command not found
Install the missing runtime or use the full binary path in the command. Examples:
which php
which node
which python3
Port already in use
If the managed application binds to a port and the port is already busy, stop the duplicate process or change the application port.
Save or delete does not show a status message
The extension returns to the manager page and shows a success or error message at the top. If the browser is still on the form page, refresh once and check the manager page again.