Skip to content

Node.js and Python apps

Run a Node.js or Python application on one of your websites. The panel starts it, keeps it running inside your account's limits, and restarts it if it stops.

Supported versions

Runtime Versions Default for a new app
Node.js 18, 19, 20, 22, 24, 26 24
Python 3.9, 3.11, 3.12, 3.13, 3.14 3.12
  • You can choose only the versions your hosting provider has installed on your server.
  • Node 18, 19 and 20 and Python 3.9 are there so older apps keep running. Node 18, 19 and 20 no longer get security fixes from Node.js, and Python 3.9 gets them only from AlmaLinux, so build new apps on Node 24 or 26 and Python 3.12 or newer.
  • Python apps run through Gunicorn (WSGI: Django, Flask) or Uvicorn (ASGI: FastAPI, Starlette). There is no Passenger and no cPanel "Setup Python App".

Set up a Node.js app

  1. Upload your code with the File manager, FTP or Git.
  2. Open Websites, choose the domain, open the Advanced tab and open the Application row.
  3. Choose Node.js, then the version, the Start file (default server.js) and the Folder your code is in.
  4. Tick npm run build if your app has a build step, then press Set up.
  5. Press Install and build. It runs npm install (and the build) for you.

Your app must listen on process.env.SOCKET; process.env.PORT holds the same value. For example, in Express: app.listen(process.env.PORT).

Set up a Python app

  1. Upload your code with the File manager, FTP or Git, with a requirements.txt.
  2. Open Websites, choose the domain, open the Advanced tab and open the Application row.
  3. Choose Python, then the version and the Kind: WSGI for Django and Flask, ASGI for FastAPI and Starlette.
  4. Enter the Application, for example myproject.wsgi:application (Django) or app:app (Flask, FastAPI), the Folder and the Requirements file. Press Set up.
  5. Press Build. It creates the virtual environment and installs your requirements and the app server.

For Django commands such as migrate and collectstatic, open SSH or the Terminal, go to your app's folder and activate its environment:

source .venv/bin/activate
python manage.py migrate
python manage.py collectstatic

Running the app

A site runs one application at a time. The site's page has Start, Stop, Restart and Settings and log. After you change your code, press Restart (Python) or Install and build (Node.js). When the app is stopped, visitors see an "application stopped" page, not your code.

Frequently asked questions

Which Node.js and Python versions can I use? Node.js 18, 19, 20, 22, 24 and 26, and Python 3.9, 3.11, 3.12, 3.13 and 3.14 - those your hosting provider has installed. The Application row lists the ones available to you.

Is Python 3.15 or a newer Node.js supported? Not yet. A new version is added once AlmaLinux or its EPEL repository ships it with security updates, or, for Node.js, when it is released on nodejs.org.

Which Django versions work? Django 5.2 LTS and 6.0 on Python 3.12, 3.13 or 3.14. Django 5.1 runs on Python 3.12 or 3.13, not on 3.14.

Can I use PostgreSQL, MySQL or MongoDB? Yes. Create the database and its login under Databases, then put those details in your app's settings.

Can I run pip, migrate or collectstatic myself? Yes, in SSH or the Terminal, after source .venv/bin/activate in your app's folder. Build runs pip install for you.

How do I run npm install? Press Install and build on the Application row. It builds in a copy beside the running app and swaps it in only when it is ready, so your site stays online.

How are Django's static files served? Run collectstatic, and serve them from your app with WhiteNoise, the usual way when the app server answers every request.

Can users upload files, such as images, to my app? Yes. Uploads are saved inside your account and count towards its disk space.

Do I get SSL? Yes. The free SSL certificate of the website covers the app too.

What limits apply? Your plan's disk, CPU, memory and I/O limits, the same as for the rest of your account.

Can I choose a port? No. The panel gives your app a private socket and connects the website to it. Use process.env.PORT in Node.js; Python's app server is set up for you.

My app does not start. Where do I look? Open Settings and log on the site's page. The log shows your app's own output and errors.