Guides

Deploy an App in One Click with NABHCLOUD Apps

Deploy a template, your own Git repo, an uploaded folder, or a one-click app like n8n on HTTPS with NABHCLOUD Apps, without managing a server.

Guides

Maybe you built an app using Cursor, Claude, Lovable or Bolt, and right now it only runs on your laptop. This guide shows how to put it online over HTTPS, without needing to learn Docker, Nginx or Linux first. Four routes work: begin from a starter template, link your own Git repository, upload your project folder directly, or install a ready-made application from our store.

Check out app hosting

Billing is hourly, a GST invoice is issued, and your app can go live within a minute.

Before you start

You will need a verified NABHCLOUD account with eKYC completed first. Under India's CERT-In rules, every cloud customer must be verified, including on the entry-level tier, and this check only happens once.

Next, open the Apps section of the panel and create an app server. Hobby runs a single app on a shared sandbox and pauses when nobody is visiting it. Starter, Pro and Business each provide a private server that can hold multiple apps, databases and a custom domain. You can compare all the tiers on the app hosting page.

Option 1: begin with a starter template

A template is a small, working application that deploys exactly as it is, letting you confirm the whole process before touching any code. Choices include Next.js, Vite with React, Express, FastAPI, Django, Laravel and a plain static site, and every one of these runs on the Hobby tier.

  1. Choose a template

    Go to the app hosting page and click Deploy in one click beside the framework you want, or open Apps → App Store inside the panel.

  2. Select an app server

    If you already have an app server, it is selected automatically. If you have none yet, the page offers to set up a Hobby server for you first.

  3. Click Install

    The template is then built and started. Any framework secret it needs, such as a Django SECRET_KEY or Laravel APP_KEY, is generated automatically and stored as an environment variable.

  4. Open the address

    Your app is now served on HTTPS at its own address under our apps subdomain, and the page confirms it is live.

  5. Make it yours

    Copy the template's code into a Git repository of your own, edit it as you like, and then point the app at that repository from its settings.

Option 2: connect your own Git repository

Push your code to GitHub, GitLab or any other Git host, then add a new app on your app server and paste in the repository URL together with the branch name. The platform works out the language on its own — Node.js, Python, PHP, Go, Ruby or plain static files — installs whatever dependencies it needs, and builds and starts the app.

Your application must listen on the port it is assigned. Read the PORT environment variable and bind to 0.0.0.0 rather than localhost; most frameworks already do this by default, and in Express it looks like app.listen(process.env.PORT).

  • Keep API keys and database connection strings as environment variables inside the app settings, not in the repository itself.
  • Check the Logs tab whenever a build fails; the final lines usually point to a missing package or an incorrect start command.
  • Switch on Auto-deploy, described further below, so each push deploys without any extra step, or click Redeploy manually after pushing.
  • On paid tiers, you can also build directly from a Dockerfile placed in the repository.

No Git repository? Upload your project folder instead

If your code is not yet sitting in a Git repository, add a new app, select Upload folder or zip, and choose your project folder or a .zip archive of it. Your browser compresses the folder, and it is then built exactly as a repository would be, with the same language detection and the same PORT requirement.

There is no need to include node_modules, virtual environments or build output, since these are ignored anyway and dependencies are installed fresh during the build. Store large media files in object storage instead of bundling them into the upload. To push out a change later, click Upload folder on that app's row, pick the folder once more, and the new files will replace the old ones as the app redeploys.

Deploy on every push

Open the app, go to its Auto-deploy tab, and click Turn on auto-deploy; the panel will then display a payload URL along with a secret.

On GitHub, open the repository and go to Settings → Webhooks → Add webhook, paste in the payload URL, set the content type to application/json, paste in the secret, and leave it set to "Just the push event". On GitLab, go to Settings → Webhooks, paste the URL, enter the secret into the Secret token field, and tick Push events.

After that, any push to the branch the app is tracking triggers a build and swaps in the new version, while pushes to other branches are simply ignored. Apps on the Hobby tier are limited to five builds a day. Should the secret ever leak, click New secret and update the webhook with the replacement.

On Pro and Business tiers, switch on Branch previews from the same tab. Pushing to any other branch then builds it at its own dedicated address, carrying a copy of the app's environment variables, so you can try out a change before merging it. Removing the branch deletes its preview too, and any preview left untouched for a week is automatically cleaned up.

Option 3: install a ready-made app from the store

Our App Store lets you install well-known open-source software with a single click, including WordPress, Ghost, n8n, Odoo, Dolibarr, Chatwoot, Mattermost, Grafana, Uptime Kuma, Vaultwarden, Gitea, NocoDB, PostgreSQL and more. Each installed app receives its own HTTPS address. Wherever we generate the admin password ourselves, it is stored under Login details on your app server page so you can retrieve it later; for other apps, you will be asked to set up the admin account on your first visit.

Since most store applications need a database, or more memory than the shared sandbox offers, they require at least the Starter tier. The store lists the minimum tier needed beside each app.

Add your own domain

On any paid tier, open the app, go to its Domains tab, and add your own domain there. Create the CNAME record the panel displays with your DNS provider. Once that record resolves, a certificate is issued and renewed for you automatically. Apps on the Hobby tier continue to use their default address.

Common pitfalls

  • Apps on the shared Hobby tier pause when idle and wake up again on the next visit, so the first request after a quiet period takes a few seconds; apps on paid tiers never pause.
  • Outbound email ports are blocked, so send mail through an email API over HTTPS rather than SMTP.
  • Any file your app writes locally is lost on the next redeploy unless it sits in a database or object storage, so use PostgreSQL, or our S3-compatible storage, for uploads.
  • SQLite is fine on the Hobby tier, but switch to PostgreSQL before real users start using the app.
  • If you are deploying your own Laravel app, copy nginx.template.conf from the Laravel starter template into the root of your repository; without it, the web server sees two conflicting routes and the app will not start.

Questions on this guide

Do I need to know Docker or Linux?

No. The build process, container, web server and certificate are all handled on your behalf, leaving you to work only with your code, environment variables and logs.

Is there an entry-level tier to start with?

Yes. The Hobby tier runs a single app on a shared, sandboxed pool with HTTPS on its own address, and it pauses when idle. Current plans and prices are shown on the app hosting page.

Which frameworks are supported?

Any framework a buildpack can recognise, including Next.js, React with Vite, Express, FastAPI, Flask, Django, Laravel, Go and static sites. Paid tiers can also build from a Dockerfile.

Where are the apps hosted?

In our datacentre in Noida, on our own network with DDoS protection, so your data stays within India.

Can I use my own domain?

Yes, on paid tiers. Open the app, go to Domains, add your domain, and create the CNAME record the panel displays; a certificate is then issued and renewed automatically. Apps on the Hobby tier keep their default address.

Can every Git push deploy automatically?

Yes. Switch on Auto-deploy within the app, then add the payload URL and secret it provides as a webhook on GitHub or GitLab. From then on, a push to the branch the app is tracking builds and swaps in the new version.

Plans and prices

App Hosting

Apps Pro

  • 2 vCPU
  • 4 GB RAM
  • 50 GB Disk
  • 10 Apps
  • 3 Databases
₹503.16/mo
billed monthly
Save 30%
Order Apps Pro

See all plans

Questions before you start?

Tell us what you plan to run and we will suggest the right setup.

Contact us