How I Built My Own Cloud Server from Scratch

May 28, 2026 · 7 min read · By Talha Arshad

This semester, I took on the challenge of building a real, publicly accessible cloud server. No pre‑packaged images, no click‑and‑drag – just a clean Ubuntu instance on AWS EC2, configured entirely by hand. Here is the complete journey.

1. Choosing the Right Infrastructure (IaaS)

I decided to use AWS EC2 because it offers a free tier (t2.micro / t3.micro) and gives full root access. This is true Infrastructure as a Service – exactly what the assignment required. I launched an Ubuntu 24.04 LTS instance in the Sydney region (ap‑southeast‑2).

2. Setting Up the Server

After launching, I downloaded the key pair (.pem file) and connected via SSH from my Windows machine using PowerShell:

ssh -i "workshop-key.pem" ubuntu@15.135.223.199

Once inside, I updated the system and installed Nginx:

sudo apt update && sudo apt install nginx -y

3. Publishing a Website

I replaced the default Nginx landing page with my own HTML/CSS files. Using nano, I created /var/www/html/index.html and built a blog from scratch – no WordPress, no database, just clean static content.

4. Adding a Custom Domain and SSL

I bought the domain talhatechub.online from GoDaddy. In the DNS settings, I added two A records: one for @ and one for www, both pointing to my server's public IP. Then I installed Let's Encrypt with Certbot:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d talhatechub.online -d www.talhatechub.online

Certbot automatically obtained a certificate and configured Nginx to redirect all HTTP traffic to HTTPS. Now my site is secure.

5. Monitoring the Server (Scripting)

The assignment required a script with verifiable output. I wrote a Bash script that collects system metrics (uptime, memory, disk, load, open ports) and generates an HTML status page. A cron job runs it every 5 minutes. The result is visible at /status.html.

6. What I Learned

This project taught me real cloud administration – from SSH key management to cron jobs, from DNS to SSL. I am now comfortable with the Linux command line, Nginx configuration, and basic scripting. Most importantly, I documented every command so anyone can rebuild the server in under an hour.