Work

/

About
Play
Blog
Contact

DevOps.

Linux, Docker, Kubernetes and CI/CD for e-commerce apps, written from running them in production.

AllShopifyEngineeringDevOps
GitHub Actions deployment workflow: build a commit, publish its image digest, and verify the k3s rollout
DevOps
•
6 min read

GitHub Actions to k3s: Deploy GHCR Images by Commit SHA

Trace a GitHub Actions release through GHCR and k3s with commit tags, image digests, rollout checks, and a rollback record tied to the application.

Oct 10, 2026
A full glass container of green blocks with an extra gold block above its capacity
DevOps
•
6 min read

Debugging OOMKilled Pods: Exit Code 137 on a Small Cluster

Diagnose OOMKilled pods before raising memory limits: preserve container evidence, check node pressure, and test changes against a shared k3s budget.

Oct 7, 2026
Ivory clockwork driving green task blocks along a brass track
DevOps
•
5 min read

systemd Timers vs Cron for Business-Critical Jobs

Choose systemd timers or cron for supplier jobs, with a runnable timer example and checks for missed runs, overlapping work, and business completion.

Oct 7, 2026
Moving a Node App from Vercel to k3s on Hetzner: What It Actually Takes
DevOps
•
4 min read

Moving a Node App from Vercel to k3s on Hetzner: What It Actually Takes

Moving a production Node and Postgres app from Vercel and Supabase to a single-node k3s cluster on Hetzner: data layer, cluster, backups, CI/CD and cost.

Oct 1, 2026
Postgres recovery workflow: retrieve an archive, restore a database, verify the application
DevOps
•
6 min read

Postgres Backups on Kubernetes: Run a Restore Drill

Test Postgres backups on Kubernetes with an isolated restore drill, an off-server archive, application checks, and a record of actual recovery time.

Oct 1, 2026

© 2026 Muhammad Saad • Colophon

Connect with me on LinkedIn

Elsewhere

  • Github
  • Testimonials
  • CV
  • LinkedIn

Contact

  • Contact details
  • Book a call
  • Email
  • Privacy policy
  • Editorial policy