Before you start
You need a BookMyHost account with eKYC done. Indian CERT-In rules require every cloud customer to be verified, including on free plans, and it is a one-time check.
Then create an app server under Apps in the panel. Hobby is free, runs one app on a shared sandbox and sleeps when nobody visits. Starter, Pro and Business give you a private server for several apps, databases and your own domain. The plans are compared on the app hosting page.
Option 1: start from a starter template
Templates are small working apps that deploy as they are, so you can see the whole path work before changing any code. Next.js, Vite + React, Express, FastAPI, Django, Laravel and a plain static site are available, and all of them run on Hobby.
- Pick a template
On the app hosting page click Deploy in one click next to the framework you want, or open Apps → App Store in the panel.
- Choose the app server
If you have one app server it is picked for you. If you have none, the page offers to create a free Hobby server first.
- Click Install
The template is built and started. Framework secrets such as a Django SECRET_KEY or a Laravel APP_KEY are generated and set as environment variables for you.
- Open the address
Your app is served at its own name under apps.bookmyhost.com on HTTPS. The page shows a "your app is live" message.
- Make it yours
Copy the template into your own Git repository, change the code, and switch the app to that repository from its settings.
Option 2: deploy your own Git repository
Push your project to GitHub, GitLab or any Git host, then add an app on your app server and paste the repository URL and branch. BMH Apps detects the language (Node.js, Python, PHP, Go, Ruby or static files), installs the dependencies, builds and starts it.
Your app has to listen on the port it is told to. Read the PORT environment variable and bind to 0.0.0.0, not localhost. Most frameworks do this already; for Express it is app.listen(process.env.PORT).
- Set API keys and database URLs as environment variables in the app settings, never in the repository.
- Use the Logs tab when a build fails. The last lines usually name the missing package or the wrong start command.
- Click Redeploy after you push new code.
- Paid plans can also build from a Dockerfile in the repository.
Option 3: install an app from the App Store
The App Store installs popular open-source software in one click: WordPress, Ghost, n8n, Flowise, Open WebUI, Uptime Kuma, Umami, Vaultwarden, Gitea, NocoDB, PostgreSQL, Redis and more. Each app gets its own HTTPS address, and any passwords it needs are generated and shown to you once. Save them when they appear.
Most store apps need a database or more memory than the free sandbox has, so they start at the Starter plan. The store shows the minimum plan next to every app.
Add your own domain
On paid plans, open the app, go to Domains, and add your domain. Create the CNAME record the panel shows at your DNS provider. The certificate is issued and renewed automatically once the record resolves. Hobby apps keep their apps.bookmyhost.com address.
Things that trip people up
- Free apps sleep when idle and wake on the next visit, so the first request after a quiet spell takes a few seconds. Paid plans never sleep.
- Outbound email ports are closed. Send mail through an email API over HTTPS instead of SMTP.
- Files written inside the app are lost on redeploy unless they are in a database or object storage. Use PostgreSQL, or BookMyHost S3 for uploads.
- SQLite works on Hobby, but move to PostgreSQL before real users arrive.
- Deploying your own Laravel app? Copy nginx.template.conf from the Laravel starter into the root of your repository. Without it the web server sees two conflicting routes and the app does not start.