Documentation Index
Fetch the complete documentation index at: https://help.noxity.io/llms.txt
Use this file to discover all available pages before exploring further.
Updated: May 17, 2026

By Matic BončinaFounder
Review pending
Before you begin
- A Node.js project on your machine with a
package.jsonand an entry file (commonlyapp.jsorserver.js). - cPanel access on a plan that exposes Setup Node.js App.
- A domain or subdomain already pointed at the account.
Deploy Express
REST API on Express.
Deploy Next.js
SSR Next.js with a custom server.
Create the container
Click + Create Application
On an empty account you land on a list page with a single + Create Application button.



Fill in the form
- Node.js version: pick the highest LTS your code supports. Most projects want 22 or 20.
- Application mode:
Production. Switch to Development only while chasing a boot error. - Application root: a folder under your home directory, e.g.
myapp. Created for you if it doesn’t exist. - Application URL: the domain dropdown plus an optional path. Use
/for the root or/apito mount the app on a sub-path. - Application startup file: defaults to
app.js. Set this to the file that exports your handler. - Passenger log file: optional, but worth setting (e.g.
logs/passenger.log). It’s where boot errors land.


Upload your code
Three workflows. Pick whichever fits how your project lives today.- File Manager
- SFTP
- Git
Zip your project locally (skip
node_modules and .git), then:- cPanel home → File Manager.
- Navigate to the application root you created (e.g.
~/myapp). - Upload the zip, then right-click it and Extract in place.
- Delete the zip once the contents are extracted.
Install dependencies
Back on Setup Node.js App, find your app in the list and open it. Click Run NPM Install. cPanel sources the per-app virtualenv, then runsnpm install against the package.json in your application root.
Big dependency trees (Next.js, Nuxt, Strapi, anything that pulls in sharp) can OOM during install. Run it over SSH instead, with flags that keep the resident set smaller:
node_modules on a dev machine and rsync the tree up.
Set environment variables
The Environment variables editor sits below the buttons on the management page. Add entries one at a time. Variable names take letters, numbers, underscores, and dashes (max 256 characters). Values are ASCII, max 1024 characters. Common ones to set:| Name | Example value | Why |
|---|---|---|
NODE_ENV | production | Many libraries flip into a faster code path on this flag. |
DATABASE_URL | mysql://user:pass@localhost/dbname | Don’t commit secrets to git. Read them from env. |
JWT_SECRET | 32+ random characters | Same. Rotate from here, not from the code. |
Don’t set
PORT. Passenger ignores it. It drives the runtime over a Unix socket, not a TCP port. If your code reads process.env.PORT, that’s fine, but the value is irrelevant.Make the entry file Passenger-compatible
Passenger runs your code. Your code does not start an HTTP server. Export anhttp.Server or an Express app, do not call .listen().
app.js
app.js
listen() call, edit the file in place (File Manager → right-click → Edit, or via SSH) before the next restart.
Start and verify
Restart from the management page
Click Restart. Equivalent to
touch ~/myapp/tmp/restart.txt from SSH.Common issues
503 on every request
503 on every request
Almost always
app.listen(PORT) in the startup file. Swap to module.exports = app, then Restart.Cannot find module 'X' after deploying
Cannot find module 'X' after deploying
package.json is in the right place, but node_modules was built on a different machine or Node version. Click Run NPM Install so it builds against the per-app env.Boot times out after 60 seconds
Boot times out after 60 seconds
Passenger’s default startup window. If your app loads a large dataset or runs a synchronous DNS lookup on boot, raise the cap. Edit
~/myapp/.htaccess and add above the Selector-managed block:App URL returns the cPanel default page, not your app
App URL returns the cPanel default page, not your app
The application URL is set to a sub-path (
/api) but you’re hitting /. Either change the URL in the form, or move your routes so they match the configured path.`npm install` runs out of memory
`npm install` runs out of memory
PMEM is ~1 GB on shared plans. Run install over SSH with
--prefer-offline --no-audit, or build node_modules locally and rsync the directory up.Env var change doesn't take effect
Env var change doesn't take effect
Saving the editor stores the value but doesn’t reload the process. Hit Restart after every change.
Next
Deploy Express
Wire up an Express API.
Deploy Next.js
Run SSR Next.js behind Passenger.
Need a hand?
Open a ticket
Best for anything that needs an account check or a config change on our end.
Live chat
Faster for quick questions during business hours.



