Can I host a Node.js or Python app on Webway?
Short answer
Yes. Webway shared hosting can run Node.js and Python web apps through an app manager built into your control panel. It suits websites and APIs built with Express, Flask, Django and similar frameworks.
It does not suit everything. Read the What doesn't work section before you build.
Which hosting supports it
Apps run through the CloudLinux app manager, which uses Phusion Passenger. Passenger needs the Apache web server or LiteSpeed Enterprise. It does not work with OpenLiteSpeed.
| Your hosting | Node.js and Python apps |
|---|---|
| cPanel hosting | Supported on all servers |
| DirectAdmin hosting | Supported on a few servers only. Most DirectAdmin servers run OpenLiteSpeed, where apps won't start (the site shows a 404 page) |
| Servers without CloudLinux (very few) | Not available. The app manager is not installed |
You can't see which web server your account is on. If you are on DirectAdmin, open a support ticket before you start building. We will confirm whether your server supports apps, or move your account to one that does.
Not sure which panel you have? See Which control panel do I have: cPanel or DirectAdmin?
Versions available
| Versions | Recommended | |
|---|---|---|
| Node.js | 12, 14, 16, 18, 19, 20, 22 | 20 or 22 |
| Python | 2.7, 3.7, 3.8, 3.9, 3.11 | 3.11 |
Older versions are there for existing apps. Start new projects on a recommended version.
How your app runs
Understanding this saves a lot of frustration.
- Your app starts when a visitor requests it. The first request after a quiet period is slow because the app is starting. This is normal.
- Your app may be stopped when idle. Passenger frees the memory when nobody has visited for a while. It starts again on the next request. Don't rely on anything staying in memory between visits.
- Passenger chooses the port. Your app must listen on the port in the
PORTenvironment variable, not a fixed number. - Code changes need a restart. Click Restart on the app screen after every upload.
- Your code lives outside
public_html. The app manager connects your domain to the app folder for you.
What works
- Websites and APIs: Express, Koa, Fastify, Flask, Django.
- Server-rendered frameworks such as Next.js or Nuxt, if you build them on your own computer and upload the output. See Limits below.
- npm and pip packages installed into your app's own environment.
- Environment variables, set on the app screen.
- Scheduled tasks, using cron jobs that call your app or run a script.
- MySQL databases created in your control panel.
ASGI-only Python apps (for example FastAPI served by Uvicorn) aren't supported, because Passenger expects a WSGI app. Use Flask or Django, or a VPS for ASGI apps.
What doesn't work
| Not supported | Why | Use instead |
|---|---|---|
| WebSockets | The connection is accepted but no messages pass through. Tested and confirmed | Polling. Socket.IO may work if set to its polling transport only. Not guaranteed |
| Always-running processes: Discord or Telegram bots, queue workers, background loops, anything that must run 24/7 | Apps start on request and are stopped when idle | A VPS. For scheduled jobs, use cron |
| Custom ports or listening on a fixed port | Passenger assigns the port | Listen on process.env.PORT / the PORT variable |
| Static React, Vue or Angular sites through the app manager | Not needed. They are plain files | Run the build locally and upload the output to public_html like any website |
| Servers, daemons or services that don't speak HTTP | Passenger only proxies web requests | A VPS |
Limits
Each hosting account has resource limits. These are the defaults:
| Limit | Default | What it means for your app |
|---|---|---|
| Memory | 2 GB | Shared by everything on your account, including PHP and the build steps you run over SSH |
| Entry processes | 30 | Simultaneous requests being handled. More than this and visitors see an error |
| Processes | 90 | Total running processes on the account |
Heavy build steps such as next build or large npm install runs can hit the memory limit and fail part-way. Build on your own computer and upload the finished output, then run only the install step on the server.
When you need a VPS instead
Choose a VPS or cloud server if you need any of these:
- WebSockets or real-time features
- A process that runs all the time
- Root access, custom system packages, Docker, or a specific runtime not listed above
- More memory or CPU than the limits above
- A database other than MySQL, such as PostgreSQL or MongoDB
See Webway's VPS hosting at webway.host/vps-hosting.
Next steps
- How to set up a Node.js app
- How to set up a Python app (Flask or Django)
- How to install npm packages for my Node.js app
- My Node.js or Python app won't start or shows an error
Did this answer it?