ISPmanager 6 does not just serve static files and PHP sites — it can also run Node.js and Python applications as separate web services with their own domain. Here is how to create such an application, pick a runtime version, and set up proxying through the web server.
How an application differs from a regular site
A regular site in ISPmanager 6 is a set of files handled by PHP-FPM or served directly by the web server. A Node.js or Python application is a separate process that listens on its own local port, while Nginx proxies external requests to it by domain. The panel starts and restarts the process on its own through a systemd unit.
Creating a Node.js application
Open "WWW domains" → "Create application", choose the Node.js type, set the domain and the path to the entry point, for example app.js in the site's root directory. ISPmanager 6 offers a list of installed Node.js versions, and a missing version can be added through the runtime version manager.
npm install --production
npm run build
Once the dependencies are installed, the panel starts the process automatically. You can check that the application is listening on the right port from the console:
ss -tlnp | grep node
Creating a Python application
For Python applications, ISPmanager 6 supports WSGI-compatible frameworks: Django, Flask, and FastAPI through uvicorn. When creating the app, set the Python version, the path to the virtual environment, and the module with the entry point, for example app:application for Flask.
python3 -m venv /var/www/httpd-cts/site_py/venv
source /var/www/httpd-cts/site_py/venv/bin/activate
pip install -r requirements.txt
The panel creates a systemd unit that runs the application through gunicorn or uvicorn inside the given virtual environment and restarts the process if it crashes.
Proxying through Nginx
| Parameter | Default value | Where to change it |
|---|---|---|
| Application local port | Assigned automatically | Application settings in the panel |
| Proxy timeout | 60 seconds | Nginx template for applications |
| Maximum request size | 10 MB | client_max_body_size in the template |
If the site uses a combined Nginx and Apache setup, the application is still proxied directly through Nginx, bypassing Apache — this is faster for APIs and WebSocket connections. Details on combining web servers are in the article about Nginx and Apache in ISPmanager 6.
Logs and restarting the application
Node.js and Python application logs are written to separate files in the site directory and also duplicated in the systemd journal. You can view recent entries and process status like this:
journalctl -u app-site_ru -n 100
systemctl restart app-site_ru
If the application keeps crashing right after startup, check the dependency import errors in the log first — this is the most common cause. The general approach to reading panel errors is covered in the article about ISPmanager 6 logs and diagnostics.
Summary: application launch checklist
- Pick the right Node.js or Python version before creating the application
- Set the correct path to the entry point and the virtual environment
- Install dependencies with npm install or pip install before the first run
- Check that the process listens on its port and is proxied through Nginx
- Set up systemd log viewing for quick failure diagnostics