Extra 15% Discount in cart for new members, now at BurtiNET
00G
00S
00D
00S
Register

Node.js Hosting

Deploy your Next.js, Express, NestJS and Nuxt apps from cPanel in minutes. Node.js 22 and 24 LTS, NVMe storage, SSH and Git, on Turkey-based servers with a 99.9% uptime commitment.

  • Node.js 22 / 24 LTS
  • SSH & Git Support
  • Enterprise NVMe Storage
  • Turkey-Based Servers
BurtiNET Node.js hosting

Node.js Hosting Plans & Pricing

Pick a plan for the size of your project; SSH, Git, free SSL and DDoS protection are included in every plan.

For personal projects and APIs

Node Starter

$2.29 / mo $1.79 /mo
22% OFF
Period Total Monthly
Monthly $2.29 $2.29
Quarterly $6.57 $2.19
Semi-Annually $11.94 $1.99
Annually $21.48 $1.79
Biennially $38.16 $1.59
Triennially $50.04 $1.39
  • Site Barındırma: 1 Adet
  • Node.js Uygulaması: 2 Adet
  • Web Alanı: 10 GB NVMe
  • Trafik: Limitsiz
  • 2 vCore CPU
  • 2 GB RAM
  • MySQL Veritabanı: 3 Adet
  • E-Posta: 5 Adet
  • SSH Erişimi (Jailed)
  • Ücretsiz SSL
cPanel
Free .com.tr Domain
For small teams and MVPs

Node Plus

$3.39 / mo $2.69 /mo
21% OFF
Period Total Monthly
Monthly $3.39 $3.39
Quarterly $9.57 $3.19
Semi-Annually $17.94 $2.99
Annually $32.28 $2.69
Biennially $57.36 $2.39
Triennially $71.64 $1.99
  • Site Barındırma: 3 Adet
  • Node.js Uygulaması: 5 Adet
  • Web Alanı: 25 GB NVMe
  • Trafik: Limitsiz
  • 2 vCore CPU
  • 4 GB RAM
  • MySQL Veritabanı: 10 Adet
  • E-Posta: 10 Adet
  • SSH Erişimi (Jailed)
  • Ücretsiz SSL
cPanel
Free .com.tr Domain
For high-traffic apps

Node Ultra

$6.49 / mo $5.19 /mo
20% OFF
Period Total Monthly
Monthly $6.49 $6.49
Quarterly $18.57 $6.19
Semi-Annually $34.74 $5.79
Annually $62.28 $5.19
Biennially $107.76 $4.49
Triennially $140.04 $3.89
  • Site Barındırma: 25 Adet
  • Node.js Uygulaması: 30 Adet
  • Web Alanı: 100 GB NVMe
  • Trafik: Limitsiz
  • 6 vCore CPU
  • 8 GB RAM
  • MySQL Veritabanı: Limitsiz
  • E-Posta: 50 Adet
  • SSH Erişimi (Jailed)
  • Ücretsiz SSL
cPanel
Free .com.tr Domain

Prices exclude VAT. The discounted monthly price shown on each card applies to annual billing; see "Billing Options" for the other periods.

npm install, npm start: we handle the rest

Choose the Node.js version in cPanel, set the app folder and startup file, and install dependencies with one click. Your app goes live on your own domain with free SSL.

Node.js app running in a terminal after npm install and npm start

Setup Notes and Plan Picks by Framework

How 8 popular frameworks, from Next.js to Strapi, run on this platform and which plan suits each one.

Next.js

React SSR framework. After next build it runs with next start or the standalone server.js.

Recommended: Node Plus · 4 GB RAM for server builds

Express

Minimal web and API framework. app.js is the startup file and listens on process.env.PORT.

Recommended: Node Starter · enough for one API

NestJS

TypeScript API framework. Compiled with nest build; dist/main.js is the startup file.

Recommended: Node Plus · room for TypeScript builds

Nuxt

Vue SSR framework. After nuxt build the Nitro server runs from .output/server/index.mjs.

Recommended: Node Plus · 4 GB for build and SSR

Fastify

Low-latency API framework. Started with fastify.listen({ port: process.env.PORT }).

Recommended: Node Starter · light on memory

Remix

Remix / React Router 7. Runs on Express via @remix-run/express or @react-router/express.

Recommended: Node Plus · room for SSR builds

Strapi

Headless CMS. Works with a MySQL database; building the admin panel needs plenty of RAM.

Recommended: Node Pro · 6 GB RAM for admin builds

Astro

Content-first framework. For SSR, the @astrojs/node adapter (standalone) runs dist/server/entry.mjs.

Recommended: Node Starter · light for mostly static sites

Why BurtiNET Node.js Hosting?

NVMe and CloudLinux infrastructure on Turkey-based servers, with free DDoS protection, a 99.9% uptime commitment and a 3-day refund guarantee.

Your app runs
on servers
inside Turkey

Server Location
Turkey (Istanbul) Data stays in Turkey

Free DDoS protection on every plan

DDoS Protection
Protection On No extra charge

Node.js Plan Comparison

See resources, Node.js features and e-mail limits side by side.

Compare Plans

Pick the right plan for your app count, CPU and RAM needs; you can upgrade with one click later.

For personal projects and APIs Node Starter
For small teams and MVPs Node Plus
For growing projects Node Pro
For high-traffic apps Node Ultra
$2.29
$1.79 /mo
$3.39
$2.69 /mo
$4.89
$3.89 /mo
$6.49
$5.19 /mo
Disk Space
10 GB NVMe
25 GB NVMe
50 GB NVMe
100 GB NVMe
Websites (Domains)
1
3
10
25
CPU
2 vCore
2 vCore
4 vCore
6 vCore
RAM
2 GB
4 GB
6 GB
8 GB
Traffic
Unlimited
Unlimited
Unlimited
Unlimited
MySQL Databases
3
10
25
Unlimited
Control Panel
cPanel
cPanel
cPanel
cPanel
Operating System
CloudLinux
CloudLinux
CloudLinux
CloudLinux
Backups
Weekly
Weekly
Weekly
Weekly
Free SSL
DDoS Protection
Node.js Apps
2
5
15
30
Node.js Versions
22 / 24 LTS
22 / 24 LTS
22 / 24 LTS
22 / 24 LTS
npm & package.json
SSH Access (Jailed)
Git Deployment
Environment Variables
Entry Processes (EP)
20
30
40
60
Disk I/O
30 MB/s
50 MB/s
75 MB/s
100 MB/s
E-mail Accounts
5
10
25
50
Webmail
Spam Filter

Developer-Friendly Node.js Infrastructure

Write your code and manage the rest from the panel.

Choose Your Node.js Version

Node.js 22 and 24 LTS are ready to use. Pick a version per app and switch it from the panel with one click.

SSH & Terminal Access

Run npm, git and build commands on the server with secure (jailed) SSH and the cPanel Terminal.

Git Deployment

Connect your repository with cPanel Git Version Control and deploy automatically on every push with a .cpanel.yml file.

npm & Environment Variables

Install the dependencies in package.json with one click and define environment variables such as API keys in the panel instead of your code.

CloudLinux Isolation & DDoS Protection

Every account runs within its own CPU and RAM limits, so neighbours can't slow your app down. DDoS protection is free.

NVMe Storage & Weekly Backups

Fast npm installs and file access on enterprise NVMe drives; your data is backed up every week.

How to Deploy a Node.js App in cPanel in 6 Steps

Express, Next.js or NestJS: these steps use the Setup Node.js App screen to put your app live on your own domain in about 15 minutes.

  1. Create the application

    Go to cPanel → Software → Setup Node.js App → Create Application, enter the Node.js version, Production mode, application root, URL and startup file, then click Create. Keeping the application root outside public_html means your source code can't be reached from the web.

    Node.js version:           24
    Application mode:          Production
    Application root:          apps/myapp
    Application URL:           api.yourdomain.com
    Application startup file:  app.js
  2. Upload your code

    Upload a zip in File Manager and extract it, run git clone over SSH, or add a .cpanel.yml like the one below to the root of a repository connected to cPanel Git Version Control. Don't upload the node_modules folder.

    ---
    deployment:
      tasks:
        - export DEPLOYPATH=/home/user/apps/myapp/
        - /bin/cp -R app.js src package.json package-lock.json $DEPLOYPATH
        - mkdir -p $DEPLOYPATH/tmp && touch $DEPLOYPATH/tmp/restart.txt
  3. Install dependencies

    Click Run NPM Install on the Setup Node.js App screen; packages are installed into a virtual environment for that app. If you prefer SSH, enter the virtual environment with the source command shown at the top of the panel and run npm install.

    source ~/nodevenv/apps/myapp/24/bin/activate
    cd ~/apps/myapp
    npm install
  4. Set environment variables

    Production mode sets NODE_ENV=production. Add secrets such as database credentials and API keys one by one with Add Variable under Environment variables, and read them in code as process.env.DB_HOST.

    NODE_ENV=production
    DB_HOST=localhost
    DB_NAME=user_appdb
    DB_USER=user_dbuser
    DB_PASSWORD=a-strong-password
    JWT_SECRET=a-long-random-value
  5. Build and restart

    For Next.js, NestJS or TypeScript projects, run npm run build first and point the startup file at the compiled entry (for example dist/main.js), then click RESTART. For Express, the startup file can simply be an app.js like this:

    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => res.send('Hello from BurtiNET'));
    
    app.listen(process.env.PORT || 3000);
  6. Connect the domain and check SSL

    Once the domain's A record points to your server, AutoSSL installs a free certificate automatically; check it under cPanel → SSL/TLS Status. Finally, open the address in a browser or with curl and check the response.

    curl -I https://api.yourdomain.com
    # Expected response: HTTP/2 200

Where Should Your Node.js App Run: Hosting, VPS or Serverless?

We compared three infrastructure models on 8 points, from setup to pricing; pick the one that fits.

Feature
Node.js Hosting
Virtual Server (VPS)
Serverless Platforms
Setup and management Ready in cPanel; we maintain the server OS, updates and security are on you Platform-managed; platform-specific config
Root access No; jailed SSH and cPanel Terminal Yes; full root access No; only platform tools and CLI
Always-on processes No; starts on request, may stop when idle Yes; runs 24/7 with PM2 or systemd No; code runs for the length of a request
Pricing model Fixed monthly: from 99.90 TL + VAT Fixed monthly; based on allocated resources Usage-based; the bill grows with traffic
Data location Turkey-based servers Depends on provider; Turkey at BurtiNET Mostly US and EU regions
Scaling One-click upgrade (up to 8 GB RAM) Upgrade CPU, RAM and disk; you configure Scales automatically; so does the cost
E-mail and database Included: 5–50 mailboxes, 3–unlimited MySQL Not included; you install them Not included; separate services and fees
Turkish-language support Yes; technical support in Turkish Infrastructure support; software is on you Usually English docs and support tickets

Our Other Services

Let your infrastructure grow as your project's needs change.

Node.js Hosting FAQ

What you may want to know before deploying your Node.js app.

Node.js hosting is a hosting service built to run server-side JavaScript apps such as Next.js, Express or NestJS. Our plans come with Node.js, npm, SSH and Git ready; you create your app on the Setup Node.js App screen in cPanel and publish it on your own domain.

Node.js 22 and 24 LTS, both of which still receive security updates; support for 22 ends in April 2027 and for 24 in April 2028. To switch, edit the app on the Setup Node.js App screen, pick the new version from the list and save. After a major version change, run Run NPM Install again, because compiled modules such as bcrypt or sharp are tied to the Node.js version.

Yes. Build it with next build and run it with next start or with the server.js produced by output: 'standalone', or publish a fully static project as an export. The build step needs a lot of memory, so for larger projects we recommend building on your own machine or in CI and uploading the output; if you build on the server, choose Node Plus or higher.

Yes. Express, Fastify, NestJS, Nuxt, Remix, Astro (SSR), Strapi and any other framework that serves HTTP requests work, as do REST and GraphQL APIs. The startup file and recommended plan for each framework are listed in the framework table on this page.

You don't need PM2; apps are managed by cPanel and started by incoming requests. An app that receives no requests for a long time is stopped to save resources and starts again on the next request. Jobs that run at set times and then finish can use cPanel Cron Jobs; for bots, queue workers or daemons that must always run, we recommend a Virtual Server (VPS).

Every plan includes MySQL (MariaDB) databases: 3 on Starter, 10 on Plus, 25 on Pro and unlimited on Ultra. MongoDB and Redis are not installed on the server; you can connect to external services such as MongoDB Atlas.

Yes. Every plan has secure (jailed) SSH that only sees your own account, plus cPanel Git Version Control; clone your repository and set up automatic deployment with .cpanel.yml. Root access is not available.

Upload your package.json and click "Run NPM Install" on the Node.js screen in cPanel. You can also connect over SSH, enter the app's virtual environment with the source command shown in the panel, and run npm install.

Add values such as API keys or database credentials as environment variables on the Node.js app screen in cPanel, so secrets stay out of your code and Git repository. Restart the app after a change.

For websites, APIs and Next.js projects, Node.js hosting is enough and more affordable, with no server administration. If you need root access, custom ports, Docker, WebSocket-heavy apps or always-on services, a Virtual Server (VPS) is the better fit.

Yes. Upgrade to a larger plan with one click in the client area when your traffic grows; your files and apps stay in the same account and only your resource limits increase.

There is no free trial; instead, you can request a refund within 3 days of purchase. With monthly billing Node Starter costs 99.90 TL + VAT, so you can try the platform without paying for a long term. See our refund policy for details.

The plans differ in RAM, vCores, entry processes (EP) and app count: Node Starter offers 2 GB RAM and 2 apps, Plus 4 GB and 5, Pro 6 GB and 15, and Ultra 8 GB and 30 apps. Starter is enough for a single Express or Fastify API; choose Plus if you build Next.js on the server, and Pro or Ultra for CMSs such as Strapi or many client projects.

Use express.static('public') in Express, or the project's public folder in Next.js and Nuxt. Give files that don't change a long Cache-Control lifetime (for example maxAge: '30d') so browsers don't request them again and your Node.js process stays free. Fully static sites (Astro static, Next.js export) don't need a Node.js app at all; uploading the output to public_html is enough.

If you build on the server, we recommend at least 4 GB RAM, which means the Node Plus plan. A running Next.js server uses a few hundred MB in most projects; the heavy part is next build, which can go past 2 GB on mid-sized projects. If you build in CI such as GitHub Actions and upload the output, Node Starter's 2 GB can be enough for a single site.

Apps are started by incoming requests and stopped to save resources after a long period without requests; the next request starts them again. This cold start is short for light apps such as Express and can take a few seconds for large Next.js projects. Avoiding heavy work at startup (reading large files, warming caches) shortens it.

Yes; you can define commands that run at set intervals on the cPanel → Cron Jobs screen. For example, for a script that runs every night at 03:00, set the schedule to 0 3 * * * and the command to /home/user/nodevenv/apps/myapp/24/bin/node /home/user/apps/myapp/scripts/report.js. Cron is for jobs that run at a set time and finish; it does not replace an always-on daemon or queue worker.

Your app's error output (stderr) is written to the stderr.log file in the application root. Open it in File Manager or follow it live over SSH with tail -f ~/apps/myapp/stderr.log. If the app won't start or returns a 503 error, this file is the first place to look.

Your app should listen on process.env.PORT; you don't need to hard-code a port number. The server forwards requests arriving on ports 80 and 443 to your app itself; opening a port such as 3000 to the outside is not possible. The app.listen(process.env.PORT || 3000) pattern works both locally and on the server.

Use localhost as the host and 3306 as the port. Create the database and user on the cPanel → MySQL Databases screen and add the user to the database; cPanel prefixes both names with your account name (for example user_appdb). In Node.js, use the createPool function of the mysql2 package or, for Prisma, DATABASE_URL="mysql://user_dbuser:password@localhost:3306/user_appdb".

Yes; connect your repository with cPanel Git Version Control and define the deployment steps in a .cpanel.yml file at the root of the repository. If the repository is hosted in cPanel, every git push triggers a deployment automatically; for a repository on GitHub or GitLab, click Update from Remote and Deploy HEAD Commit in the panel. Adding a touch tmp/restart.txt line at the end restarts the app with the new code.

Yes; you can create 2 apps on Node Starter, 5 on Plus, 15 on Pro and 30 on Ultra. Each app is attached to its own domain, a subdomain (api.yourdomain.com) or a subdirectory (yourdomain.com/api) and has its own version, environment variables and startup file; add the subdomain first on the cPanel → Domains screen. All apps share the plan's RAM and CPU limits.

Our servers are in Turkey (Istanbul), so on the hosting side your app's data stays in the country. Article 9 of KVKK, Turkey's data protection law, places extra conditions on transferring personal data abroad, so keeping data in Turkey simplifies compliance. If your app uses e-mail, analytics or database services abroad, you need to assess those services separately.

Yes; moving takes a few steps and our Turkish-speaking support team helps wherever you get stuck. Upload the code with Git or a zip, create the app in Setup Node.js App, import the database with phpMyAdmin and enter your environment variables. Migrating your e-mail accounts is free.

What Is Node.js Hosting and Who Is It For?

Node.js is an open-source runtime that runs JavaScript on the server. Node.js hosting is a hosting service with that runtime ready, so you can put your app online in a few steps. Unlike classic PHP hosting, requests are answered by a JavaScript app that runs its own HTTP server, and you can install npm packages. Thanks to its event-loop design, Node.js handles many concurrent connections with little memory, which is why it is a common choice for APIs, dashboards and server-rendered sites. It is a practical option for teams that build the frontend in React or Vue and the API in Node.js, developers who keep server and client in one Next.js project, and small SaaS projects that don't want to manage a server.

How Does a Node.js App Run at BurtiNET?

Our plans run on cPanel, CloudLinux and LiteSpeed Enterprise. Apps are managed on the Setup Node.js App screen in cPanel (CloudLinux Node.js Selector): you choose the version and set the app folder, domain and startup file (for example app.js). "Run NPM Install" installs dependencies into a virtual environment dedicated to the app. Using Phusion Passenger, the app starts on the first request; if it stays idle for a long time it is stopped and starts again on the next request. Environment variables and restarts are managed from the same screen. Because every app has its own Node.js version and dependency folder, an older API on Node.js 22 and a new Next.js site on Node.js 24 can run side by side in the same account.

Which Apps Can You Run?

Any Node.js app that serves HTTP requests: server-rendered Next.js and Nuxt sites, REST or GraphQL APIs built with Express, Fastify or NestJS, headless CMSs such as Strapi, and webhook services for forms or payment notifications. For example, an online store's stock API, a mobile app's backend or a company site's Next.js frontend all fit this model. Use the MySQL databases in your plan or external services such as MongoDB Atlas. Discord or Telegram bots and queue workers that must run without HTTP requests are not a good fit for this model.

How to Deploy a Next.js Project

The next build step in Next.js uses a lot of memory. For larger projects we recommend building on your own machine or in a CI environment such as GitHub Actions. The most practical route is adding output: 'standalone' to next.config: Next.js produces a .next/standalone folder with only the files it needs plus a server.js, which you set as the startup file. Remember to copy the public and .next/static folders into the standalone folder yourself. Fully static projects can also publish the out folder produced with output: 'export'. If you build on the server, Node Plus and higher plans have more room.

Node.js Versions and LTS Support

Production apps should only run LTS versions that still receive security updates. Node.js 18 reached end of life in April 2025 and Node.js 20 on 30 April 2026; they no longer get patches for new vulnerabilities. Our plans offer Node.js 22 (supported until April 2027) and Node.js 24 (supported until April 2028). We recommend starting new projects on 24 and moving existing ones before support for 22 ends; switching takes one click in the panel.

A Node.js Server (VPS) or Shared Hosting?

Shared Node.js hosting is an affordable, maintenance-free option for websites, APIs and mid-sized projects: server updates, security and backups are our job. If you need root access, Docker, custom ports, WebSocket-heavy apps or bots and queue workers running 24/7, a Virtual Server (VPS) or VDS is the better choice. A rough rule: if your app only answers incoming HTTP requests, hosting is enough; if something has to run even without requests, you need a virtual server.

Why Host in Turkey?

If your users are in Turkey, running your app in the country lowers latency. A round trip to a server inside Turkey usually stays under 20 ms, while a round trip from Istanbul to a server in Frankfurt typically takes 30–50 ms; if a page makes several API calls while loading, that gap repeats with every call. Our servers are in Turkey (Istanbul), and keeping personal data in the country also makes KVKK compliance easier.

Security, Backups and Resource Isolation

CloudLinux keeps every account within its own CPU, RAM and I/O limits, so a busy account on the same server doesn't affect your app. Jailed SSH means your account only sees its own files. Every plan includes free SSL and DDoS protection, and your data is backed up weekly. AutoSSL renews certificates automatically before they expire. For databases that change often, we also recommend running mysqldump nightly with cPanel Cron Jobs and copying the output to your own storage. Our 99.9% uptime commitment is backed by our SLA.

Node.js Hosting Prices and How to Choose a Plan

With monthly billing, Node Starter costs 99.90 TL, Node Plus 149.90 TL, Node Pro 219.90 TL and Node Ultra 289.90 TL (excluding VAT). With annual billing the monthly equivalent drops to 79.90 / 119.90 / 174.90 / 229.90 TL, and with 3-year billing to 59.90 / 89.90 / 134.90 / 174.90 TL, saving roughly 20% to 40%. Including VAT, Starter costs 119.88 TL per month. When comparing prices, ask two questions: which billing period does the advertised price belong to, and does it include VAT? Many headline prices on the market are the monthly equivalent of a 3-year upfront payment. A simple rule for choosing: Node Starter (2 vCores, 2 GB RAM, 2 apps) is enough for one Express or Fastify API, a webhook service or a personal project. Node Plus (4 GB RAM, 5 apps) suits you if you build Next.js on the server or run 2–3 projects together. Node Pro (4 vCores, 6 GB RAM, 15 apps) is for agencies running Strapi alongside Next.js and SSR-heavy sites, and Node Ultra (6 vCores, 8 GB RAM, 30 apps) for many production apps. Annual and longer terms include a free .com.tr domain.

What Resource Limits Mean: vCore, RAM, EP, NPROC and I/O

Every account runs within its own limits through CloudLinux's LVE technology; those limits are the numbers in the plan table. vCore is the processor power you can use: 2 vCores means CPU equal to two full cores at the same time (2 on Starter and Plus, 4 on Pro, 6 on Ultra). An app that hits the limit is slowed down, not stopped. RAM is the total memory of all processes in your account (2, 4, 6 and 8 GB); every running Node.js app, npm install and build takes a share of it. If the limit is exceeded, the process asking for memory is terminated, which is why RAM decides whether large builds succeed. EP (Entry Processes) is the number of processes entering your account at the same time (20, 30, 40 and 60). It is not visitors per second but requests handled at the same moment; since requests finish in milliseconds, even a small EP value can handle heavy traffic. When the limit is full, visitors see a "508 Resource Limit Is Reached" error. NPROC is the total number of processes that can exist in the account at once; SSH sessions, cron jobs and child processes started during builds all count. When it is reached, no new process can start. I/O is the cap on disk read and write speed (30, 50, 75 and 100 MB/s); at the limit, work slows down rather than stopping. You can track your usage with historical graphs on the Resource Usage screen in cPanel.

Performance Tips to Speed Up Your App

NODE_ENV=production: according to the Express documentation, this single setting can improve performance up to three times thanks to template caching and shorter error output; choosing Production as the Application mode in Setup Node.js App sets it. Compression: the compression middleware gzips JSON and HTML responses; text-heavy responses usually shrink by 60–80%. Caching: keep frequently read, rarely changing data (category lists, settings) in memory for a short time, and give static files a long Cache-Control lifetime. Database pool: instead of opening a new MySQL connection on every request, use a pool of 5–10 connections with mysql2's createPool; connections stay open and aren't rebuilt per request. Don't block the event loop: fs.readFileSync, large JSON.parse calls and the synchronous version of bcrypt make every request wait; prefer the async versions. Shorten cold starts: load only the modules you need at startup and defer heavy preparation until after the first request. Memory limit: if builds hit the RAM limit, keep Node.js below your plan's RAM with a value such as NODE_OPTIONS=--max-old-space-size=3072.

Security Checklist Before Going Live

Secrets: put API keys and database passwords in the environment variables in Setup Node.js App, not in code or Git; if you use a .env file, add it to .gitignore. Dependency scanning: run npm audit --omit=dev before every deployment and commit package-lock.json to pin versions. HTTP headers: the helmet package removes the X-Powered-By header and adds protective headers such as Content-Security-Policy and Strict-Transport-Security with a single line (app.use(helmet())). Rate limiting: limit login and form endpoints with express-rate-limit, for example to 100 requests per IP per 15 minutes; since the app runs behind the web server, add app.set('trust proxy', 1) to see the real visitor IP. Input validation: validate user input with a schema library such as zod or joi, and always use parameterised SQL queries. Version tracking: support for Node.js 22 ends on 30 April 2027; plan your schedule around it. SSH: use an SSH key instead of a password; you can generate and authorise one on the cPanel → SSH Access screen.

Automatic Git Deployment with .cpanel.yml

cPanel's Git Version Control tool clones your repository into your account and runs the commands in the .cpanel.yml file at the repository root, in order, during deployment. There are two ways to work: with push deployment the repository is hosted in cPanel and every git push triggers a deployment automatically; with pull deployment you click "Update from Remote" and then "Deploy HEAD Commit" in the panel for a repository on GitHub or GitLab. A typical file has three commands: export DEPLOYPATH=/home/user/apps/myapp/ sets the target folder, /bin/cp -R app.js src package.json $DEPLOYPATH copies the files, and touch $DEPLOYPATH/tmp/restart.txt restarts the app. For deployment to work, the file must be committed at the repository root, the repository must have at least one branch, and the working tree must have no uncommitted changes. Don't copy node_modules; run Run NPM Install again when package.json changes. You'll find the full example file in step 2 of the deployment guide.

Common Mistakes and How to Fix Them

1. Hard-coding the port: use app.listen(process.env.PORT || 3000) instead of app.listen(3000); the server forwards requests to your app. 2. Skipping the build: in Next.js, the error "Could not find a production build in the '.next' directory" means npm run build wasn't run before next start; TypeScript and NestJS projects also won't start without the compiled dist folder. 3. Wrong startup file: the startup file field must point to the right file relative to the application root (app.js, dist/main.js or the server.js in the standalone output); a wrong file usually ends in a 503 error or an "Incomplete response received from application" message. 4. Uploading node_modules: CloudLinux keeps dependencies in a virtual environment per app and uses a symbolic link named node_modules in the root folder; a real node_modules folder uploaded from your computer makes Run NPM Install fail. Delete the folder and install from the panel. 5. Case sensitivity: require('./Models/User') works on macOS and Windows, but if the file is named models/user.js it throws "Cannot find module" on the Linux server. 6. Forgetting to restart: code changes don't take effect until the app restarts; click RESTART in the panel or update the timestamp of tmp/restart.txt with touch.