Getting Started

Running Node.js or Python Applications

By the Domain India teamPublished 5 min read
Knowledge base article
Contents (6 sections)

Domain India's cPanel and DirectAdmin shared hosting can run small Node.js and Python web applications from the control panel. The same CloudLinux tool handles both: you choose a version, point it at your code, install your dependencies and start the app, and Phusion Passenger connects it to your domain.

Full guides for each language

This page compares the two. For every step and field, see How to deploy a Node.js app on shared hosting and How to deploy a Python app on shared hosting.

Key takeaways

In cPanel, use Setup Node.js App or Setup Python App: create the app, upload your code, install dependencies with Run NPM Install or Run Pip Install, then restart. Node.js apps listen on process.env.PORT; Python apps expose application in passenger_wsgi.py. DirectAdmin has the same tools; for Webuzo, ask support.

1. Node.js and Python side by side

Measured on our servers on 23 September 2026:

WhatNode.jsPython
cPanel toolSetup Node.js AppSetup Python App
cPanel versions20, 22 and 243.9, 3.11 and 3.12
DirectAdmin versions14, 16, 18, 19, 20, 22 and 242.7 and 3.8 to 3.13
Entry pointA startup file such as app.jspassenger_wsgi.py exposing application
Install dependenciesRun NPM Install (package.json)Run Pip Install (requirements.txt)
WebuzoAsk supportAsk support

Choose the newest version your code supports: Node.js 20 and older, and Python 3.9 and older, no longer get security fixes.

2. Create the app in cPanel

  1. Open the tool.
    In cPanel's Software section, open Setup Node.js App or Setup Python App and click Create Application.
  2. Fill in the form.
    Choose the version, set the Application root to a folder outside public_html (such as myapp), choose the Application URL, and enter the startup file (and, for Python, the entry point application).
  3. Upload your code
    to the application root with File Manager or FTP. Leave out node_modules or any local venv folder.
  4. Install dependencies.
    Click Run NPM Install, or add requirements.txt on the app's page and click Run Pip Install.
  5. Start or restart
    the app and open its URL. Restart after every code change.

DirectAdmin has the same fields, on the Setup Node.js App and Setup Python App pages: type the page name in the Search for pages box at the top of the DirectAdmin menu, or press Ctrl+J.

3. Environment variables and ports

Add settings in the Environment variables section of the app's page, then restart. Common ones are NODE_ENV=production, DJANGO_SETTINGS_MODULE or your own API keys.

Don't set PORT yourself

Passenger assigns the port. A Node.js app must read process.env.PORT; setting PORT=3000 or hard-coding a port breaks routing. Python apps don't listen on a port at all: Passenger loads the application object from passenger_wsgi.py.

4. Troubleshooting

  • App doesn't start or shows a 503: check the startup file name and path, read the log file named on the app's page, then restart.
  • Module not found: run Run NPM Install or Run Pip Install again, and check that package.json or requirements.txt is in the application root.
  • Static files don't load: for Node.js, serve them from your app (for example with express.static). For Django, run collectstatic into a folder inside your site's document root. No Apache proxy configuration is needed.
  • Changes don't show: restart the app. On cPanel a cached copy of a page can be served for up to 120 minutes, so add ?t=1 to the URL to check.
  • Resource errors (503, 508): the app hit your account's limits. See Understanding hosting resource limits.

5. SSH is optional

You don't need SSH for any of the steps above. Jailed SSH access is available on every shared hosting plan (cPanel, DirectAdmin, Webuzo). It is off by default; ask support to enable it for your account. Login is by SSH key, and the app's page shows the command that enters its environment. See Enabling and accessing jailed SSH.

6. When you've outgrown shared hosting

The App Platform suits production apps: Node.js is detected and built automatically, Python runs from your own Dockerfile, and every plan includes PostgreSQL and SSL. See Getting started with the App Platform. For root access, background workers or Uvicorn, use a VPS.

App Starter
₹100/mo + GST
  • 512 MB RAM per app
  • 1 vCPU
  • 5 GB NVMe SSD
  • PostgreSQL Database
See plan details
Can I run Node.js or Python apps on Domain India shared hosting?

Yes, on our cPanel and DirectAdmin servers. cPanel has Setup Node.js App and Setup Python App; DirectAdmin has the same CloudLinux selectors. For Webuzo, ask support.

Should I set PORT=3000 in my app's environment variables?

No. Passenger assigns the port. A Node.js app should read process.env.PORT, and a Python app exposes a WSGI application object instead of opening a port.

How do I install npm or pip packages?

List them in package.json or requirements.txt in the application root, then click Run NPM Install or Run Pip Install on the app's page and restart the app.

Do I need SSH?

No. Everything can be done from the control panel. Jailed SSH is available on request; it is off by default and uses key login.

Which Domain India product is best for a production app?

The App Platform, which builds Node.js apps automatically, runs other languages from a Dockerfile, and includes PostgreSQL and SSL. For root access, choose a VPS.

Ready to deploy? Start with the Node.js guide or the Python guide, compare App Platform plans, or ask us in a support ticket.

Outgrown shared hosting?

Deploy from GitHub or with a deploy token, with PostgreSQL and SSL included in every plan.

See App Platform plans

Was this article helpful?

Your answer helps us decide what to improve next.

Still need help? Open a support ticket and our team will reply.

Prefer an app? Add this site to your home screen.Get the app
Run Node.js or Python Apps on Shared Hosting