How this site was built.
The real sequence, including the mistakes.
The idea
A CV cannot show that I run networks, so I wanted something I built and deployed myself, on infrastructure I own end to end. I already had a free Oracle Cloud server and a domain.
First build: a port checker
My first version was a Flask port checker started with nohup. It worked, and it taught me that a public tool that connects to arbitrary hosts needs real safeguards: input validation, SSRF protection and rate limiting.
Pivot: the page is the product
I retired the checker. Nginx now serves static files directly, with no application server behind them. Less attack surface, faster load, nothing extra to patch.
Deploy day
I wrote a deploy script for packages, Nginx, the firewall and TLS. Then I broke it twice.
- Mistake 1.
scpwithout-ireturned Permission denied (publickey). The key has to follow the flag. - Mistake 2. I pasted half the script into the terminal. The variables were empty, so the service stayed inactive and Nginx returned 404. Fix: clean up and run it as a file.
The certificate audit
I found three certificates, and one had been expired since January. I moved everything onto one valid certificate for umardeen.com, deleted the dead ones and tested renewal with a dry run.
Hardening
I added HSTS, a strict content-security policy with no inline code, anti-clickjacking and cross-origin headers, TLS 1.2 and 1.3 only, and HTTP/2, all from one script that backs up first.
- Mistake 3. The first run failed: an old Nginx file still pointed at the certificate I had deleted, so Nginx refused to reload. The script restored the old config, and now it checks for that before it changes anything.
Redesigns
I rebuilt the look several times before it felt like me. The one I kept is dark, red and cyan, like the screens I watch at work, with standard text sizes so it reads well on a laptop and a phone.
From one page to a documented site
I turned the single page into a structured site: experience, status-labelled projects, case studies in one standard template, a searchable knowledge base, interactive labs and a printable CV. Everything is static HTML generated from one content file, so adding a case study is a single edit.
What is next
- Add sanitized diagrams and real command output as evidence to each case study.
- Finish Ansible Vault and a multi-device inventory.
- Build the planned labs and publish the write-ups.
- Record a short video walkthrough of how this site was built.
Let's talk about your network.
I'm open to network engineering and network security roles. The quickest way to reach me is LinkedIn.