Start here: complete step-by-step guides

Node.js (Express) app: from your laptop to live, step by step

Create a small Express app, test it locally, push it to GitHub and deploy it on Cloud Ninza with HTTPS.

  1. Create the app on your computer
  2. Write server.js
  3. Test it locally
  4. Add a start script
  5. Launch a Node.js app
  6. Connect GitHub and deploy
  7. App settings
  8. Check it
  9. Go live on your domain
  10. Updating later

1. Create the app on your computer

mkdir my-app && cd my-app
npm init -y
npm install express

2. 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.js

4. 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 automatically

Stuck? 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.

Next step

Move your site, or your whole cloud estate

Shared hosting you can buy in two minutes. Infrastructure and managed services quoted by an engineer within one business day.