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.
- Overview
- Architecture
- Tech Stack
- Project Structure
- Setup & Deployment
- API Endpoints
- Screenshots
- Results Summary
- Team
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)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 |
- 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
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
- AWS account (Free Tier eligible)
- Docker installed locally (for testing)
- Python 3.8+
- Go to AWS Console β EC2 β Launch Instance
- Choose Ubuntu Server 22.04 LTS (Free Tier)
- Instance type: t2.micro
- Create or select a key pair (.pem file) for SSH access
- Allow inbound ports: 22 (SSH), 5000 (Flask), 8081, 8082 in Security Group
chmod 400 tanisha-key.pem
ssh -i tanisha-key.pem ubuntu@<your-ec2-public-ip>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# 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 psTest the containers:
curl http://localhost:8081 # Should return Nginx welcome page
curl http://localhost:8082 # Should return HTTPD pagepython3 app.pyThe API will be live at http://<your-ec2-public-ip>:5000
Open frontend/index.html in your browser. Enter your EC2 public IP when prompted, and the dashboard will connect to your live cloud backend.
To spin up the full stack with one command:
docker-compose up -d| 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" }
]
}| 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 |
| 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 |
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
MIT License β see LICENSE for details.




