How to Install Node.js with NVM and setup Nginx. NVM stands for Node.js Version Manager which is more flexible tool to install and manage multiple versions of Node.js and the associated packages at the same time.
In this guide you are going to learn how install specific version of Node.js using NVM and configure Nginx and secure the installation using Let’s Encrypt. This setup is tested on Google Compute Engine running Ubuntu 22.04 OS
Install NVM
To install or update NVM you can use the curl command to download and execute the file. You can get the latest version from the nvm official repository. Copy the curl command from the readme section of the repo.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
This command will install NVM on your account. To use the tool you need to source your .bashrc file.
source ~/.bashrc
To verify the installation use the following command.
command -v nvm
If the installation is successful you should see the output as nvm.
List Node.js Versions
Once NVM is installed you can list all available Node.js versions using the ls-remote command.
nvm ls-remote
There will be a very long list to choose from. You can install any of the version listed here.
If you wish to install Node.js 12.18.3 version you cna simply use the install command with the specific version.
nvm install v16.15.0
Check the installtion using the default way.
node -v Output v16.15.0
can install a release based on these aliases as well. For example, to install the latest long-term support version, gallium, run the following.
nvm install lts/gallium
You can switch between any installed versions usingnvm use command.
nvm use v16.15.0
That’s it.
Create a Node.js Application
Now you can create a demo Node.js app.
cd ~/ sudo nano server.js
Insert the following code into the file
const http = require(‘http’); const hostname = ‘localhost’; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader(‘Content-Type’, ‘text/plain’); res.end(‘Welcome to Node.js!n’); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
Save the file and exit.
Install and Set up Nginx
sudo apt install nginx
Remove default configurations
sudo rm /etc/nginx/sites-available/default sudo rm /etc/nginx/sites-enabled/default
Create new Nginx configuration
sudo nano /etc/nginx/sites-available/yourdomainname.conf
Paste the following
server { listen [::]:80; listen 80; server_name yourdomainname.com www.yourdomainname.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection ‘upgrade’; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Save and exit the file
Enable your configuration by creating a symbolic link
sudo ln -s /etc/nginx/sites-available/yourdomainname.conf /etc/nginx/sites-enabled/yourdomainname.conf
Check your Nginx configuration and restart Nginx
sudo nginx -t sudo service nginx restart
Now you can visit your domain name in browser, you should view the output of your server.js (Welcome to Node.js!)
Install Let’s Encrypt SSL certificate
HTTPSHTTPS is a protocol for secure communication between a server (instance) and a client (web browser). Due to the introduction of Let’s Encrypt, which provides free SSL certificates, HTTPS are adopted by everyone and also provides trust to your audiences.
sudo apt install python3-certbot-nginx
Now we have installed Certbot by Let’s Encrypt for Ubuntu 22.04, run this command to receive your certificates.
sudo certbot -nginx -redirect -no-eff-email -agree-tos -m [email protected] -d yourdomain.com -d www.yourdomain.com
The Certbot client will automatically generate the new certificate for your domain and also configure HTTPs redirection.
Now you can configure auto renewal.
sudo certbot renew -dry-run
Conclusion
Now you have learned how to use NVM – Node Version Manager to install Node.js and also configure Nginx reverse proxy and install Let’s Encrypt SSL and secure it.
Thanks for your time. If you face any problem or any feedback, please leave a comment below.
How to Install Node.js with NVM and Nginx on Ubuntu 22.04