#BLOG
https://mrcloudbook.com/devsecops-ci-cd-deploying-a-secure-hotstar-clone-even-if-youre-not-a-pro/

📌 HOTSTAR Node.js App – DevOps Deployment Guide AWS EC2 + Docker + Docker Hub + GitLab CI/CD
This document explains how to set up and deploy the Hotstar NodeJS Project using:
AWS EC2
Docker & Docker Hub
GitLab CI/CD Pipeline
SSH Deployment to EC2
🚀 1. Create AWS EC2 Server ✔ Create EC2 Instance
Instance – Amazon Linux 2 / Ubuntu
IAM Role – hotstar-role
Key Pair – hotstar-key.pem
Security Group – Allow ports:
22 (SSH)
3000 (NodeJS App)
✔ Connect to Server ssh -i hotstar-key.pem ec2-user@ sudo su -
⚙️ 2. Install Docker & Git on EC2 yum install docker -y systemctl start docker systemctl enable docker
yum install git -y
📥 3. Clone GitHub Repository git clone https://github.com/Samir-CloudAwswithDevops/Hotstar-DevOps-Project-NodeJS.git cd Hotstar-DevOps-Project-NodeJS
🛠 4. Build Docker Image Locally docker build -t hotstar-nodejs-project:latest .
🔐 5. Login to Docker Hub docker login
Username: cloudsamir123 Password: Samir0563 (or Docker Hub Token)
📤 6. Push Docker Image to Docker Hub docker tag hotstar-nodejs-project:latest cloudsamir123/hotstar-nodejs:latest docker push cloudsamir123/hotstar-nodejs:latest
🐳 7. Run Docker Container on EC2 docker run -dt -p 3000:3000 hotstar-nodejs-project:latest
Open in browser:
http://:3000
🔐 8. Create Docker Hub Personal Access Token
Go to Docker Hub → Profile
Account Settings → Security
Personal Access Token → Generate Token
Permissions: Read/Write
Expiry: None
Save the token safely.
🔧 9. Configure GitLab CI/CD Variables
Go to:
Project → Settings → CI/CD → Variables → Add
Key Value DOCKER_HUB_USER cloudsamir123 DOCKER_HUB_PASSWORD Docker Hub token EC2_IP 54.227.160.227 (your EC2 Public IP) EC2_USER ec2-user EC2_SSH_KEY Paste the PEM file content IMAGE_NAME cloudsamir123/hotstar-nodejs:latest 🧾 10. Create .gitlab-ci.yml in Your GitLab Repo stages:
- build
- deploy
variables: IMAGE_NAME: "cloudsamir123/hotstar-nodejs" IMAGE_TAG: "latest" CONTAINER_NAME: "hotstar-nodejs" APP_PORT: "3000" DOCKER_TLS_CERTDIR: "/certs"
image: docker:24.0.6 services:
- docker:24.0.6-dind
before_script:
- docker info
build_and_push: stage: build script: - echo "Logging in to Docker Hub..." - echo "$DOCKER_HUB_PASSWORD" | docker login -u "$DOCKER_HUB_USER" --password-stdin
- echo "Building Docker image..."
- docker build -t "$IMAGE_NAME:$IMAGE_TAG" .
- echo "Pushing image to Docker Hub..."
- docker push "$IMAGE_NAME:$IMAGE_TAG"
only: - main
deploy_container: stage: deploy image: alpine:latest before_script: - apk add --no-cache openssh-client - mkdir -p ~/.ssh - echo "$EC2_SSH_KEY" | tr -d '\r' > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -H $EC2_IP >> ~/.ssh/known_hosts
script: - echo "Deploying to EC2..." - ssh $EC2_USER@$EC2_IP " docker pull $IMAGE_NAME:$IMAGE_TAG && docker stop $CONTAINER_NAME || true && docker rm $CONTAINER_NAME || true && docker run -d --restart unless-stopped -p $APP_PORT:$APP_PORT --name $CONTAINER_NAME $IMAGE_NAME:$IMAGE_TAG " only: - main
🟢 11. Run Pipeline
Go to:
CI/CD → Pipelines → Run Pipeline
If all stages pass:
✔ Image builds ✔ Image pushes to Docker Hub ✔ EC2 pulls & runs container
🌐 12. Access Application
Open in browser:
http://:3000
You should see the Hotstar NodeJS App Output 🚀
🎉 Deployment Complete!
Your CI/CD pipeline now:
Automatically builds Docker image
Pushes to Docker Hub
Deploys to EC2 container
Restarts the app automatically