A server reachable from the internet
The public IP is what lets me SSH into the VM and load a test web page from a browser.
It is not as hard as it sounds. Here is how I set up a small AWS cloud server for free using student/free-tier resources.
The goal was simple: get a disposable Linux VM, give it a public IP address, SSH into it, run a basic web server, and delete it when I was done.
I did not need a complicated cloud setup. I just wanted the basic building blocks of a real public server.
The public IP is what lets me SSH into the VM and load a test web page from a browser.
I used a small EC2 instance like a VPS. If I broke it, I could delete it and make another one.
I checked AWS Educate, AWS Academy, and AWS Free Tier before launching anything serious.
This is the whole process without the extra details.
This is the version I would follow while actually doing it.
First, I checked AWS Educate with my school email. Then I checked whether my school had AWS Academy or Learner Lab access.
If I can practice in a student lab first, I should do that before creating real cloud resources.
For the real public VM, I used AWS Free Tier. I checked the current Free Tier page first because AWS pricing and credits can change.
I did not assume everything was free forever. I used it as a small test environment.
Before launching anything, I protected the AWS account and created a budget alert.
This was my safety net in case I clicked the wrong thing or forgot something was running.
In the AWS Console, I went to EC2 and launched one small Ubuntu Server instance.
student-disposable-vps
AWS gave me a .pem file. That file is my private key, so I moved it into my SSH folder and locked it down.
mkdir -p ~/.ssh
mv ~/Downloads/student-vps-key.pem ~/.ssh/
chmod 400 ~/.ssh/student-vps-key.pem
In the AWS security group, I allowed SSH only from my IP. I allowed HTTP and HTTPS only because I wanted to test a web page.
22, source: my IP only80, source: anywhere443, source: anywhereAfter the instance was running, I copied its public IP and connected from my computer. SSH is the encrypted terminal tunnel into a headless server. Start here if SSH is new.
ssh -i ~/.ssh/student-vps-key.pem ubuntu@YOUR_PUBLIC_IP
Once I was inside the VM, I updated packages and installed a small web stack.
sudo apt update
sudo apt -y upgrade
sudo apt install -y nginx ufw fail2ban curl git htop
sudo,
apt, and why commands are the normal way to control a server.
Nginx gave me a simple web server so I could test the public IP in a browser.
sudo systemctl enable --now nginx
systemctl status nginx --no-pager
AWS has its own firewall, but I also enabled UFW inside Ubuntu.
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw --force enable
sudo ufw status verbose
22 and
remote login make sense before changing firewall rules.
I made a tiny test page so I knew I was seeing my server and not just a default screen.
echo '<h1>Hello from my AWS cloud server</h1>' | sudo tee /var/www/html/index.html
curl http://localhost
For a disposable VM, cleanup is part of the lab. I terminated the instance and checked for leftovers.
The goal was a simple disposable VM, not a full production cloud architecture.
| Thing | Why I avoided it at first |
|---|---|
| Elastic IP | I did not need a permanent public IP for a throwaway VM. |
| Load balancer | Too much for one tiny test server. |
| NAT gateway | Useful in real cloud networks, but not needed for this beginner setup. |
| Extra EBS volumes | More storage means more things to forget and clean up later. |
| Multiple regions | Easy to lose track of resources. I stayed in one region. |
This is the simple reading list. These are the links I would keep open while doing the setup.
I ended up with a small public Linux server I could SSH into, update, firewall, test with Nginx, and delete. That is enough to learn the real basics: public IPs, SSH keys, security groups, Linux firewalls, services, logs, and cloud billing hygiene.