<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Muhammad Kamran Kabeer</title>
    <description>The latest articles on Forem by Muhammad Kamran Kabeer (@muhammadkamrankabeeross).</description>
    <link>https://forem.com/muhammadkamrankabeeross</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3870183%2F4568d571-b1ba-46d9-97db-ebb02fea8d61.png</url>
      <title>Forem: Muhammad Kamran Kabeer</title>
      <link>https://forem.com/muhammadkamrankabeeross</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/muhammadkamrankabeeross"/>
    <language>en</language>
    <item>
      <title>Building a Zero-Downtime Web Cluster on a Dell Latitude</title>
      <dc:creator>Muhammad Kamran Kabeer</dc:creator>
      <pubDate>Mon, 13 Apr 2026 15:45:47 +0000</pubDate>
      <link>https://forem.com/muhammadkamrankabeeross/building-a-zero-downtime-web-cluster-on-a-dell-latitude-4np7</link>
      <guid>https://forem.com/muhammadkamrankabeeross/building-a-zero-downtime-web-cluster-on-a-dell-latitude-4np7</guid>
      <description>&lt;p&gt;The Problem: The "Single Point of Failure"&lt;br&gt;
Most small businesses host their websites on a single server. If that server crashes, their business stops. In this lab, I solved that problem by building a Distributed System using Nginx and Ansible.&lt;/p&gt;

&lt;p&gt;The Architecture: The Traffic Cop&lt;br&gt;
I used a Load Balancer strategy to ensure that even if a server dies, the website stays live.&lt;/p&gt;

&lt;p&gt;Front-End: Nginx Load Balancer (Port 8888)&lt;/p&gt;

&lt;p&gt;Back-End: Two Nginx Workers (Ports 8081 &amp;amp; 8082)&lt;/p&gt;

&lt;p&gt;Key Technical Win: Fault Tolerance&lt;br&gt;
The highlight of this lab was the Chaos Test. By manually stopping one of the web server containers, I verified that the Load Balancer instantly redirected all traffic to the healthy node. The result? Zero downtime for the user.&lt;/p&gt;

&lt;p&gt;Tools Used:&lt;br&gt;
Ansible: To automate the deployment and ensure the configuration is repeatable.&lt;/p&gt;

&lt;p&gt;Docker: To isolate the services and simulate a multi-server environment on my Dell E7440.&lt;/p&gt;

&lt;p&gt;Check out the Standalone Code:&lt;br&gt;
🔗 &lt;a href="https://github.com/muhammadkamrankabeer-oss/MK_Labs/tree/main/Lab3_Standalone" rel="noopener noreferrer"&gt;https://github.com/muhammadkamrankabeer-oss/MK_Labs/tree/main/Lab3_Standalone&lt;/a&gt; &lt;/p&gt;

</description>
      <category>devops</category>
      <category>distributedsystems</category>
      <category>showdev</category>
      <category>sre</category>
    </item>
    <item>
      <title>How I Automated a Monitoring Stack on my Dell Latitude using Ansible &amp; Docker</title>
      <dc:creator>Muhammad Kamran Kabeer</dc:creator>
      <pubDate>Sun, 12 Apr 2026 09:16:23 +0000</pubDate>
      <link>https://forem.com/muhammadkamrankabeeross/how-i-automated-a-monitoring-stack-on-my-dell-latitude-using-ansible-docker-5b73</link>
      <guid>https://forem.com/muhammadkamrankabeeross/how-i-automated-a-monitoring-stack-on-my-dell-latitude-using-ansible-docker-5b73</guid>
      <description>&lt;p&gt;The Vision&lt;br&gt;
As part of my Technical Lab Roadmap, I am moving away from manual configurations. In the world of modern DevOps, if you have to do it twice, you should automate it. Today’s goal: Transforming my Xubuntu-powered Dell Latitude into a fully monitored node using Infrastructure as Code (IaC).&lt;/p&gt;

&lt;p&gt;The Architecture: A Three-Tier Observability Stack&lt;br&gt;
To monitor a system effectively, you need a pipeline. Data must be generated, collected, and visualized. Here is how I structured this lab:&lt;/p&gt;

&lt;p&gt;Generation (Node Exporter): A lightweight Go-based binary that exposes hardware metrics (CPU load, RAM usage, Disk I/O) via a web endpoint.&lt;/p&gt;

&lt;p&gt;Collection (Prometheus): The "brain" of the operation. It's a time-series database that "scrapes" the metrics from the exporter at defined intervals.&lt;/p&gt;

&lt;p&gt;Visualization (Grafana): The "eyes." It queries Prometheus to turn raw numbers into pulsing, real-time graphs.&lt;/p&gt;

&lt;p&gt;The "Aha!" Moment: Solving Networking Hurdles&lt;br&gt;
The biggest challenge was connectivity. When running Prometheus inside a Docker container, it views localhost as itself, not my laptop.&lt;/p&gt;

&lt;p&gt;The Solution:&lt;/p&gt;

&lt;p&gt;The Bridge: I used the Docker Gateway IP (172.17.0.1) to allow the container to look "outside" to the host hardware.&lt;/p&gt;

&lt;p&gt;The Guard: Xubuntu’s UFW (Uncomplicated Firewall) initially blocked these requests. I had to explicitly allow traffic on port 9100 from the Docker interface.&lt;/p&gt;

&lt;p&gt;The Implementation: Ansible Playbook&lt;br&gt;
Instead of 20 terminal commands, I consolidated the entire setup into one Ansible Playbook. This ensures Idempotency—I can run this on any machine and get the exact same result.&lt;/p&gt;

&lt;h2&gt;
  
  
  YAML
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;name: Deploy Monitoring Stack
hosts: localhost
connection: local
become: yes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;tasks:&lt;br&gt;
    - name: Run Node Exporter (The Sensor)&lt;br&gt;
      community.docker.docker_container:&lt;br&gt;
        name: node-exporter&lt;br&gt;
        image: prom/node-exporter:latest&lt;br&gt;
        state: started&lt;br&gt;
        restart_policy: always&lt;br&gt;
        ports:&lt;br&gt;
          - "9100:9100"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Run Prometheus (The Brain)
  community.docker.docker_container:
    name: prometheus
    image: prom/prometheus:latest
    state: started
    recreate: yes
    volumes:
      - "./prometheus.yml:/etc/prometheus/prometheus.yml"
      - "./alert_rules.yml:/etc/prometheus/alert_rules.yml"
    ports:
      - "9091:9090"

- name: Run Grafana (The Visuals)
  community.docker.docker_container:
    name: grafana
    image: grafana/grafana:latest
    state: started
    ports:
      - "3000:3000"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Going Pro: Proactive Alerting&lt;br&gt;
Monitoring is useless if you have to stare at the screen all day. I integrated Alertmanager with a custom rule:&lt;/p&gt;

&lt;p&gt;If CPU usage exceeds 85% for more than 2 minutes, fire a CRITICAL alert.&lt;/p&gt;

&lt;p&gt;This moves the lab from "Basic Monitoring" to "Incident Response Readiness."&lt;/p&gt;

&lt;p&gt;Key Takeaways for Students &amp;amp; Peers&lt;br&gt;
Infrastructure is Code: Never install manually what you can automate.&lt;/p&gt;

&lt;p&gt;Firewalls Matter: If your data isn't flowing, check your UFW/Iptables first.&lt;/p&gt;

&lt;p&gt;Start Small: I’m doing this on an 8GB RAM Dell laptop. You don't need a cloud budget to learn high-level DevOps.&lt;/p&gt;

&lt;p&gt;Check out the full Source Code:&lt;br&gt;
🔗 &lt;a href="https://github.com/muhammadkamrankabeer-oss/Lab2_Monitoring_Automation" rel="noopener noreferrer"&gt;https://github.com/muhammadkamrankabeer-oss/Lab2_Monitoring_Automation&lt;/a&gt; &lt;/p&gt;

</description>
      <category>automation</category>
      <category>devops</category>
      <category>docker</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Stop Leaving Your Servers Open: Hardening Linux in 5 Minutes with Ansible</title>
      <dc:creator>Muhammad Kamran Kabeer</dc:creator>
      <pubDate>Sat, 11 Apr 2026 04:40:31 +0000</pubDate>
      <link>https://forem.com/muhammadkamrankabeeross/stop-leaving-your-servers-open-hardening-linux-in-5-minutes-with-ansible-46a2</link>
      <guid>https://forem.com/muhammadkamrankabeeross/stop-leaving-your-servers-open-hardening-linux-in-5-minutes-with-ansible-46a2</guid>
      <description>&lt;p&gt;Hello, World! I’m Muhammad Kamran Kabeer.&lt;/p&gt;

&lt;p&gt;As an IT Instructor and the founder of MK EduOps Solutions, I often see students and small businesses focus on "getting things to work" while completely ignoring "getting things secured."Today, I’m sharing Lab 1 from my new series: The Hardened Gateway. We will use Ansible to automate the security of a Linux server on a Dell Latitude E7440 (or any Ubuntu/Debian machine).&lt;/p&gt;

&lt;p&gt;🛡️ Why "Default Deny"?&lt;br&gt;
Most people try to block "bad" ports. The professional way is to deny everything and only open what you need. This is the "Zero-Trust" mindset.&lt;/p&gt;

&lt;p&gt;🛠️ The Automation Code&lt;br&gt;
Here is the Ansible block I use to secure my lab environments:&lt;/p&gt;

&lt;p&gt;YAML&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;name: Lab 1 - The Hardened Gateway&lt;br&gt;
hosts: localhost&lt;br&gt;
become: yes&lt;br&gt;
tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name: Ensure UFW is installed
apt: { name: ufw, state: present }&lt;/li&gt;
&lt;li&gt;name: Set Default Policies to DENY
community.general.ufw: { state: enabled, policy: deny, direction: incoming }&lt;/li&gt;
&lt;li&gt;name: Allow Essential Traffic
community.general.ufw: { rule: allow, port: "{{ item }}", proto: tcp }
loop: ['22', '80', '443', '81']
🚀 The Result
Running this ensures that only SSH and Web traffic can enter. Everything else—unsecured databases, internal APIs, or forgotten services—is hidden from the world.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Check out the full lab repository here:&lt;a href="https://github.com/muhammadkamrankabeer-oss/MK-EduOps-Labs" rel="noopener noreferrer"&gt;https://github.com/muhammadkamrankabeer-oss/MK-EduOps-Labs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>linux</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How I Automated a Self-Healing WordPress Lab using Ansible &amp; Docker</title>
      <dc:creator>Muhammad Kamran Kabeer</dc:creator>
      <pubDate>Thu, 09 Apr 2026 16:21:08 +0000</pubDate>
      <link>https://forem.com/muhammadkamrankabeeross/how-i-automated-a-self-healing-wordpress-lab-using-ansible-docker-20m7</link>
      <guid>https://forem.com/muhammadkamrankabeeross/how-i-automated-a-self-healing-wordpress-lab-using-ansible-docker-20m7</guid>
      <description>&lt;p&gt;The Challenge&lt;/p&gt;

&lt;p&gt;As an IT educator, I wanted a lab environment that was stable, professional, and "self-healing." If a student (or a bug) crashes the site, I want it back up in seconds without manual work.&lt;br&gt;
The Solution&lt;/p&gt;

&lt;p&gt;I built a stack on my Dell Latitude E7440 using:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vagrant &amp;amp; Debian: To create a clean, isolated sandbox.

Ansible: To automate the configuration (Infrastructure as Code).

Docker: To run WordPress and MariaDB.

Nginx Proxy Manager: To give it a professional URL (http://wordpress.test) instead of messy IP addresses.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Why this matters&lt;/p&gt;

&lt;p&gt;By using Docker's restart_policy: always, if the WordPress container fails, the system "heals" itself immediately.&lt;/p&gt;

&lt;p&gt;[INSERT YOUR TWO SCREENSHOTS HERE: NPM Dashboard and WordPress Welcome Page]&lt;br&gt;
Work with me!&lt;/p&gt;

&lt;p&gt;I am a professional educator and DevOps practitioner. If you need:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Technical Writing: I can turn your complex code into clear tutorials.

Lab Setup: I can help you automate your teaching environments.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Feel free to reach out here or on LinkedIn!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
