Portfolio Website preview

Overview

This project was about building a personal portfolio website with a focus on both simplicity and security. The goal was to have a professional site that is fast, easy to maintain, and safe to run on a public server.

Key choices made:

  • Used Caddy for the web server because it handles HTTPS automatically and has a simple config format.
  • Hardened the VPS with minimal services, firewall rules, and regular updates.
  • Kept the site to plain HTML and CSS with no JavaScript to reduce attack surface.
  • Automated deployment with GitHub Actions so code changes are pushed live quickly without manual steps.

Skills Gained

  • Server hardening: firewall rules, disabling unnecessary services, and managing updates.
  • Secure hosting: learning how Caddy manages certificates and redirects.
  • Automation: writing GitHub Actions workflows for deployment.
  • Minimalist web design: fast pages with fewer attack vectors.
  • DNS & reverse proxy: how Cloudflare and Caddy complement each other.

Walkthrough

1. Preparing the VPS

  • Deployed a minimal Linux image.
  • Patched and updated all packages.
  • Installed only Caddy and rsync.
  • Configured ufw to allow only SSH and HTTP/HTTPS.
  • Disabled root login, required SSH keys.

2. Configuring Caddy

  • Automatic HTTPS certificate management.
  • Redirected www → root domain.
  • Served static files from /var/www/site.
  • Enabled gzip/zstd compression.

3. Building the Site

  • Static HTML & CSS only.
  • No JavaScript for simplicity and security.
  • Lightweight navigation across pages.

4. Automating Deployment

  • GitHub Actions workflow deploys on push to main.
  • Rsync syncs files to the VPS.
  • Caddy reloads config without downtime.

5. Cloudflare Integration

  • DNS + caching.
  • DDoS protection.
  • Traffic analytics.

Closing Thoughts

The portfolio site is more than static HTML it became an exercise in secure hosting, automation, and clean design. By combining Caddy, GitHub Actions, and a hardened VPS, the result is a fast, reliable site with reduced risks and simple upkeep. I will be expanding the site and including more details in the writeups soon. I just wanted to get something out there to encourage me to add more.

← Back to Projects