General Questions

Category: General

Absolutely yes.

Many a times when the projects become huge, the user data generated and stored can run into few 100 GBs and in extreme cases even into TBs. Typically this data will be stored in a data folder within the website root or off it within the user tree. Therefore many IT consultants and experts may advise that you would need to go for a higher specification VPS in order to accommodate this data.

Here we would like to assert that nowadays most VPS vendors offer volumes/block-storage which can be easily attached to a VPS. The price of this volume/block-storage is significantly less that the cost of the VPS.

Lets have a scenario where your PHP project is using 1-2 GB for running the website, but the data folder in itself is using 400 GB . Now here we also assume that your project runs well on a 2 vCPU core 4 GB RAM VPS ( Cloud Pro – Rs.2525 per month – https://n99panel.com/our-plans/ ) . For the CPU and RAM spec required, this VPS spec has only 80 GB SSD. Obviously this would not suffice. Therefore someone may believe that that a higher spec VPS i.e.  Cloud Pro – C8R32 would be required which would cost Rs.18600 per month. But now lets say we were to attach a 400 GB volume to the previous VPS. The price of the volume is Rs.12 per GB per month. Thereby the 400 GB volume would cost Rs.4800 per month. Therefore the total cost would be Rs.2625+Rs.4800 i.e. Rs.7425 per month . thus considerably lower.

Imp. GST @ 18% is applied to all prices.

Category: General

Yes. We do provide the capability to have a modified PHP setup at three levels – PHP-FPM, SSH and Cron

Even though the default extension set handles most cases out of the box, but we are more than willing to go an extra mile to get your PHP setup working as per your requirement. You would simply need to send us your requirements (assuming they are technically possible), and in about one working day’s turnaround time, we can provide a customized PHP setup.

in-fact we have already done successful setups for customers who required solutions pertaining to MongoDB, Magento etc.

Category: General

Yes, surely you can override or specify PHP INI directives.

There are two ways to go about it

  1. From within N99panel, under a VHost/Website, click on the edit icon against the label ‘Apply Custom PHP INI Settings’ . In the subsequent form place each INI directive on a separate line, and then click ‘Apply INI Settings’ . Upon a successful submission, the FPM w.r.t. the VHost/website would be restarted and the new directives should be applicable provided they are semantically and technically correct. For a list of valid PHP INI directives, please follow this link : https://www.php.net/manual/en/ini.list.php . This feature does not work if custom PHP is choosen.
  2. The custom PHP directives can also be set on per dir basis by using a .user.ini files . The directives set using this method, apply only to that particular directory and do not apply to the full directory tree. As mentioned above, each directive has to be placed in a separate line. Based on the type of directive, many master directives can be overridden with a corresponding entry in the .user.ini file.
Category: General

Yes. You can run cron jobs in N99panel.

To run a cron job, you would need to do two things
1. Create/Update cron jobs from within List Users >> User >> User Cron
2. Enable CronD from within List Users >> User >> Manage SSHD/CronD

The cron daemon/process uses UTC time. Therefore you would need to accordingly adjust time/period values of your cron entries.

Also to the cron daemon/process the entire user directory tree with all VHosts/Websites gets exposed.

Category: General

Yes.  Sure you can run Laravel projects on N99panel.

In Laravel, the exposed public directory is project_folder/public . If your Laravel project directly runs on the domain name, then under N99panel’s website/VHost management interface, you would need to extend the root dir for which you would need to place public under the requisite field/option of root dir extension.

In-case you are running Laravel into a sub-folder like example.com/myproject , in that case you would need to use the url-alias functionality of N99panel.

Also you would very likely need PHP and composer commands in the SSH terminal. In order to use this functionality, please enable Full SSHD flavor under Manage SSHd/Crond, for the respective user. Now relevant PHP interpreter is available in the form of phpXX where XX is the PHP version. For PHP 7.4, it would be php74 and similarly for PHP 8.1, it would be php81 . Similarly for composer 7.4 (which uses PHP 7.4) is usable via composer74 and composer 8.1 (which uses PHP 8.1) is available as composer81 .

Category: General

Yes. Git CLI is available via SSH. You can use the Git CLI to integrate your projects or workflows with a code repository like Github.

Category: General

Yes. It can be done.

MongoDB can easily be installed from within N99panel.

When MongoDB is installed, it would run on port No.: 27017 which would be globally accessible.

Upon successful installation of MongoDB, a MongoDB admin user will be created with a password. Details of the same would be shown when the installation is initiated.

You would need to use MongoDB Compass ( https://www.mongodb.com/products/tools/compass ) to manage MongoDB upon successful installation

You also have the option to change the password of the MongoDB admin user, after a successful installation

To use MongoDB from within your PHP scripts, you would need to choose PHP 8.1 (MongoDB) flavor, and your PHP script would need to connect to the MongoDB server’s private IP

MongoDB can also easily be used with NodeJS apps. To learn more about NodeJS, please cehckout this FAQ : https://n99panel.com/blog/ufaq/does-n99panel-support-nodejs/

Category: General

N99panel is technically a vendor agnostic platform i.e. it is not technically tied down with any cloud vendor or provider.

Though the plans mentioned at our website are with Linode/Akamai cloud. But if you want to run the N99panel VPS on any other cloud vendor like AWS, Digital Ocean, Vultr or Contabo etc., please send us the URL of your specific VPS specification, and we would send you the custom quote of the same with N99panel.

Category: General

While integrating CloudFlare, if you are using ‘Proxy’ for the website’s IP address, you may encounter an issue w.r.t. the SSL/TLS mode. The most likely symptom of this issue will be shown in the browser as ‘too many redirects’

The root cause of this issue is that SSL/TLS mode is being automatically set to ‘Flexible’, even though by default it was ‘Full’. This typically happens when Cloudflare detects that the nameservers of the domain have correctly been updated to the one’s issued by the Cloudflare.

This issue is already been mentioned in Cloudflare’s forum – https://community.cloudflare.com/t/ssl-changes-to-flexible-and-i-have-to-change-it-back-to-full/584065

A workaround to this issue is that after you have added your website/domain in the Cloudflare panel, under SSL

1. Change SSL Mode to Flexible
2. After 1-2 min, change it back to Full

This should work. In-case if you again see too many redirects error, again check this mode in the Cloudflare’s panel and/or the redirection logic of your website a.k.a .htaccess

Category: General

Absolutely yes.

All system users created by you have SSH/SFTP access.

In order to ensure user level isolation, each SSH user would have a port assigned to that particular user. You would need to use that port to SSH/SFTP into the VPS. The assigned SSH port is shown with the N99panel console.

But there maybe a scenario whereby you can only access port 22 (the common port for SSH). In order to work with it, from within the N99panel console you can map the port 22 to a particular user. At any given time only one user can be mapped to port 22. For e.g. if userA has been mapped to port 22, when you map userB, the mapping of SSH port 22 will be removed from userA, and the new mapping with be then with userB.

Also SSH access comes with three modes – Minimal, Moderate and Full, with varying number of commands. The default mode is Minimal, but you can easily update it from List Users -> Manage SSHD/CronD

Category: General

Under N99panel a VHost/Website is present under a user as /home/user/website_public_html . If a user is exmpl , and the website is example.com , VHost/Website path would be /home/exmpl/example.com_public_html .

The PHP code is not able to access the folders above this path i.e. it will not be able to access /home/exmpl/fldr1 nor it will be able to access /home/exmpl . This scenario is indeed desired as a matter of security practices. But if you wish to use /home/exmpl/fldr1 , you can use it via the external/expose dir feature under N99panel -> List Users -> User -> Expose Dirs . A typical entry under that option would be


But if you wish to use the full user tree i.e. /home/exmpl , then the entry would be


This expose dir or external dir feature can also used to access mounted volumes or block storage. For that, checkout the following link : https://n99panel.com/ufaq/can-large-external-volumes-be-attached-to-the-vps/



Category: General

In N99panel, there is no limit for the number of users you can have. A user in N99panel us defined as a system user with its own SSH password.  To host a website or a VHost, you need to first create a user. A user can have one or more websites under it.

Category: General

There is no limit on number of websites or users that you can make within N99panel. Only limitation is the VPS capability. For e.g. if the VPS has only 1 vCPU core and 1 GB RAM, then ideally you can put 3-5 moderate traffic websites. More sites can be places on a VPS with a higher specification.

Category: General

Under N99panel even if a user account is empty (with minimal SSHD/SFTP flavor and disabled CronD), the latent or hidden space used by it is about 270 MB . The latent space is also used by a website/VHost, even when it is empty. It is about 540 MB

The reason for this usage of latent space is containerization, the technology that ensures isolation of user accounts and websites/VHosts with each other, thus ensuring overall security of the system as such isolation prevents spread of attacks/malware from an infected account or a website to other parts of the system, thus improving the overall security.

To reduce this latent space usage, if the server admin is the person managing all accounts, placing multiple websites/VHosts under a single user account can further reduce this usage. For e.g. if you run 5 websites under a single account, the total latent space used will be about 0.27 GB + 2.7 GB i.e. 2.97 GB . Were you to run these 5 websites under 5 different accounts, the usage in that case would be 1.35 GB + 2.7 GB i.e. about 4 GB.

Category: General

N99panel panel allows you to upload/manage files/directories via any SFTP compliant client file FileZilla (highly recommended). FileZilla includes many advance features which make most file managers redundant. Now within N99panel, we have implemented ‘Directory Traversal’ under user accounts. From within it, you can do three operations which otherwise maynot be possible in a SFTP File Manager. These operations are – archive generation (making a zip file), archive extraction and recursive removal of  folder tree.

Now if you are running a WordPress based website, there are several file manager plugins available like File Manager ( URL : https://wordpress.org/plugins/wp-file-manager/ ) , Advanced File Manager ( URL : https://wordpress.org/plugins/file-manager-advanced/ ) etc.

If you are work on a Linux or a Mac client, you can also do a SFTP mount on to your local file system. You would need to Google it in order to make that work.

Category: General

Each valid website or a VHost when setup properly i.e. the IP address of the website should point to the VPS, will have its SSL certificate automatically configured at the time the website is added or later (on scheduled intervals) when its IP begins pointing to the VPS. The free certificate is issued by Let’s Encrypt and is valid for three months. ideally this certificate is automatically renewed within three months, but for reasons like wrong IP pointing etc., it can get delayed or may not get renewed.

In the case where you have purchased a SSL certificate, you can have it configured from N99panel console.

Category: General

Yes. Its is possible.

The main requirement for running Magento with Elasticsearch is that you would need to go for a VPS which has RAM greater than 8 GB.

As your Magento setup may also require custom PHP extensions/setup, please refer to the following answer for more details . https://n99panel.com/ufaq/can-i-have-a-custom-php-environment-with-extra-extensions/


Category: General

Yes. It is.

There are two modes of malware scanning – Realtime and OnDemand.

Realtime malware scanning scans for malware etc. in the new files or the files that have changed, The default mode of realtime scanning is detect & clean. So if you find files that have the extension .quarantined and are 0 bytes, very likely it represent the actual file which was detected and cleaned. In case for any reason you wish that realtime scans do not clean the detected file(s), please place a file ignore_scan.txt under /home/user . You can enter the full path of the file or the folder you wish to exclude from realtime scans. ignore_scan.txt can contain multiple entries with each entry on a separate line.

W.r.t. OnDemand scanning, it can be initiated by a N99panel admin user from within the N99panel interface. There are two modes under which OnDemand scanning can be done – Detect and Detect & Clean. In-case a malware is found, you can then download the relevant report pertaining to that particular scan. The OnDemand scanning also considers ignore_scan.txt as mentioned previously.

Category: General

Yes. Each website/VHost created under N99panel would have their own Redis instance. The name of this Redis instance is shown user website/VHost details/mgmt page. This Redis instance in in-fact a hostname.

This Redis instance can be used appropriately where required in your project. This Redis instance runs on its default port i.e. 6379.

Category: General

Yes. Varnish, a page caching servicem is available under N99panel.

By default Varnish is not enabled for a website/VHost. When you wish to use Varnish w.r.t. your website, within N99panel’s console, go to Details/Manage menu of the website/Vhost. There you would have the link/button to manage Varnish.

There are five options for Varnish :

  • Disable
  • Enable – Config 1
  • Enable – Config 2
  • Enable – Config 3
  • Purge/Clear-cache

With WordPress you can easily use Varnish and enable auto-purging of content (when it changes), by using the Proxy Cache plugin .

Very important : When you are doing design/coding changes of your website, please disable Varnish in that case. Varnish cache or any cache for that matter should only be enabled in production ready mode.

The Varnish setup is primarily optimized and configured for WordPress setups. W.r.t. available varnish configs

  • Varnish Config 3 covers 95%+ cases/scenarios and thus results in effective caching
  • Varnish Config 2 covers 60%+ cases/scenarios and thus sometimes varnish cache may get bypassed
  • Varnish Config 1 covers 25%+ cases/scenarios

When Varnish and specifically, when a higher number configuration is applied, it may impact certain sections of the website in unexpected ways, as certain cookies/sessions will have no effect based on varnish configuration selection. After applying a Varnish configuration, you should thoroughly check all parts of the website, and also ensure security and privacy is not compromised.

Category: General

If you migrated a website and you are seeing the error ‘too many redirects’, most likely in your .htaccess file there may be lines pertaining w.r.t. HTTP to HTTPs redirection. Please comment those lines. This should solve the problem in most cases.

But if your site is a WordPress website and still this problem is present, then most likely it is caused due to some redirection plugin. Please disable or move/remove the plugin or plugin folder to sort out this issue.

To effectively manage HTTP to HTTPS redirection, N99panel console already provides the in-built functionality. Under a website’s/VHost’s details/management section, the interface ‘HTTPS forced redirect:’ allows you to specify the option which you require.

Category: General

Under N99panel multiple PHP versions are available. There are three ways PHP is used
– FPM (via browser)
– CLI (Command Line Interface)
– Cron daemon

PHP usage via FPM is handled from within N99panel interface. Each VHost/Website under N99panel can have its own PHP version

When using PHP CLI via SSH, ‘Full SSHD flavor’ needs to be enabled for the respective user under ‘Manage SSHd/Crond’. Following points/info be considered
– Multiple PHP versions as accessible via php70 (PHP 7.0), php71 (PHP 7.1), php72 (PHP 7.2), php73 (PHP 7.3), php74 (PHP 7.4), php80 (PHP 8.0), php81 (PHP 8.1), php82 (PHP 8.2). The default PHP version accessed via php command is PHP 7.4
– Multiple corresponding composer versions are accessible via compose70, composer71, composer72, composer73, composer74, composer80, composer81
– To use composer with PHP 8.2, please use the following command to access composer php82 /usr/local/bin/composer

When using PHP with Cron daemon or cronjobs, ‘Full SSHD flavor’ needs to be enabled for the respective user under ‘Manage SSHd/Crond’ and the following be considered
– Refer to the article on how to use Cronjobs on N99panel – https://n99panel.com/ufaq/can-i-run-cron-jobs-in-n99panel/
– Multiple PHP versions are accessible using full paths of php executables as under
— /usr/bin/php70 (PHP 7.0)
— /usr/bin/php71 (PHP 7.1)
— /usr/bin/php72 (PHP 7.2)
— /usr/bin/php73 (PHP 7.3)
— /usr/bin/php74 (PHP 7.4)
— /usr/bin/php80 (PHP 8.0)
— /usr/bin/php81 (PHP 8.1)
— /usr/bin/php82 (PHP 8.2)
– Multiple corresponding composer versions are accessible as under :
— Composer with PHP 7.0 – /usr/bin/php70 /usr/local/bin/composer
— Composer with PHP 7.1 – /usr/bin/php71 /usr/local/bin/composer
— Composer with PHP 7.2 – /usr/bin/php72 /usr/local/bin/composer
— Composer with PHP 7.3 – /usr/bin/php73 /usr/local/bin/composer
— Composer with PHP 7.4 – /usr/bin/php74 /usr/local/bin/composer
— Composer with PHP 8.0 – /usr/bin/php80 /usr/local/bin/composer
— Composer with PHP 8.1 – /usr/bin/php81 /usr/local/bin/composer
— Composer with PHP 8.2 – /usr/bin/php82 /usr/local/bin/composer

A typical cron job may look like

*/15 * * * * /usr/bin/php80 /home/user/vhost_public_html/phpscript.php

The above cron will execute the above script every 15 min.

If you require a custom PHP extension, please let us know so that we can make it available for you.

Category: General

N99Panel is a control panel with a set of advance tools and options which lets you run any WordPress or WooCommerce or any PHP site seamlessly on your VPS .

Category: General

N99panel supports PHP versions right from PHP 7.0 to 8.2. Each website or a VHost can have its own PHP version. While choosing a PHP version, you also get the option to choose maximum PHP processes limit.

Choosing the correct PHP processes limit is very essential in order to manage outages or spikes in the web traffic, and to ensure that the VPS keeps running smoothly.

For a detailed article, please refer to : https://n99panel.com/ufaq/php-versions-and-their-cli-usage/


Category: WordPress

Yes. Under N99panel,  the WordPress discovery tool runs once every 24 hrs in order to locate the WordPress websites or setups, so that the same can then be latter managed from within N99panel.

But from within N99panel you have two options to expedite this process

  • Manually initiate discovery tool by clicking on ‘Discover WordPress Setups’
  • Add a current setup using the option ‘Add a Current WordPress Setup’


Category: WordPress

Yes. We do provide WordPress staging environment feature.

Using this feature you can easily push your current WordPress website to a staging environment, and then you can push back the same staging environment back to the original website.

In-fact you can have multiple staging environments for the same WordPress website or a setup.

Category: WordPress

Most likely cause of this issue is that the PHP’s memory_limit is set lower than what is required to make Elementor plugin run efficiently.

In order to fix it, the memory_limit value for PHP would need to be increased it to typically 512M. To do the same, please checkout our this FAQ : How to override or specify PHP INI directives

Then while setting the directive(s), add the following line


When you submit the directives, the FPM for the corresponding VHost/Website would be restarted and the valid new values would take effect.

Category: WordPress

Yes. Auto-updates can easily be enabled w.r.t. WordPress websites or setups.

Simply click ‘Manage Auto Updates’ and then you can choose whether you wish to enable auto-updates for core, plugins or themes. When auto-updates are enabled, our system at regular intervals (every 6 hrs) runs updates, where it has been enabled.

Category: WordPress

Though there are multiple ways to change the WordPress admin user passwords, but N99panel make its super-easy to do so.

Under N99panel, the ‘WP Admins’ list the current admins for a website or a setup. Simple click on ‘Change Password’ to auto-generate a new password using which you can log into the WordPress admin section. As a matter of best practice, immediately change the password after logging in.


Category: WordPress

There are situation where you need to give WordPress admin access to a developer or a consultant. It is not desirable from security point of view and also it leads to inconvenience as you may change you WordPress admin password before sharing the details and re-changing it back after the requisite task is done.

Now in N99panel you do not need to go through the above ordeal. Under WordPress setups, clicking on ‘WP Admins’, you easily create temporary admin accounts which are time limited i.e. those accounts would be removed or revoked after their validity is surpassed. Our system checks for such accounts every 15 minutes, and when it discovers an account whose validity has surpassed, it automatically revokes that account.

Category: WordPress

There may be situations where you are migrating a website from one domain to another domain, or you just need to search and replace a particular text string throughout your WordPress website.

In N99panel against a WordPress website or a setup, you can click on ‘Search-Replace’ link, and in the next screen simply enter your search and replace strings. Upon submitting it, throughout the relevant WordPress tables, the necessary action would be done.

Category: WordPress

Once your WordPress setup starts showing under N99panel, you have two options to update your plugins or themes

  • Bulk Update – You can easily update the WordPress core, all the WordPress plugins and themes, in a single action by using the update functionality. Here you have the option to select whether you wish to update the core, or the plugins or the themes.
  • Selective Update – When you list WordPress plugins or themes, if the update is available for a particular plugin or a theme, the update link would be visible. Just click it to update that particular plugin or theme.

The good thing is that all this can be done right from within N99panel.

Category: WordPress

Migrating a WordPress or a WooCommerce website is super easy with N99panel. Broadly speaking, it involves following steps

  1. In your cPanel, go to the File Manager and make an archive/zip file of public_html folder. Download this archive to your local system.
  2. Again from within cPanel, go to phpMyAdmin and export the DB. This should be a SQL file, preferably compressed as a zip file.
  3. Now in N99panel, create a user and a Website/VHost under it
  4. Upload both the archive file and the sql (can be zipped) file into the user directory using a SFTP client like FileZilla
  5. From within the Website/VHost details/mgmt menu, choose ‘ Restore a WordPress Archive (with SQL file) to the VHost’ .
  6. Now you would be prompted to enter the uploaded archive file name and the SQL file name. Submit the details and rest everything will be automated.

Now if everything works smoothly, you should have a working WordPress website . Our system handles all the behind the scene tasks.

Category: WordPress

When your WordPress website runs on a N99panel VPS, in order to send email from WordPress forms etc., we advise you to use the WP Mail SMTP Plugin. Also you would need to have a valid email ID for which you have the SMTP access.

In order to configure WP Mail SMTP, please refer to the following documentation : https://wpmailsmtp.com/docs/how-to-set-up-the-other-smtp-mailer-in-wp-mail-smtp/ . Also once you have configured WP SMTP, you can send a test email to verify whether it is working or not. To test the same, the WordPress menu hierarchy is WordPress Dashboard >> WP Mail SMTP >> Tools >> Email Test.

Category: WordPress

Surely yes.

Under N99panel, using the One Click WordPress installer, you can easily setup a WordPress website on the main domain or in a sub-folder. The process is simple, requires minimal details and is just a one-click process.

Category: WordPress

On a WordPress setup when it comes to caching for improving the page load times, we strongly advise you to use Varnish cache (it comes with N99panel) instead of using a caching plugin.

If you use a caching plugin for any reason whatsoever, please be aware of its URL pre-fetch or preemptive fetching feature. This feature lets the caching plugin store page content into the cache using background processes. Issue arises if the concurrency of the pre-fetching exceeds the max allocated PHP processes value. This can lead to exhaustion of VPS’s RAM leading to sluggishness and/or other unexpected behaviour.

Therefore our advice is that either,
1. If you are using Varnish, do not use other caching plugins in WordPress.
2. Or if you still wish to use a caching plugins, disable the preempt feature or lower its concurrency and frequency.

Category: WordPress

In case you get white-screen or some errors or a non-functional WordPress website after migrating from your old host, kindly ensure/do the following.

  • You should already have setup a MySQL User/DB pair with your WordPress MySQL data successfully uploaded into the new DB. And the same credentials reflect in your wp-config.php . These steps w.r.t. MySQL are automatically handled when you restore a WordPress archive (with MySQL DB) from within N99panel
  • Set WP_DEBUG to true in your wp-config.php file . Enabling it would show errors on the screen, if any. For details refer to https://wordpress.org/documentation/article/debugging-in-wordpress/
  • Check error_log file to see if any errors are present in there
  • Importantly check if there are any path references w.r.t. previous hosting, in your wp-config.php file.  If there are any references to the old paths, you would need to comment out those lines.
  • In some cases you may need to use the WordPress’s default .htaccess file as your current .htaccess may have entries leading to a non-functional setup. We advise you to take backup of your current .htaccess files and place a new .htaccess file .  For WordPress’s default .htaccess file, please refer to https://wordpress.org/documentation/article/htaccess/


Category: NodeJS

Yes. N99panel does support NodeJS. We support NodeJS with multiple versions 10, 12, 14, 16, 18, 20 along with npm accompanying the corresponding version.

There are two modes under which NodeJS apps can run. Dev. (development) or Prod. (production mode). A typical lifecycle of a NodeJS app would be to first develop/test it in dev. move, and then when you are sure that it runs as per your expectation, then you can setup the prod. mode for your App.

To learn more about dev. mode, please click here

To learn more about prod. mode, please click here

Category: NodeJS

This FAQ article has been updated on 18/Dec/2023

In N99panel we offer multiple versions of NodeJS with associated NPM versions. But there may be a use case or a scenario where you simply need the default NodeJS version. This is especially true when you are trying to deploy Next.js Apps (refer https://n99panel.com/ufaq/how-to-run-a-next-js-on-n99panel/ ).

To setup the default node version along with its accompanying npm and npx versions, please follow the following steps

Step 1 – Log into your N99panel

Step 2 – Click on ‘List Users’ to list all users, and against the user under which you need to change the versions, please click ‘View/Change Node CLI version’

Step 3 – You would be able to see the current CLI version for node and also would be able to change the same.

Once you have changed the version, log in via SSH and type

node -v

This would show the applicable NodeJS’s CLI version.

Category: NodeJS

Next.js can easily be run on N99panel . Before setting up your Next.js App, please ensure that you have gone through the FAQ article : https://n99panel.com/ufaq/does-n99panel-support-nodejs/

Now coming to Next.js, here we would provide by an example of how to set it up. As Next.js requires NodeJS version 18 or above on the command line, kindly follow this article to set your command line NodeJS version to 18 : https://n99panel.com/ufaq/how-to-add-a-default-node-and-npm-command-in-cli-or-ssh/ . Importantly, when you link the App from within N99panel’s console, please use ‘/’ as the value for ‘App Web Path’ . If you plan to run it on sub-url like /app1 , please design your App accordingly.

The example which we are going to follow in this case is mentioned at https://nextjs.org/learn-pages-router/basics/create-nextjs-app/setup . To properly deploy this Next.js app, we need to take these steps.

Step 1 – SSH as the user under whose VHost/Website the Next.js app is to be set. Here we assume the username to be user1

Step 2 – Change directory to node_apps using the command

cd node_apps

Step 3 – Install the App using the command

npx create-next-app@latest nextjs-blog --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"

The above command will install the app under the folder nextjs-blog

Now change the directory to nextjs-blog folder

cd nextjs-blog

Now initially we need to run the App under N99panel’s NodeJS’s Development mode at a port number as specified while linking the App from under N99panel. Here this author assume’s that the port number is 50011 . And later we plan to run this App in N99panel’s NodeJS’s Production mode at port number 40011. Therefore we need to appropriately adjust its package.json as under

"private": true,
"scripts": {
"build": "next build",
"dev": "next dev -p 50011",
"start": "next start -p 40011"
"dependencies": {
"next": "latest",
"react": "18.2.0",
"react-dom": "18.2.0"
"engines": {
"node": ">=18"

Now we just need to start the App using the command

npm run dev

Now from within N99panel console, link a Node App in development mode using the following values for the concerned fields

App Web Path : /
App Port : 50011
App Mode : Development

If you have properly linked your App from within N99panel’s console, you should be able to see a working App on your App URL which in this case is just /

If the App does not work at this stage, you need to resolve the issues pertaining to it before moving to the next step i.e. running the App in production mode.

Step 4 – If your app is running as mentioned above, you need to stop it in your SSH console use Ctrl+c . And also remove it from within N99panel’s console.

Step 5 – To prepare the App for production mode, you need to prepare it using

npm run build

Step 6 – Now from within N99panel console, link a Node App in Production more using the following values for the concerned fields

App Web Path : /
App Port : 40011
App Mode : Production (npm start)
Prod. filesystem Path : nextjs-blog
Prod. Node Version : 18

Now save it and wait for at-least one min to check via browser whether your App has come online or not.

Conclusion : Here we have seen that it is not that complicated to setup your Next.js App from within N99panel. For any questions/queries, please feel free to reach us at 91-9872263977

Category: NodeJS

Under development mode, the NodeJS app is run via SSH. The port on which your App should run should be in the range of ports made available to the SSH user. To run the app in development mode

  1. Login into the N99panel
  2. Go to under Dashboard -> Node Apps -> Link a Node App
  3. Select the VHost (website) mentioned along with the user and the port range. If under the port range it shows ‘Requires user rebuild’, rebuild the user from Dashboard -> List Users -> Rebuild (for the desired user) and click ‘Rebuild User’. After rebuilding the user, revert to the ‘Link a Node App’ page.
  4. Enter the ‘App Web path’ . This would be like /app1 or /app2 or it can even be the website root i.e. /
  5. Enter the ‘App Port’ . The port entered under should be within the range of the port numbers mentioned in point 3.
  6. Select the ‘App Mode’. This should be ‘Development’
  7. And finally click ‘Submit’

With the above steps, you have mapped the web-server to the VHost/Website’s URL part and the port number where we can expect the NodeJS App to be running.

N99panel comes with multiple NodeJS versions i.e. 10, 12, 14, 16, 18, 20. These versions can be referenced from within SSH using the commands node10 , node12 , node14, node16, node18, node20 respectively. The npm’s accompanying these versions can be referenced via npm10 , npm12 , npm14, npm16, npm18, npm20 respectively.

Now to run the App,

  1. Login into the server/VPS via SSH of the user ID under which the VHost/website is running.
  2. Though you can run the NodeJS App from any folder, but ideally create a new App folder within the node_apps folder. This would help later also when we shift this App to the Production mode.
  3. Now assuming that you created a app folder app1 , now under that folder upload all your source files including package.json
  4. Lets’s say that we wish to user version 16 , to run NPM commands w.r.t. that ideally we will use npm16  .
  5. To run the app, we should first ensure that the NodeJS source file creates the Node server at ‘App Port’ number. We’ll explain further via example
    1. Let’s say the user port range is 50001 to 50010 , and the port we entered under ‘App Port’ is 50001
    2. Now my app file is say app.js . In my app.js I would need to create the server on port 50001 .
  6. To now actually run the app, we just need to type

node16 app.js  &

Above process would now start the App as a background process. If there are errors, it will simply show the errors and the process would end. And when you fix the errors, you can again try starting the App.

When you believe that you app is running stably and as per your expectations, at that moment you can decide to shift your App to the Production mode. Click here to read about it.

Category: NodeJS

You should run your NodeJS App in production mode only when you are sure that your App will run in a stable way. This you can easily ensure by first running your App in development mode. To run your app in development mode or to install requisite npm modules, please refer to the following link : https://n99panel.com/ufaq/how-to-run-work-with-development-mode-for-nodejs-apps  .

Now to run the App in production mode,

  1. Login into the N99panel
  2. Go to under Dashboard -> Node Apps -> Link a Node App
  3. Select the VHost (website) mentioned along with the user and the port range.
  4. Enter the ‘App Web path’ . This would be like /app1 or /app2 or it can even be the website root i.e. /
  5. Enter the ‘App Port’ . The port on which your App creates the server. The value for the App Port should be in the range of 40000 to 50000
  6. Select the ‘App Mode’. This should be ‘Production (node)’ or ‘Production (npm start)’
  7. Now enter the reference to the App file in the  ‘Prod. filesystem Path’ field. Your app should be in /home/{username}/node_apps . Ideally a separate folder so that you can run multiple apps without disturbing each other’s dependencies. Our app would typically be placed in a folder with /home/{username}/node_apps  .  Depending upon the ‘App Mode’, following points apply
    1. Now if our ‘App Mode’ was ‘Production (node)’, then this path should lead to a file. if my app files is app.js , the value entered in  ‘Prod. filesystem Path’ will be app1/app.js , if app1 was the folder containing the app.
    2. But if our ‘App Mode’ was ‘Production (npm start)’, then this path show lead to a folder where your package.json resides. The example value for ‘Prod. filesystem Path’ can be app1 , implying the full path to be /home/{username}/node_apps/app1 .
  8. Next, select the ‘Prod. Node Version’ . The available versions are 10, 12, 14, 16, 18, 20
  9. Next if you wish to run a Redis instance alongside your App, enable the same by clicking the checkbox against ‘Redis (Prod. mode only)’
  10. And finally click ‘Submit’

Please note : Only one app can run on a given VHost/website and App Web path’ . If you were earlier running an app on development mode at that path, unlink that App first from within Dashboard -> Node Apps -> App : Remove Linking , and then link the same app again in production mode.

Before running your app in production mode, kindly test your app in development mode first. Only after extensive testing, you may then use production mode.

To manage the App process, you can do the same from within Node Apps -> App : Manage App State

Category: NodeJS

As earlier mentioned in the FAQ, you can run NodeJS app either in developer mode or in production mode. Refer to this link for more details w.r.t. that.

Now lets say you are running your app as /app1 , the various static assets like images, css, js etc., should be placed under the VHost’s/Website’s folder i.e. /home/{username}/{vhost}_public_html/app1 .

If you were running your app as / or as website root, then all assets should be placed under /home/{username}/vhost_public_html


Category: MySQL

Yes. You can easily use a N99Panel VPS to run a MySQL server only. To use it in this way,

  1. Create a system user
  2. Create a MySQL DB and a MySQL User Pair
  3. Grant remote access to the MySQL DB
  4. Allow access to 3306 port

You can do all the above steps right from within the N99panel console

Ideally a standalone MySQL VPS should be used with another N99panel VPS instance so that they communicate on the private IP range. To setup a private IP, you would need to contact N99panel support team.

Category: MySQL

Importing a SQL file in N99panel is pretty straight forward. Our import process easily handles large SQL files  ( > 500MB ) which on most other systems or via phpMyAdmin is problematic. But in N99panel it is real easy

Broadly it involves following steps. Here we assume that you have already create a system user and a MySQL DB

  1. At your local system, compress the file into a zip file (if not already done so)
  2. Upload the file to the system’s user home dir via a SFTP client like FileZilla
  3. Within N99panel console, go to ‘Restore an Uploaded MySQL File’ functionality and fill in the necessary details.
  4. Once you submit the details, the restoration of the SQL file to the MySQL DB will begin in the background.

That it. Ideally it should work smoothly, but is some cases due to version differences of MySQL/MariaDB setup on N99panel and the source setups at where the dump file has been generated, the import process can fail.

Even when a background job is completed, under N99panel please go to ‘Tasks’, and check if any errors have been reported. Even after a deemed successful importation, please verify the table count on the restored DB. This should match with the table count in the imported SQL file.

Category: MySQL

At times, when a database is restored under N99panel, the unicode characters in certain field/columns of a table, may not handle the way you had expect it would be handled.  The primary reason for this is the difference in collation of the field/column viz-a-viz the old setup.

When a mysqldump file is generated at the source, and the collation of the table or the field/column is not explicitly defined, therefore when it is restored at N99panel, the default collation of the VPS’s MySQL/MariaDB engine applies. This leads to improper handling of certain field/column types which contain the unicode content.

In order to fix it, before proceeding with the below mentioned steps, please take a full backup of your database and also verify the same. If the concerned field/column or the table has its collation set to ‘latin1_swedish_ci’ , and also when you are totally satisfied with the backup, then only proceed with the following steps.

Here, under PHPMyAdmin, you would need to run the following command w.r.t. a field/column in a table. Please use wise discretion and due-diligence before running these commands by substituting the relevant context/keywords. Details provided further below.

/* -- */
/* -- */


  • TBLNAME is the name of your table
  • CLMNAME is the name of your field/column containing unicode data
Category: MySQL

Yes, N99panel provides phpMyAdmin whereby you can manage all aspects and operations of your databases.

We would like to add here that operations such as MySQL DB creation, MySQL user creation, MySQL DB-User mapping etc., can easily be done from N99panel console without requiring advance SQL knowledge and without using phpMyAdmin. Infact we highly recommend that you use N99panel console to manage all aspects of your MySQL administration.

Category: MySQL

When importing a MySQL DB in N99panel, via MySQL DB import functionality ( https://n99panel.com/ufaq/how-can-i-import-a-very-large-mysql-db-or-a-sql-file-into-a-n99panel-vps/ ) , and if you see any error under N99panel tasks pertaining to ‘Cannot add or update a child row: a foreign key constraint fails’ or any similar errors w.r.t. foreign key constraints failure, please do the following action.

Plase the following line


as the very first line in your SQL File , and try re-importing again. This should solve the issue.


Backups and Restorations

N99panel comes with incremental backups and restores functionality. These incremental backups are on per website/VHost basis and are automated on per day basis with each backup also being a restore point. You can also manually create an incremental backup from the N99panel console.

V. Imp: These backups are stored ONSITE i.e. they are stored on the server/VPS itself. It is not a offsite backup. In event of harddisk crash or a catastrophic failure, it will not help. Therefore you are very strongly advised to take manual backups of your contents to your PC/Laptop/device at regular intervals.

The incremental backup service also comes with a WP DB snapshot functionality, only w.r.t top domain. Does not apply to WordPress installations under sub-folders. The incremental backups, which are run on Sunday, will also take a snapshot of the database, provided that the website is a WordPress website.  Now restoring a WordPress website from an incremental backup with WP DB snapshot is a one click process. At any given moment a maximum of only 8 WP DB snapshots can be taken.

Otherwise as such, the incremental backups do not include MySQL backup or dumps. MySQL backups/dumps are again automated based on certain logic. Additionally you can also create a MySQL DB backup from within N99panel console.

The count of incremental backups work as a rolling process i.e. the maximum number of restore points with incremental backup will vary between 30 and 59.

If there are any exposed or external directories where an exposed directory might look like /home/user/data . and is mapped to /home/user/example.com_public_html/data ,  the incremental backup excludes these directories. Typically exposed/external directories will practically be volume mounts which can run into several 100 GBs where as the example.com_public_html will actually the files/structures used for running a website and only only consuming few 100 MBs

The incremental and MySQL backups are onsite backup i.e. they reside on the VPS itself. For better redundancy we advice that you buy a separate offsite backup plans to where these incremental and backups can be synced. Offsite syncing of incremental and MySQL backups is available @ Rs.1000+GST per 50 GB per month.

The backup features mentioned above are on as is basis with no guarantees. As a matter of best practices, you should always have a backup of all the data in your local system.

Imp: Restoring a backup would automatically void/remove any File-Locks which have been applied on the VHost/Website.

A typical website has two components – directories/files and the database. The first step is to create an archive of the website’s folder. From within N99panel, under the user’s menu, select Folder Operations and then choose Directory Traversal. There would be a directory by the name of sitename_public_html . W.r.t. this directory, click the zip icon and follow the remaining steps. On completion of all these steps, a zip file pertaining to the VHost/website would be generated. This can be downloaded via a SFTP client like FileZilla

W.r.t. database, provided you know the name of the DB, from within N99panel traversing as under : Dashboard » MySQL » MySQL DBs » Generate MySQL DB Bkp , you would be able to create the backup of the MySQL database. This can again be downloaded via a SFTP client like FileZilla.