Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ–₯️ Virtualization Using Cloud Computing

AWS EC2 Β· Docker Β· Flask Β· React Dashboard

Python Flask Docker AWS License

A working cloud-based virtualization framework built on AWS Free Tier. Demonstrates VM-based and container-based virtualization, REST API orchestration, and a live web dashboard β€” all deployed within 24 hours at zero cost.

πŸ“„ Published as a conference paper: "Virtual Desktop Infrastructure using AWS WorkSpaces" β€” VIT Chennai, 2026.


πŸ“Œ Table of Contents


πŸ” Overview

This project implements a layered virtualization architecture on AWS, demonstrating how cloud-based virtual environments can be created, orchestrated, and monitored through a web interface.

Key achievements:

  • Deployed an AWS EC2 Ubuntu instance as the virtualized host environment
  • Ran multiple Docker containers (Nginx, HTTPD) as isolated virtual services inside EC2
  • Built a Flask REST API to serve container status and metadata to the frontend
  • Developed an HTML/JS dashboard that dynamically connects to the cloud backend via HTTP
  • Achieved zero-cost operation using AWS Free Tier for the entire infrastructure
  • Demonstrated distributed teamwork over cloud infrastructure (backend + frontend split)

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  AWS EC2 (Ubuntu)                   β”‚
β”‚                                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚  Flask API   β”‚    β”‚    Docker Containers     β”‚    β”‚
β”‚  β”‚  Port: 5000  │◄──►│  Nginx  (Port 8081:80)  β”‚    β”‚
β”‚  β”‚              β”‚    β”‚  HTTPD  (Port 8082:80)  β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚         β”‚                                           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚  HTTP (Public IP)
          β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  React/HTML Frontendβ”‚  ← Local or secondary machine
β”‚  Dashboard UI       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The system integrates three architectural layers:

Layer Technology Role
VM-based AWS EC2 (Ubuntu t2.micro) Isolated cloud virtual machine
Container-based Docker (Nginx, HTTPD) Lightweight isolated services
API / Control Flask (Python) REST interface for orchestration
Frontend HTML + JavaScript Live dashboard & monitoring UI
Optimization AWS Free Tier + Docker runtime Zero-cost resource management

πŸ› οΈ Tech Stack

  • Cloud: AWS EC2 (Ubuntu Server, t2.micro β€” Free Tier)
  • Containerization: Docker, Nginx, Apache HTTPD
  • Backend: Python 3, Flask, Flask-CORS
  • Frontend: HTML5, CSS3, Vanilla JavaScript (React-style dashboard)
  • Networking: SSH (key-pair auth), HTTP REST, Public IP routing

πŸ“ Project Structure

virtualization-using-cloud-computing/
β”‚
β”œβ”€β”€ app.py                  # Flask REST API (backend)
β”œβ”€β”€ Dockerfile              # Docker image for Flask app
β”œβ”€β”€ docker-compose.yml      # Multi-container orchestration
β”œβ”€β”€ requirements.txt        # Python dependencies
β”œβ”€β”€ ec2-setup.sh            # EC2 bootstrap script
β”‚
β”œβ”€β”€ frontend/
β”‚   └── index.html          # Web dashboard (connects to Flask API)
β”‚
β”œβ”€β”€ screenshots/            # Evidence screenshots from deployment
β”‚   β”œβ”€β”€ ssh-ec2-access.png
β”‚   β”œβ”€β”€ docker-containers.png
β”‚   β”œβ”€β”€ flask-ec2-console.png
β”‚   β”œβ”€β”€ nginx-web-interface.png
β”‚   └── cost-comparison.png
β”‚
└── README.md

πŸš€ Setup & Deployment

Prerequisites

  • AWS account (Free Tier eligible)
  • Docker installed locally (for testing)
  • Python 3.8+

Step 1 β€” Launch EC2 Instance

  1. Go to AWS Console β†’ EC2 β†’ Launch Instance
  2. Choose Ubuntu Server 22.04 LTS (Free Tier)
  3. Instance type: t2.micro
  4. Create or select a key pair (.pem file) for SSH access
  5. Allow inbound ports: 22 (SSH), 5000 (Flask), 8081, 8082 in Security Group

Step 2 β€” SSH into EC2

chmod 400 tanisha-key.pem
ssh -i tanisha-key.pem ubuntu@<your-ec2-public-ip>

Step 3 β€” Bootstrap the EC2 instance

Run the setup script (or manually execute each step):

# Update & install dependencies
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3-pip docker.io git

# Start Docker
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER

# Clone the repo
git clone https://github.com/tanisha-ahl/virtualization-using-cloud-computing.git
cd virtualization-using-cloud-computing

# Install Python dependencies
pip3 install -r requirements.txt

Step 4 β€” Deploy Docker Containers

# Start Nginx container on port 8081
sudo docker run -d -p 8081:80 nginx

# Start Apache HTTPD container on port 8082
sudo docker run -d -p 8082:80 httpd

# Verify containers are running
sudo docker ps

Test the containers:

curl http://localhost:8081    # Should return Nginx welcome page
curl http://localhost:8082    # Should return HTTPD page

Step 5 β€” Start Flask API

python3 app.py

The API will be live at http://<your-ec2-public-ip>:5000


Step 6 β€” Connect the Frontend

Open frontend/index.html in your browser. Enter your EC2 public IP when prompted, and the dashboard will connect to your live cloud backend.


Using Docker Compose (Alternative)

To spin up the full stack with one command:

docker-compose up -d

πŸ“‘ API Endpoints

Method Route Description
GET / Health check β€” returns welcome message
GET /info Backend metadata (platform info)
GET /containers Lists all running Docker containers

Example response β€” /containers:

{
  "containers": [
    { "id": "a3c45d", "image": "nginx", "status": "Up 3 minutes" },
    { "id": "b8f21e", "image": "httpd", "status": "Up 3 minutes" }
  ]
}

πŸ“Έ Screenshots

Step Description
SSH SSH Access β€” Secure terminal session into EC2 via key-pair auth
Docker Docker Containers β€” Nginx (8081) and HTTPD (8082) running and verified via curl
Flask Flask on EC2 β€” AWS Console showing instance running with Flask API deployed
Nginx Nginx Web Interface β€” Nginx container accessible through the public IP
Cost Cost Comparison β€” AWS Free Tier vs Local Hosting vs Paid Cloud

πŸ“Š Results Summary

Layer Technology Key Outcome
VM-based AWS EC2 (Ubuntu) Isolated virtual environment on cloud
Container-based Docker (Nginx + HTTPD) Modular, scalable service deployment
Backend API Flask (Python) Dynamic content served from cloud
Frontend HTML / JavaScript REST API integration with live updates
Multi-User Distributed team (A + B) Remote collaboration over cloud infra
Cost AWS Free Tier Zero-cost full deployment

πŸ‘₯ Team

Person Role
Tanisha Ahlawat AWS setup, EC2 management, Docker, Flask backend
Sreenidhi J Architecture design, optimization layer
Harshita Ranjan Documentation, results analysis
Gnana Swathika (Faculty) Advisor β€” Centre for Smart Grid Technology, VIT

πŸ“„ Publication

This project was submitted as a conference paper:

"Virtual Desktop Infrastructure using AWS WorkSpaces"
School of Electrical Engineering, Vellore Institute of Technology, Chennai β€” 2026
Keywords: Cloud Computing Β· AWS EC2 Β· Docker Β· Flask Β· IaaS Β· Virtualization


πŸ“ License

MIT License β€” see LICENSE for details.

About

AWS EC2 + Docker + Flask Virtualization Dashboard

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages