DEV Community

Rutvik Makvana
Rutvik Makvana

Posted on

Deploying a Node.js Application on AWS EC2 Using Tabby SSH Client

Deploying a Node.js application on an AWS EC2 instance is a crucial skill for backend developers. This guide walks you through deploying your Node.js application using the Tabby SSH Client. Let’s get started!

Prerequisites

1. AWS EC2 Instance

  • Ensure your EC2 instance is launched with the following:
    • Security Group allowing:
      • SSH (port 22)
      • HTTP (port 80)
      • HTTPS (port 443)

2. Tabby SSH Client

  • Installed and configured on your local machine.

  • Your private key for EC2 access added to Tabby.

3. Dependencies

  • Node.js application code hosted on a Git repository.
  • Optional: A domain name for production HTTPS setup.

Step-by-Step Deployment

Step 1: Connect to the EC2 Instance

  1. Launch the Tabby SSH Client.

  2. Connect to the EC2 instance using:

    • Public IP address
    • Private key associated with the instance.

Step 2: Install Required Dependencies on EC2

Once connected, update the system and install necessary packages.

Update System Packages

sudo apt update && sudo apt upgrade -y
Enter fullscreen mode Exit fullscreen mode

Install Node.js and npm

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
Enter fullscreen mode Exit fullscreen mode

Install Git

sudo apt install git -y
Enter fullscreen mode Exit fullscreen mode

Install PM2 (Optional, for Production Management)

sudo npm install -g pm2
Enter fullscreen mode Exit fullscreen mode

Step 3: Clone Your Node.js Repository

  • Navigate to your desired directory (e.g., /var/www):
cd /var/www
Enter fullscreen mode Exit fullscreen mode
  • Clone the repository:
git clone <your-repo-url> app-name
cd app-name
Enter fullscreen mode Exit fullscreen mode

Step 4: Set Up the Application

Install Node.js Dependencies

npm install
Enter fullscreen mode Exit fullscreen mode

Configure Environment Variables

  • Create an .env file:
touch .env
Enter fullscreen mode Exit fullscreen mode
  • Open the file in a text editor to add your environment variables:
nano .env
Enter fullscreen mode Exit fullscreen mode
  • Save and exit the editor.

Step 5: Start the Application

Run the Application

npm run start
Enter fullscreen mode Exit fullscreen mode

Or Use PM2 for Process Management

pm2 start app.js  # Replace 'app.js' with your main application file
Enter fullscreen mode Exit fullscreen mode

Step 6: Access the Application

  • Open a browser and navigate to:
http://<your-ec2-public-ip>:<port>
Enter fullscreen mode Exit fullscreen mode

Example:

http://13.60.229.203:5001/
Enter fullscreen mode Exit fullscreen mode
  • You should see your application running.

Next Steps

Optional Enhancements

  • Domain Setup: Point your domain to the EC2 public IP using DNS records.
  • SSL with Let’s Encrypt: Use Certbot to enable HTTPS.
  • Load Balancing: Add AWS Elastic Load Balancer for scaling.

Conclusion

Congratulations! You’ve successfully deployed a Node.js application on an AWS EC2 instance using Tabby SSH Client. This setup ensures a reliable and scalable environment for your application.

Share your experiences or ask questions in the comments below. Happy coding!

Top comments (0)