How I built Global Geo-Routing for Free on Cloudflare (Saving $300/Year)

The Problem: Global latency on a Budget I recently took on a project for a client with a classic distributed architecture problem. They had a great application running on Docker containers, frontend by Traefik, deployed across four distinct region: Germany (EU Central) United States (US East) Australia (Oceania) South Africa (Africa) The Goal: A single domain name (like app.example.com). When a user visits the domain, they must be routed to geographically closest server. A user in Berlin should hit the Germany server; a user in Sydney should hit the Australia server. ...

December 21, 2025 · 4 min · 810 words · Ahmad

Troubleshooting the invisible Error: When the Entra Provisioning Agent won’t Sync.

Introduction: The Client’s Dilemma You’ve just upgraded your hybrid identity setup on Azure, moving from the heavy AAD Connect to the lightweight Microsoft Entra Provisioning Agent (Cloud Sync). The installation finished cleanly on your Domain Controller, the service is running, and the Entra portal says “Healthy.” Everything looks perfect… except for one critical detail: zero users are syncing to the cloud. The worst part? The logging is uselessly vague. You check the Entra Portal and see a generic “sync errors or failures” status. When you use the “Provision on Demand” tool, you get a frustratingly simple error: “The object doesn’t exist.” There are no permission failures, no obvious certificate issues—just a wall of silence between your local AD and the cloud. ...

December 14, 2025 · 6 min · 1258 words · Ahmad

Automate Ubuntu 24.04 VM Templates on vSphere with HashiCorp Packer

Introduction Creating consistent, repeatable virtual machine (VM) templates is a key part of modern DevOps and Infrastructure as Code (IaC) practices. HashiCorp Packer simplifies and automates this process. In this tutorial, you’ll learn how to use Packer to build an Ubuntu 24.04 VM template on VMware vSphere using the vsphere-iso builder plugin. You’ll automate the following tasks: Connect to a vCenter server Boot and install Ubuntu 24.04 via ISO and cloud-init Provision the VM with custom configurations Convert the VM to a reusable vSphere template 👉 View the full project on GitHub: GitHub Repository ...

May 24, 2025 · 7 min · 1314 words · Ahmad

Setting Up Your Self-Hosted GitLab and Registering a GitLab Runner using Docker: A Step-by-Step Guide

Introduction In this blog post, I’ll walk you through 👣 setting up a self-hosted GitLab instance and registering a GitLab runner. If you are already familiar with GitLab, you’re in the right place. If not, no worries; I recommend checking out this introductory video to get up to speed. While you can easily sign up at gitlab.com🌐 and use their hosted services, self-hosting GitLab offers you a whole new level of control—plus It’s free! Whether you’re creating a personal lab for your learning journey 📚 or your team needs a private, full-featured code repository and DevOps solution, this guide is for you. ...

February 24, 2025 · 6 min · 1181 words · Ahmad

Nginx Docker Mulitiapp Project

Introduction In this blog, I’m going to build a simple project using Nginx and Docker. Nginx is a widely used web server. It can function as a basic web server and also take on roles such as a load balancer, reverse proxy, and content cache. In this project, we’ll use Nginx as a reverse proxy for three simple web applications. A reverse proxy is essentially a web server that sits in front of other web servers and responds to client requests on their behalf. This setup has several advantages, including improved performance, security, and reliability. ...

February 11, 2025 · 5 min · 1021 words · Ahmad