Logo

dev-resources.site

for different kinds of informations.

πŸš€ Deploying Node.js Application with PM2, NGINX, and SSL Configuration πŸš€

Published at
10/7/2024
Categories
aws
ssl
nginx
pm2
Author
mahinur05
Categories
4 categories in total
aws
open
ssl
open
nginx
open
pm2
open
Author
9 person written this
mahinur05
open
πŸš€ Deploying Node.js Application with PM2, NGINX, and SSL Configuration πŸš€

Today, I deployed a new Node.js app on AWS using a smooth setup process with Node.js, PM2, NGINX, and Certbot for SSL(no need to touch cpanel). Only 5 steps to deploy your app in AWS. Here’s the step-by-step guide that can save time for you!

  1. Install Node.js & NPM:
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/nodesource.list > /dev/null
sudo apt-get update
sudo apt-get install nodejs -y
sudo apt install npm -y
npm i -g n
sudo n lts
Enter fullscreen mode Exit fullscreen mode
  1. Clone Your Repo and Setup PM2:
git clone <your-repo>
cd <your-repo-directory>
git checkout <branch-name>
npm install
sudo npm i -g pm2@latest
pm2 init
Enter fullscreen mode Exit fullscreen mode
  1. Configure PM2 with a Template:
module.exports = {
  apps: [
    {
      name: 'your-app-name',
      cwd: '/home/ubuntu/my-project',
      script: 'npm',
      args: 'start',
      env: {
        "KEY": "value",
      },
    },
  ],
};
Enter fullscreen mode Exit fullscreen mode
  • Make a subdomain first, then
  • Now add A record in your DNS - CPANEL for the public IP where your instance is live (example 3.107.76.239) and set TTL to 300
  1. Configure NGINX for Reverse Proxy:
sudo apt install nginx
sudo nano /etc/nginx/sites-available/default
Enter fullscreen mode Exit fullscreen mode
  • Set the domain and point your port in NGINX config:
server {
    listen 80;
    server_name yourdomain.com;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
Enter fullscreen mode Exit fullscreen mode
  • Restart NGINX:
sudo systemctl restart nginx

Enter fullscreen mode Exit fullscreen mode
  1. SSL Configuration with Certbot (NO TOUCH NEEDED IN CPANEL):
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
Enter fullscreen mode Exit fullscreen mode

Now you have your Node.js app running securely with an SSL-enabled domain πŸŽ‰
πŸ”— DM me if you'd like more tips on server setup, Node.js deployment, or other dev-related topics.

Nodejs #AWS #DevOps #PM2 #Nginx #SSL #FullStack #WebDev

ssl Article's
30 articles in total
Favicon
Building and Deploying a New API (Part 3)
Favicon
Using Cloudflare SSL with Elastic Beanstalk instances
Favicon
Generate your Let's Encrypt Digital Certificates for all your domains using Apache
Favicon
Renew LetsEncrypt SSL Certificate in WordPress by Bitnami
Favicon
Building an S3 Static Website with CloudFront Using Terraform
Favicon
You May Prefer to Know Less About PKI Flaws but Now Is Too Late
Favicon
Understanding SSL and Its Importance
Favicon
Heartbleed: The Bug That Shook the Internet
Favicon
How to Ignore cURL SSL Errors
Favicon
Secure Nginx with Let's Encrypt on Ubuntu
Favicon
How to Update SSL Certificate in SafeLine WAF through a File
Favicon
Deploy Vite-React Project in AWS EC2 using custom domain and free SSL Certificate.
Favicon
5 Steps for a Quick and Effective Transition to 90-Day TLS/SSL Certificates
Favicon
Guide to SSL Errors: What do they mean and how to fix them
Favicon
How to remotely EV code-sign a windows application using ssl.com
Favicon
Instant Domain Insights: Why Every Tech Professional Needs DNS Checker Pro
Favicon
INSY 8211 & Intro to Linux Administration - part_1 [Network and Web Server Configuration]
Favicon
Day 32: Securing Your Personal Blog with SSL/TLS (A Beginner's Guide)
Favicon
Understanding SSL/TLS: The Role of Encryption and Security Protocols in Internet Communication
Favicon
Get a free SSL certificates for your shared-hosting cPanel domain!
Favicon
Choosing an SSL certificate: paid or free β€” or whether you can do without one
Favicon
Chain of Trust: Decoding SSL Certificate Security Architecture
Favicon
Docker Server Certificate with SSL
Favicon
HTTPS and SSLs: Why They Matter, How to Use Them
Favicon
πŸš€ Deploying Node.js Application with PM2, NGINX, and SSL Configuration πŸš€
Favicon
Types of SSL Certificates
Favicon
AWS Certificate Manager Implementation
Favicon
Migration vom Nginx Proxy Manager zu Traefik πŸš€
Favicon
Migrating from Nginx Proxy Manager to Traefik πŸš€
Favicon
Self hosted supabase setup with Authelia and Caddy

Featured ones: