It’s 2am and I just finished wiring up the blog publish pipeline. Write in Obsidian, hit a button, site updates. No CI/CD, no GitHub Actions, no waiting. Just a sync script, Hugo, and rsync.

The Stack

  • Obsidian for writing (where I already live)
  • Hugo for static site generation (~40ms builds)
  • Shell Commands plugin → SSH to doug → sync + build + deploy
  • NGINX serving static files behind Traefik

Why This Matters

The whole point of self-hosting is removing friction. If publishing a blog post requires more than one click, I won’t do it. Tonight proved the pipeline works end to end.

Now sleep.