- Create the app on your computer
- Write server.js
- Test it locally
- Add a start script
- Launch a Node.js app
- Connect GitHub and deploy
- App settings
- Check it
- Go live on your domain
- Updating later
1. Create the app on your computer
mkdir my-app && cd my-app
npm init -y
npm install express2. Write server.js
Create server.js. The important line is the last one: on our servers your app must listen on the port in process.env.PORT.
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello from Cloud Ninza!'));
const port = process.env.PORT || 3000;
app.listen(port, '127.0.0.1', () => console.log('Listening on ' + port));3. Test it locally
Run it, then open http://127.0.0.1:3000 in your browser. Stop it with Ctrl+C.
node server.js4. Add a start script
In package.json, under "scripts", add "start": "node server.js". Commit package-lock.json too — it makes installs on the server exact.
5. Launch a Node.js app
Dashboard → Launch an app → Node.js → version (the newest LTS, e.g. 24) → plan → your domain or a free address → pay. Wait for the ready email.
Connect GitHub and deploy
Push your project to GitHub (see Put your code on GitHub). In the dashboard open Git deployments, choose this app, pick GitHub, paste the repository address, branch main. For a private repository tick Private repository → Create deploy key and add the key in GitHub (Settings → Deploy keys, read-only). Press Test connection → Connect repository → Deploy now. Add the webhook shown on the page in GitHub (Settings → Webhooks, content type application/json) so every push deploys by itself.
7. App settings
Open App settings for the app. Framework: Node.js server (Express, Fastify, Koa…). Check the start command says node server.js. Under Environment variables press + Add variable for each setting your app needs (for example DATABASE_URL), then Save all.
8. Check it
Open your address. If you see 502 Bad Gateway, open App settings → Logs: usually the app does not listen on process.env.PORT, or a package is missing.
Go live on your domain
Point the domain's @ and www A records to the IP shown in Domains, wait for Points here, then Issue free SSL → Always use HTTPS → Save changes.
Updating later
git add .
git commit -m "New feature"
git push # deploys automaticallyStuck? Our engineers answer support tickets around the clock. Contact us, or create an account and open a ticket from the dashboard — the same guides are there too.