Why This Stack?

As a sysadmin, I wanted a blog that’s:

  • Fast: Static sites load instantly
  • Cheap: Firebase free tier handles tons of traffic
  • Simple: No databases, no server maintenance
  • SEO-ready: Hugo generates clean, optimized HTML

Here’s exactly how I built this site in under 30 minutes.

The Stack

  • Hugo: Static site generator (like Jekyll, but faster)
  • PaperMod: Clean, minimal Hugo theme
  • Firebase Hosting: Google’s CDN with free SSL
  • AWeber: Newsletter forms that actually work
  • Google Analytics: Track what people read

Step-by-Step Build Process

1. Install the Tools

On Windows with Chocolatey:

choco install hugo-extended
npm install -g firebase-tools

2. Create the Site

hugo new site pragmatic-sysadmin
cd pragmatic-sysadmin
git init

3. Add PaperMod Theme

git submodule add https://github.com/adityatelange/hugo-PaperMod themes/PaperMod

4. Configure Hugo

Updated hugo.toml with SEO basics:

baseURL = "https://pragmaticsysadmin.help/"
title = "Pragmatic Sysadmin"
theme = "PaperMod"
enableRobotsTXT = true

[pagination]
  pagerSize = 10

[markup]
  [markup.goldmark]
    [markup.goldmark.renderer]
      unsafe = true  # Allows AWeber forms

[params]
  description = "Funny, practical home networking and de-mystified cloud."
  defaultTheme = "auto"
  ShowReadingTime = true
  ShowPostNavLinks = true
  ShowShareButtons = true

5. Add Google Analytics

Created layouts/partials/head-end.html with GA4 tracking:

<script async src="https://www.googletagmanager.com/gtag/js?id=G-WCG1VLDG4T"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-WCG1VLDG4T');
</script>

6. Deploy to Firebase

hugo --minify          # Build static files
firebase login         # Authenticate
firebase init hosting  # Configure hosting
firebase deploy        # Go live!

Firebase setup answers:

  • Public directory: public
  • Single-page app: No
  • GitHub deploys: No

7. Add AWeber Newsletter

Created newsletter page with embedded form:

## Join the newsletter
Short, practical tips. No spam, just sysadmin sanity.

<div class="aweber-form">
  <!-- AWeber JavaScript form code -->
</div>

8. Connect Custom Domain

In Firebase Console → Hosting → Add custom domain, then updated DNS:

  • A record: pragmaticsysadmin.help199.36.158.100
  • TXT record: pragmaticsysadmin.helphosting-site=johnnysblogman

The Results

Live site: https://pragmaticsysadmin.help (once DNS propagates)
Backup URL: https://johnnysblogman.web.app
Cost: $0/month for reasonable traffic
Build time: ~2 minutes
Deploy time: ~30 seconds

Quick Commands

# Local development
hugo server -D

# Build and deploy
hugo --minify
firebase deploy

Why This Works

This stack scales from zero to thousands of visitors without touching server configs. Hugo pre-builds everything, Firebase’s CDN serves it globally, and analytics + newsletter capture runs automatically.

Perfect for technical blogs, documentation sites, or any content that doesn’t need real-time data.

Next up: I’ll be writing about secure home networking, because apparently everyone’s router is still using admin/admin. 🤦‍♂️