<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[My Tech Life]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://blog.mutiangpili.com/</link><image><url>https://blog.mutiangpili.com/favicon.png</url><title>My Tech Life</title><link>https://blog.mutiangpili.com/</link></image><generator>Ghost 5.71</generator><lastBuildDate>Thu, 03 Sep 2026 18:31:41 GMT</lastBuildDate><atom:link href="https://blog.mutiangpili.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Step-by-Step Guide: Installing VMware ESXi 7.0 from Scratch]]></title><description><![CDATA[<p>Build your own virtualization lab with VMware ESXi 7.0</p><hr><h2 id="introduction">Introduction</h2><p>VMware ESXi 7.0 is a Type-1 (bare-metal) hypervisor that allows you to run multiple virtual machines on a single physical server. Whether you&apos;re building a home lab, preparing for VMware certification, or deploying virtualization in production,</p>]]></description><link>https://blog.mutiangpili.com/vmware-esxi-7/</link><guid isPermaLink="false">6a62ab106220cf035f3fc337</guid><category><![CDATA[vmware]]></category><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Fri, 24 Jul 2026 07:56:24 GMT</pubDate><media:content url="https://blog.mutiangpili.com/content/images/2026/07/1e915873-4754-45a7-987f-973c436807cb.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.mutiangpili.com/content/images/2026/07/1e915873-4754-45a7-987f-973c436807cb.png" alt="Step-by-Step Guide: Installing VMware ESXi 7.0 from Scratch"><p>Build your own virtualization lab with VMware ESXi 7.0</p><hr><h2 id="introduction">Introduction</h2><p>VMware ESXi 7.0 is a Type-1 (bare-metal) hypervisor that allows you to run multiple virtual machines on a single physical server. Whether you&apos;re building a home lab, preparing for VMware certification, or deploying virtualization in production, ESXi remains one of the industry&apos;s leading hypervisors.</p><p>In this guide, we&apos;ll walk through the complete installation process&#x2014;from downloading the installer to accessing the ESXi web interface.</p><hr><h1 id="prerequisites">Prerequisites</h1><p>Before starting, make sure you have the following:</p><h3 id="hardware-requirements">Hardware Requirements</h3>
<!--kg-card-begin: html-->
<table data-start="683" data-end="936" class="w-fit min-w-(--thread-content-width)"><thead data-start="683" data-end="720"><tr data-start="683" data-end="720"><th data-start="683" data-end="695" data-col-size="sm" class="last:pe-10">Component</th><th data-start="695" data-end="705" data-col-size="sm" class="last:pe-10">Minimum</th><th data-start="705" data-end="720" data-col-size="sm" class="last:pe-10">Recommended</th></tr></thead><tbody data-start="760" data-end="936"><tr data-start="760" data-end="818"><td data-start="760" data-end="766" data-col-size="sm">CPU</td><td data-start="766" data-end="784" data-col-size="sm">64-bit, 2 cores</td><td data-col-size="sm" data-start="784" data-end="818">Intel Xeon / AMD EPYC or Ryzen</td></tr><tr data-start="819" data-end="849"><td data-start="819" data-end="825" data-col-size="sm">RAM</td><td data-col-size="sm" data-start="825" data-end="832">4 GB</td><td data-col-size="sm" data-start="832" data-end="849">16 GB or more</td></tr><tr data-start="850" data-end="887"><td data-start="850" data-end="860" data-col-size="sm">Storage</td><td data-start="860" data-end="872" data-col-size="sm">32 GB SSD</td><td data-col-size="sm" data-start="872" data-end="887">120 GB+ SSD</td></tr><tr data-start="888" data-end="936"><td data-start="888" data-end="898" data-col-size="sm">Network</td><td data-col-size="sm" data-start="898" data-end="916">1 Supported NIC</td><td data-col-size="sm" data-start="916" data-end="936">Intel Server NIC</td></tr></tbody></table>
<!--kg-card-end: html-->
<p><strong>Tip:</strong> ESXi 7.0 works best when installed on SSD or NVMe storage. VMware recommends avoiding low-end USB or SD card boot devices for new installations because of increased write activity in ESXi 7.0.</p><hr><h1 id="what-youll-need">What You&apos;ll Need</h1><ul><li>VMware ESXi 7.0 ISO</li><li>USB Flash Drive (8GB or larger)</li><li>Rufus (Windows) or Balena Etcher</li><li>Physical Server or Compatible PC</li><li>Keyboard and Monitor (or iLO/iDRAC/IPMI)</li></ul><hr><figure class="kg-card kg-video-card kg-width-regular kg-card-hascaption" data-kg-thumbnail="https://blog.mutiangpili.com/content/media/2026/07/esxi7_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://blog.mutiangpili.com/content/media/2026/07/esxi7.mp4" poster="https://img.spacergif.org/v1/1280x720/0a/spacer.png" width="1280" height="720" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://blog.mutiangpili.com/content/media/2026/07/esxi7_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container kg-video-hide">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">10:10</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate">1&#xD7;</button>
                        <button class="kg-video-unmute-icon">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            <figcaption><p dir="ltr"><a href="https://www.youtube.com/watch?v=uqyBrI2YoDQ&amp;ref=blog.mutiangpili.com"><span style="white-space: pre-wrap;">https://www.youtube.com/watch?v=uqyBrI2YoDQ</span></a></p></figcaption>
        </figure><hr><h1 id="step-1-%E2%80%93-download-vmware-esxi-70">Step 1 &#x2013; Download VMware ESXi 7.0</h1><p>Download the ESXi 7.0 ISO from the Broadcom Support Portal.</p><p>Make sure you download the version that matches your hardware vendor if available (Dell, HPE, Lenovo, Cisco, etc.).</p><p>Vendor-customized ISOs include optimized drivers for your hardware.</p><hr><h1 id="step-2-%E2%80%93-create-a-bootable-usb">Step 2 &#x2013; Create a Bootable USB</h1><p>Using Rufus:</p><ol><li>Insert your USB drive.</li><li>Open Rufus.</li><li>Select the ESXi ISO.</li><li>Partition Scheme:<ul><li>MBR (Legacy BIOS)</li><li>GPT (UEFI)</li></ul></li><li>Click <strong>Start</strong>.</li></ol><p>After completion, safely eject the USB.</p><hr><h1 id="step-3-%E2%80%93-configure-bios">Step 3 &#x2013; Configure BIOS</h1><p>Enter the server BIOS.</p><p>Enable:</p><ul><li>Intel VT-x or AMD-V</li><li>Intel VT-d (optional)</li><li>UEFI Boot (recommended)</li><li>Disable Secure Boot if unsupported</li></ul><p>Set the USB drive as the first boot device.</p><p>Save and reboot.</p><hr><h1 id="step-4-%E2%80%93-boot-the-esxi-installer">Step 4 &#x2013; Boot the ESXi Installer</h1><p>After booting from USB, you&apos;ll see:</p><pre><code>Loading VMware ESXi Installer...</code></pre><p>Wait a few moments.</p><p>The installer will initialize the hardware.</p><hr><h1 id="step-5-%E2%80%93-start-installation">Step 5 &#x2013; Start Installation</h1><p>When prompted:</p><pre><code>Welcome to VMware ESXi 7.0 Installer</code></pre><p>Press</p><pre><code>ENTER</code></pre><p>to continue.</p><hr><h1 id="step-6-%E2%80%93-accept-the-license-agreement">Step 6 &#x2013; Accept the License Agreement</h1><p>Read the EULA.</p><p>Press</p><pre><code>F11</code></pre><p>to accept.</p><hr><h1 id="step-7-%E2%80%93-select-installation-disk">Step 7 &#x2013; Select Installation Disk</h1><p>The installer detects available storage devices.</p><p>Example:</p><pre><code>Samsung SSD 870 EVO
120 GB

Kingston NVMe
500 GB</code></pre><p>Choose the drive where ESXi will be installed.</p><p>Press:</p><pre><code>ENTER</code></pre><hr><h1 id="step-8-%E2%80%93-select-keyboard-layout">Step 8 &#x2013; Select Keyboard Layout</h1><p>Usually:</p><pre><code>US Default</code></pre><p>Press Enter.</p><hr><h1 id="step-9-%E2%80%93-create-the-root-password">Step 9 &#x2013; Create the Root Password</h1><p>Create a strong password.</p><p>Example:</p><pre><code>Username:
root

Password:
************</code></pre><p>Requirements:</p><ul><li>8+ characters</li><li>Uppercase</li><li>Lowercase</li><li>Number</li><li>Symbol</li></ul><p>Press Enter.</p><hr><h1 id="step-10-%E2%80%93-confirm-installation">Step 10 &#x2013; Confirm Installation</h1><p>The installer warns that the selected disk will be erased.</p><p>Press:</p><pre><code>F11</code></pre><p>Installation begins.</p><p>Usually takes:</p><p>5&#x2013;10 minutes.</p><hr><h1 id="step-11-%E2%80%93-reboot">Step 11 &#x2013; Reboot</h1><p>When installation completes:</p><pre><code>Installation Complete

Remove Installation Media

Press ENTER to Reboot</code></pre><p>Remove the USB installer.</p><p>Press Enter.</p><hr><h1 id="step-12-%E2%80%93-first-boot">Step 12 &#x2013; First Boot</h1><p>ESXi loads.</p><p>Eventually you&apos;ll reach the Direct Console User Interface (DCUI).</p><p>Example:</p><pre><code>VMware ESXi 7.0

Press F2 to Customize</code></pre><p>You&apos;ll also see a DHCP-assigned IP address if one is available.</p><hr><h1 id="step-13-%E2%80%93-configure-the-management-network">Step 13 &#x2013; Configure the Management Network</h1><p>Press:</p><pre><code>F2</code></pre><p>Login:</p><pre><code>Username:
root

Password:
********</code></pre><p>Navigate to:</p><pre><code>Configure Management Network</code></pre><hr><h2 id="configure-network-adapter">Configure Network Adapter</h2><p>Select:</p><pre><code>Network Adapters</code></pre><p>Choose the physical NIC connected to your network.</p><hr><h2 id="configure-ipv4">Configure IPv4</h2><p>Navigate:</p><pre><code>IPv4 Configuration</code></pre><p>Select:</p><pre><code>Static IPv4</code></pre><p>Example:</p><pre><code>IP:
192.168.0.20

Subnet:
255.255.255.0

Gateway:
192.168.0.1</code></pre><hr><h2 id="configure-dns">Configure DNS</h2><pre><code>Primary DNS:
8.8.8.8

Secondary DNS:
1.1.1.1

Hostname:
esxi01</code></pre><hr><h2 id="restart-management-network">Restart Management Network</h2><p>Press:</p><pre><code>ESC</code></pre><p>Choose:</p><pre><code>Yes</code></pre><p>The Management Network restarts.</p><hr><h1 id="step-14-%E2%80%93-access-the-web-interface">Step 14 &#x2013; Access the Web Interface</h1><p>From another computer, open:</p><pre><code>https://192.168.0.20</code></pre><p>Ignore the SSL warning.</p><p>Login:</p><pre><code>Username:
root

Password:
********</code></pre><p>You&apos;ll now access the ESXi Host Client.</p><hr><h1 id="step-15-%E2%80%93-create-a-datastore">Step 15 &#x2013; Create a Datastore</h1><p>Navigate:</p><pre><code>Storage</code></pre><p>If a datastore wasn&apos;t created automatically:</p><pre><code>New Datastore</code></pre><p>Choose:</p><ul><li>VMFS 6</li><li>Entire Disk</li></ul><p>Finish.</p><hr><h1 id="step-16-%E2%80%93-configure-licensing">Step 16 &#x2013; Configure Licensing</h1><p>Navigate:</p><pre><code>Host

Manage

Licensing</code></pre><p>Choose:</p><pre><code>Assign License</code></pre><p>Enter your VMware license key.</p><p>If you don&apos;t have one, ESXi runs in Evaluation Mode for 60 days.</p><hr><h1 id="step-17-%E2%80%93-upload-iso-files">Step 17 &#x2013; Upload ISO Files</h1><p>Navigate:</p><pre><code>Storage

Datastore Browser</code></pre><p>Create folders:</p><pre><code>ISO

Templates

VMs</code></pre><p>Upload:</p><ul><li>Windows ISO</li><li>Ubuntu ISO</li><li>Rocky Linux</li><li>VMware Tools</li></ul><hr><h1 id="step-18-%E2%80%93-create-your-first-virtual-machine">Step 18 &#x2013; Create Your First Virtual Machine</h1><p>Click:</p><pre><code>Virtual Machines

Create/Register VM</code></pre><p>Select:</p><pre><code>Create New VM</code></pre><p>Example:</p><pre><code>Name:
Ubuntu01

Guest OS:
Ubuntu Linux 64-bit

CPU:
2

Memory:
4096 MB

Disk:
40 GB</code></pre><p>Attach the ISO.</p><p>Power it on.</p><hr><h1 id="recommended-post-installation-tasks">Recommended Post-Installation Tasks</h1><ul><li>Configure NTP</li><li>Enable SSH (only when needed)</li><li>Configure DNS</li><li>Configure Hostname</li><li>Create VM Network Port Groups</li><li>Configure VLANs</li><li>Set Power Policy to High Performance</li><li>Configure Local Users and Roles</li><li>Enable Lockdown Mode (production)</li><li>Configure Backups</li><li>Install VMware Tools on guest VMs</li><li>Monitor host health</li></ul><hr><h1 id="troubleshooting">Troubleshooting</h1><h3 id="no-compatible-network-adapter-found">No Compatible Network Adapter Found</h3><p>Cause:<br>Unsupported NIC.</p><p>Solution:</p><ul><li>Verify your hardware against the VMware Compatibility Guide.</li><li>Use a vendor-customized ESXi ISO with the appropriate network drivers.</li></ul><hr><h3 id="no-storage-devices-found">No Storage Devices Found</h3><p>Possible causes:</p><ul><li>RAID controller not configured</li><li>Unsupported storage controller</li><li>NVMe driver issue</li></ul><p>Check BIOS and RAID settings before reinstalling.</p><hr><h3 id="cannot-access-web-ui">Cannot Access Web UI</h3><p>Verify:</p><ul><li>Static IP</li><li>Gateway</li><li>DNS</li><li>Network cable</li><li>Firewall</li><li>HTTPS (port 443)</li></ul><p>Test connectivity:</p><pre><code>ping 192.168.0.20</code></pre><hr><h3 id="purple-screen-of-death-psod">Purple Screen of Death (PSOD)</h3><p>Common causes:</p><ul><li>Unsupported CPU</li><li>Faulty RAM</li><li>Driver incompatibility</li><li>Hardware failure</li></ul><p>Check server logs and firmware versions.</p><hr><h1 id="best-practices">Best Practices</h1><ul><li>Use SSD or NVMe for the ESXi boot device.</li><li>Keep firmware and drivers updated.</li><li>Use static IP addresses for management.</li><li>Back up the ESXi host configuration regularly.</li><li>Install vendor-customized ESXi images when available.</li><li>Use NTP to keep host time synchronized.</li><li>Store ISO files on a dedicated datastore.</li><li>Avoid enabling SSH permanently in production.</li></ul><hr><h1 id="conclusion">Conclusion</h1><p>Installing VMware ESXi 7.0 is a straightforward process that provides a powerful foundation for virtualization. After installation, you can begin deploying virtual machines, configuring networking and storage, and building a home lab or production environment.</p><p>Whether you&apos;re preparing for VMware certification, building a personal lab, or deploying enterprise infrastructure, mastering ESXi installation is the first step toward becoming proficient with VMware vSphere.</p>]]></content:encoded></item><item><title><![CDATA[Stop Managing Multiple Proxmox Clusters the Hard Way — Meet Proxmox Datacenter Manager]]></title><description><![CDATA[<p><em>Discover how Proxmox Datacenter Manager (PDM) provides a centralized dashboard, unified monitoring, VM migration, and simplified management across all your Proxmox clusters from a single interface.</em></p><p>As virtualization environments continue to grow, managing multiple hypervisors and clusters becomes increasingly complex. While Proxmox VE has always been an excellent open-source virtualization</p>]]></description><link>https://blog.mutiangpili.com/pdcm/</link><guid isPermaLink="false">6a3dbc9f1af2d8035273aa48</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Thu, 25 Jun 2026 23:57:47 GMT</pubDate><media:content url="https://blog.mutiangpili.com/content/images/2026/06/ProxmoxDCM-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.mutiangpili.com/content/images/2026/06/ProxmoxDCM-1.png" alt="Stop Managing Multiple Proxmox Clusters the Hard Way &#x2014; Meet Proxmox Datacenter Manager"><p><em>Discover how Proxmox Datacenter Manager (PDM) provides a centralized dashboard, unified monitoring, VM migration, and simplified management across all your Proxmox clusters from a single interface.</em></p><p>As virtualization environments continue to grow, managing multiple hypervisors and clusters becomes increasingly complex. While Proxmox VE has always been an excellent open-source virtualization platform, administrators have often needed to switch between multiple web interfaces to manage different clusters.</p><p>This is where <strong>Proxmox Data Center Manager (PDM)</strong> comes in.</p><hr><h3 id="what-is-proxmox-data-center-manager">What is Proxmox Data Center Manager?</h3><p>Proxmox Data Center Manager (PDM) is a centralized management platform designed to manage multiple Proxmox Virtual Environment (PVE) clusters from a single interface.</p><p>Instead of logging into each individual Proxmox cluster, administrators can register multiple clusters into PDM and gain a unified view of their entire virtualization infrastructure.</p><p>Think of it as a <strong>single pane of glass</strong> for your Proxmox environment.</p><hr><h3 id="why-do-we-need-pdm">Why Do We Need PDM?</h3><p>Many organizations eventually reach a point where one cluster is no longer enough.</p><p>You might have:</p><ul><li>Production Cluster</li><li>Development Cluster</li><li>Disaster Recovery Cluster</li><li>Edge Clusters</li><li>Branch Office Clusters</li><li>Lab Environment</li></ul><p>Without centralized management, administrators constantly switch between web interfaces, making monitoring and administration more difficult.</p><p>PDM simplifies this by bringing everything together.</p><hr><h3 id="key-features">Key Features</h3><h3 id="centralized-dashboard">Centralized Dashboard</h3><p>Monitor all registered Proxmox clusters from one dashboard.</p><p>You can quickly view:</p><ul><li>Cluster health</li><li>CPU utilization</li><li>Memory usage</li><li>Storage capacity</li><li>Node status</li><li>Virtual machines</li><li>Containers</li></ul><p>No more opening multiple browser tabs.</p><hr><h3 id="multi-cluster-management">Multi-Cluster Management</h3><p>PDM allows administrators to register multiple independent Proxmox clusters.</p><p>Example:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.mutiangpili.com/content/images/2026/06/image.png" class="kg-image" alt="Stop Managing Multiple Proxmox Clusters the Hard Way &#x2014; Meet Proxmox Datacenter Manager" loading="lazy" width="1910" height="887" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/06/image.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/06/image.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/06/image.png 1600w, https://blog.mutiangpili.com/content/images/2026/06/image.png 1910w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Single Pane of Glass</em></i></figcaption></figure><p>Everything becomes accessible from one portal.</p><hr><h3 id="unified-inventory">Unified Inventory</h3><p>Quickly locate resources across all clusters.</p><p>Search for:</p><ul><li>Virtual Machines</li><li>Containers</li><li>Storage</li><li>Nodes</li><li>Networks</li></ul><p>Instead of remembering which cluster hosts a particular VM, simply search for it.</p><hr><h3 id="role-based-access-control-rbac">Role-Based Access Control (RBAC)</h3><p>PDM integrates with the existing Proxmox permission model.</p><p>You can assign users different roles, such as:</p><ul><li>Infrastructure Administrators</li><li>Virtualization Team</li><li>Network Team</li><li>Backup Team</li><li>Read-Only Auditors</li></ul><p>This improves security while maintaining operational flexibility.</p><hr><h3 id="monitoring-and-alerts">Monitoring and Alerts</h3><p>PDM provides visibility into infrastructure health.</p><p>Examples include:</p><ul><li>Offline nodes</li><li>High CPU usage</li><li>Storage nearing capacity</li><li>Memory exhaustion</li><li>Cluster warnings</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.mutiangpili.com/content/images/2026/06/image-1.png" class="kg-image" alt="Stop Managing Multiple Proxmox Clusters the Hard Way &#x2014; Meet Proxmox Datacenter Manager" loading="lazy" width="1626" height="826" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/06/image-1.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/06/image-1.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/06/image-1.png 1600w, https://blog.mutiangpili.com/content/images/2026/06/image-1.png 1626w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">One Dashboard. Total Control.</em></i></figcaption></figure><p>This enables administrators to identify issues before they affect production workloads.</p><hr><h3 id="typical-architecture">Typical Architecture</h3><p>PDM acts as the management layer while each Proxmox cluster continues to operate independently.<br></p><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/06/pdcm.png" class="kg-image" alt="Stop Managing Multiple Proxmox Clusters the Hard Way &#x2014; Meet Proxmox Datacenter Manager" loading="lazy" width="1536" height="1024" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/06/pdcm.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/06/pdcm.png 1000w, https://blog.mutiangpili.com/content/images/2026/06/pdcm.png 1536w" sizes="(min-width: 720px) 720px"></figure><hr><h3 id="things-to-keep-in-mind">Things to Keep in Mind</h3><p>While PDM simplifies management, it does <strong>not</strong> replace Proxmox VE. Your clusters remain independent, and workloads continue to run on their respective nodes. PDM serves as the centralized management and visibility layer.</p><p>For organizations with a single small cluster, PDM may not provide significant advantages. However, as your infrastructure grows, centralized management becomes increasingly valuable.</p><hr><h3 id="final-thoughts">Final Thoughts</h3><p>Proxmox Data Center Manager represents an important step forward for organizations adopting Proxmox at scale. By providing centralized visibility, simplified administration, and multi-cluster management, it reduces operational complexity while improving efficiency.</p><p>Whether you&apos;re running a home lab with multiple clusters or managing enterprise virtualization across several data centers, PDM offers a modern approach to infrastructure management that aligns with the needs of today&apos;s distributed environments.</p><p>As Proxmox continues to evolve, tools like PDM make it easier for IT teams to scale confidently without sacrificing simplicity.</p>]]></content:encoded></item><item><title><![CDATA[Why Proxmox VE 9.2.2 is the Smart Choice for Business Owners, IT Leaders, and Modern Infrastructure Teams]]></title><description><![CDATA[<p><em>Reduce Downtime, Improve Business Continuity, and Lower Virtualization Costs Without Compromising Enterprise Features</em></p><p>In today&apos;s digital landscape, businesses rely heavily on IT infrastructure to support daily operations, customer services, and business growth. Whether you&apos;re running a manufacturing company, retail business, professional services firm, or managed service</p>]]></description><link>https://blog.mutiangpili.com/pve/</link><guid isPermaLink="false">6a1d873ec4d82b033c15f529</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Mon, 01 Jun 2026 13:40:52 GMT</pubDate><media:content url="https://blog.mutiangpili.com/content/images/2026/06/proxmox.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.mutiangpili.com/content/images/2026/06/proxmox.png" alt="Why Proxmox VE 9.2.2 is the Smart Choice for Business Owners, IT Leaders, and Modern Infrastructure Teams"><p><em>Reduce Downtime, Improve Business Continuity, and Lower Virtualization Costs Without Compromising Enterprise Features</em></p><p>In today&apos;s digital landscape, businesses rely heavily on IT infrastructure to support daily operations, customer services, and business growth. Whether you&apos;re running a manufacturing company, retail business, professional services firm, or managed service provider, downtime can directly impact productivity, customer satisfaction, and revenue.</p><p>For many business owners, the challenge is finding a virtualization platform that delivers enterprise-grade reliability without the high licensing costs often associated with traditional solutions.</p><p>This is where <strong>Proxmox VE 9.2.2</strong> stands out.</p><p>With built-in features such as <strong>High Availability (HA), Network Bonding, Storage Replication, and Node Affinity</strong>, Proxmox enables organizations to build resilient, scalable, and cost-effective infrastructure using standard hardware.</p><h3 id="what-is-proxmox-ve-922">What is Proxmox VE 9.2.2?</h3><p>Proxmox Virtual Environment (PVE) is an open-source enterprise virtualization platform that combines:</p><ul><li>KVM Virtual Machines</li><li>Linux Containers (LXC)</li><li>Clustering</li><li>Software Defined Storage</li><li>Backup and Recovery</li><li>High Availability</li><li>Centralized Management</li></ul><p>Unlike many commercial virtualization platforms, Proxmox provides enterprise capabilities without per-core or per-socket licensing costs.</p><p>For growing businesses, this means more budget can be invested in innovation, cybersecurity, and infrastructure improvements rather than software licensing.</p><hr><h3 id="high-availability-keeping-your-business-running">High Availability: Keeping Your Business Running</h3><p>Imagine your primary server suddenly fails during business hours.</p><p>Without High Availability:</p><p>&#x274C; Critical applications go offline</p><p>&#x274C; Employees cannot access systems</p><p>&#x274C; Customers may experience service interruptions</p><p>&#x274C; Revenue and productivity are impacted</p><p>With <strong>Proxmox High Availability</strong>, workloads are automatically restarted on another available node within the cluster.</p><h3 id="real-world-example">Real-World Example</h3><p>A business operates:</p><ul><li>ERP System</li><li>File Server</li><li>Active Directory</li><li>Accounting Application</li><li>Internal Web Applications</li></ul><p>across a three-node Proxmox cluster.</p><p>If one physical server experiences hardware failure:</p><ol><li>Proxmox detects the failure</li><li>HA Manager initiates recovery</li><li>Virtual machines restart on another node</li><li>Business operations continue with minimal disruption</li></ol><h3 id="business-benefits">Business Benefits</h3><p>&#x2714; Reduced downtime</p><p>&#x2714; Improved business continuity</p><p>&#x2714; Automated failover</p><p>&#x2714; Increased customer confidence</p><p>&#x2714; Reduced dependency on manual intervention</p><p>For small and medium-sized businesses, this provides enterprise-level protection without requiring a dedicated enterprise budget.</p><hr><h3 id="network-bonding-eliminating-single-points-of-failure">Network Bonding: Eliminating Single Points of Failure</h3><p>Many organizations invest heavily in servers but overlook one critical component: network redundancy.</p><p>A failed network cable or switch port can cause service interruptions even when servers remain operational.</p><p>Proxmox supports <strong>Network Bonding</strong>, allowing multiple physical network interfaces to function as a single logical connection.</p><h3 id="advantages">Advantages</h3><h3 id="redundancy">Redundancy</h3><p>If one network interface fails, traffic automatically continues through the remaining connection.</p><h3 id="increased-performance">Increased Performance</h3><p>Using LACP (802.3ad), organizations can aggregate multiple interfaces for higher throughput.</p><h3 id="better-cluster-reliability">Better Cluster Reliability</h3><p>Cluster communication remains stable even during network failures.</p><h3 id="improved-storage-replication">Improved Storage Replication</h3><p>Dedicated bonded links can be used for:</p><ul><li>Replication traffic</li><li>Backup traffic</li><li>Cluster synchronization</li></ul><p>The result is a more resilient infrastructure capable of supporting mission-critical workloads.</p><hr><h3 id="storage-replication-built-in-disaster-recovery">Storage Replication: Built-In Disaster Recovery</h3><p>Disaster recovery is often perceived as expensive and complex.</p><p>Proxmox changes this by including <strong>Storage Replication</strong> directly within the platform.</p><p>When using ZFS storage, virtual machine data can be replicated automatically between nodes at scheduled intervals.</p><p>Only changed blocks are transferred, making replication efficient and bandwidth-friendly.</p><h3 id="business-benefits-1">Business Benefits</h3><p>&#x2714; Faster recovery during hardware failures</p><p>&#x2714; Improved disaster preparedness</p><p>&#x2714; Reduced recovery time objectives (RTO)</p><p>&#x2714; No need for expensive SAN solutions</p><p>&#x2714; Lower infrastructure costs</p><p>For businesses that cannot justify enterprise storage arrays, Proxmox provides a practical and affordable alternative.</p><hr><h3 id="node-affinity-putting-workloads-where-they-belong">Node Affinity: Putting Workloads Where They Belong</h3><p>Not all workloads have the same requirements.</p><p>A database server may require:</p><ul><li>Faster CPUs</li><li>More RAM</li><li>NVMe storage</li></ul><p>while a file server may operate efficiently on standard infrastructure.</p><p><strong>Node Affinity</strong> allows administrators to define preferred locations for specific workloads.</p><h3 id="example-use-cases">Example Use Cases</h3><h3 id="database-workloads">Database Workloads</h3><p>Prioritize nodes with:</p><ul><li>High-performance NVMe storage</li><li>Larger memory capacity</li><li>Higher CPU resources</li></ul><h3 id="business-critical-applications">Business-Critical Applications</h3><p>Ensure important systems run on preferred hardware.</p><h3 id="compliance-requirements">Compliance Requirements</h3><p>Keep regulated workloads on designated infrastructure.</p><h3 id="performance-optimization">Performance Optimization</h3><p>Distribute workloads strategically across the cluster.</p><p>Node Affinity provides greater control over infrastructure resources while maintaining the flexibility of virtualization.</p><hr><h3 id="a-practical-smb-deployment-scenario">A Practical SMB Deployment Scenario</h3><p>Consider a growing business with:</p><h3 id="infrastructure">Infrastructure</h3>
<!--kg-card-begin: html-->
<table data-start="5682" data-end="5945" class="w-fit min-w-(--thread-content-width)"><thead data-start="5682" data-end="5711"><tr data-start="5682" data-end="5711"><th data-start="5682" data-end="5694" data-col-size="sm" class="last:pe-10">Component</th><th data-start="5694" data-end="5711" data-col-size="sm" class="last:pe-10">Configuration</th></tr></thead><tbody data-start="5743" data-end="5945"><tr data-start="5743" data-end="5764"><td data-start="5743" data-end="5759" data-col-size="sm">Cluster Nodes</td><td data-start="5759" data-end="5764" data-col-size="sm">3</td></tr><tr data-start="5765" data-end="5798"><td data-start="5765" data-end="5778" data-col-size="sm">Hypervisor</td><td data-start="5778" data-end="5798" data-col-size="sm">Proxmox VE 9.2.2</td></tr><tr data-start="5799" data-end="5821"><td data-start="5799" data-end="5809" data-col-size="sm">Storage</td><td data-start="5809" data-end="5821" data-col-size="sm">ZFS RAID</td></tr><tr data-start="5822" data-end="5847"><td data-start="5822" data-end="5832" data-col-size="sm">Network</td><td data-start="5832" data-end="5847" data-col-size="sm">Bonded 10Gb</td></tr><tr data-start="5848" data-end="5882"><td data-start="5848" data-end="5862" data-col-size="sm">Replication</td><td data-start="5862" data-end="5882" data-col-size="sm">Every 15 Minutes</td></tr><tr data-start="5883" data-end="5910"><td data-start="5883" data-end="5899" data-col-size="sm">HA Protection</td><td data-start="5899" data-end="5910" data-col-size="sm">Enabled</td></tr><tr data-start="5911" data-end="5945"><td data-start="5911" data-end="5920" data-col-size="sm">Backup</td><td data-start="5920" data-end="5945" data-col-size="sm">Proxmox Backup Server</td></tr></tbody></table>
<!--kg-card-end: html-->
<h3 id="what-happens-during-a-failure">What Happens During a Failure?</h3><p>If Node 1 experiences hardware failure:</p><ul><li>Replicated data already exists on Node 2</li><li>High Availability detects the outage</li><li>Protected workloads restart automatically</li><li>Business services remain available</li></ul><p>Instead of experiencing hours of downtime, recovery occurs automatically within minutes.</p><h3 id="why-proxmox-is-a-good-alternative">Why Proxmox is a Good Alternative</h3><p>Business owners increasingly expect IT investments to deliver measurable business value.</p><p>Proxmox helps achieve this through:</p><h3 id="lower-total-cost-of-ownership">Lower Total Cost of Ownership</h3><p>No expensive per-core licensing fees.</p><h3 id="improved-business-continuity">Improved Business Continuity</h3><p>Built-in High Availability and Replication reduce operational risk.</p><h3 id="scalability">Scalability</h3><p>Grow from a small cluster to enterprise-scale environments without redesigning infrastructure.</p><h3 id="vendor-independence">Vendor Independence</h3><p>Choose the hardware, storage, and networking vendors that best fit your business needs.</p><h3 id="investment-protection">Investment Protection</h3><p>Avoid vendor lock-in while maintaining enterprise functionality.</p><p>For organizations seeking long-term flexibility and cost control, this is a compelling advantage.</p><p></p><hr><h3 id="final-thoughts">Final Thoughts</h3><p>Proxmox VE 9.2.2 has evolved into a mature enterprise virtualization platform capable of supporting production workloads across a wide range of industries.</p><p>Its combination of:</p><ul><li>High Availability</li><li>Network Bonding</li><li>Storage Replication</li><li>Node Affinity</li><li>Live Migration</li><li>Enterprise Clustering</li></ul><p>allows organizations to build resilient infrastructure without the burden of excessive licensing costs.</p><p>For business owners, the benefits are clear:</p><p><strong>Less downtime. Lower costs. Greater flexibility. Better business continuity.</strong></p><p>Whether you&apos;re modernizing existing infrastructure, planning a virtualization refresh, or evaluating alternatives to traditional platforms, Proxmox VE 9.2.2 deserves a place on your shortlist.</p>]]></content:encoded></item><item><title><![CDATA[🏆 Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs]]></title><description><![CDATA[<hr><p>There was a time when scaling meant adding more VMs.</p><p>Traffic goes up? Add a server. CPU spikes? Resize the instance.</p><p>It worked&#x2026; for a while.</p><p>But eventually, it didn&#x2019;t.</p><p>More servers just meant more management. More maintenance. More complexity.</p><p>And even with extra capacity, the same</p>]]></description><link>https://blog.mutiangpili.com/aks/</link><guid isPermaLink="false">69ef07514d54aa035c5ec07f</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Mon, 27 Apr 2026 16:59:34 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1639322537228-f710d846310a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDI4fHx0ZWNofGVufDB8fHx8MTc3NzIyODUyNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<hr><img src="https://images.unsplash.com/photo-1639322537228-f710d846310a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDI4fHx0ZWNofGVufDB8fHx8MTc3NzIyODUyNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="&#x1F3C6; Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs"><p>There was a time when scaling meant adding more VMs.</p><p>Traffic goes up? Add a server. CPU spikes? Resize the instance.</p><p>It worked&#x2026; for a while.</p><p>But eventually, it didn&#x2019;t.</p><p>More servers just meant more management. More maintenance. More complexity.</p><p>And even with extra capacity, the same issues kept coming back.</p><p>That&#x2019;s when I realized something important.</p><p>The problem wasn&#x2019;t capacity.</p><p>It was architecture.</p><p>So instead of adding more machines, I changed the approach.</p><p>I  used the <strong>Azure Kubernetes Service</strong> &#x2014; not just to use Kubernetes, but to build a system that can adapt on its own.</p><hr><h2 id="%F0%9F%94%84-the-shift-from-servers-to-workloads">&#x1F504; The Shift: From Servers to Workloads</h2><p>Before AKS, my mindset was tied to infrastructure:</p><ul><li>Which VM is overloaded?</li><li>Do I need a bigger instance?</li><li>Should I spin up another server?</li></ul><p>After AKS, the questions changed:</p><ul><li>Is my application healthy?</li><li>Are my pods scaling properly?</li><li>Is traffic distributed efficiently?</li></ul><p>That shift alone changes how you design systems.</p><p>Because Kubernetes doesn&#x2019;t care about your servers.</p><p>It cares about <strong>desired state</strong>.</p><hr><h2 id="%F0%9F%A7%A0-what-aks-really-solves">&#x1F9E0; What AKS Really Solves</h2><p>With AKS, I stopped dealing with:</p><ul><li>Manual scaling</li><li>Load balancing configurations</li><li>Node lifecycle management</li></ul><p>Azure handles all of that.</p><p>Instead, I define:</p><ul><li>How much CPU a workload needs</li><li>When it should scale</li><li>How many instances should exist</li></ul><p>And the platform takes care of the rest.</p><hr><h2 id="%F0%9F%9B%A0%EF%B8%8F-the-build-simple-but-powerful">&#x1F6E0;&#xFE0F; The Build (Simple but Powerful)</h2><p>I kept the setup intentionally simple:</p><ul><li>1 AKS cluster</li><li>1 node pool (autoscaling enabled)</li><li>1 containerized app (<code>vtoxzy/webme</code>)</li><li>1 public LoadBalancer</li></ul><h3 id="create-aks-cluster">Create AKS Cluster<br></h3><h3 id="using-azure-gui">Using Azure GUI</h3><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-5.png" class="kg-image" alt="&#x1F3C6; Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs" loading="lazy" width="1320" height="772" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-5.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-5.png 1000w, https://blog.mutiangpili.com/content/images/2026/04/image-5.png 1320w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-6.png" class="kg-image" alt="&#x1F3C6; Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs" loading="lazy" width="1530" height="1458" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-6.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-6.png 1000w, https://blog.mutiangpili.com/content/images/2026/04/image-6.png 1530w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-9.png" class="kg-image" alt="&#x1F3C6; Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs" loading="lazy" width="1478" height="1198" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-9.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-9.png 1000w, https://blog.mutiangpili.com/content/images/2026/04/image-9.png 1478w" sizes="(min-width: 720px) 720px"></figure><h3 id="using-cloud-shell-cli">Using Cloud Shell CLI</h3><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-text">az aks create \<br> --resource-group CW-EUS-SUB1 \<br> --name eus-aks-cluster \<br> --node-count 1 \<br> --enable-cluster-autoscaler \<br> --min-count 1 \<br> --max-count 3 \<br> --generate-ssh-keys</div></div><p>Start small. Let it grow when needed.</p><hr><h3 id="connect-to-aks">Connect to AKS</h3><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">az aks get-credentials \<br> --resource-group myRG \<br> --name myAKSCluster</div></div><hr><h3 id="managing-aks">Managing AKS</h3><p>Here are the primary commands I use to check status:</p><p><code>kubectl get nodes</code> &#x2014; to check the number of nodes and their status</p><p><code>kubectl get pods</code> &#x2014; to check pod status</p><p><code>kubectl get svc</code> &#x2014; to check running service</p><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-11.png" class="kg-image" alt="&#x1F3C6; Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs" loading="lazy" width="1390" height="484" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-11.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-11.png 1000w, https://blog.mutiangpili.com/content/images/2026/04/image-11.png 1390w" sizes="(min-width: 720px) 720px"></figure><hr><h3 id="deploy-application">Deploy Application</h3><p>In Cloud Shell, create a YAML file.</p><ol><ol><ol><li>nano webme.yml</li></ol></ol></ol><p>Deploy the application.</p><ol><ol><ol><li>kubectl apply -f webme.yaml</li></ol></ol></ol><p>Verify the pods. </p><ol><ol><ol><li>kubectl get pods</li></ol></ol></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-12.png" class="kg-image" alt="&#x1F3C6; Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs" loading="lazy" width="1586" height="562" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-12.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-12.png 1000w, https://blog.mutiangpili.com/content/images/2026/04/image-12.png 1586w" sizes="(min-width: 720px) 720px"></figure><p>Check the public IP in the web browser. </p><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-13.png" class="kg-image" alt="&#x1F3C6; Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs" loading="lazy" width="2000" height="874" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-13.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-13.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/04/image-13.png 1600w, https://blog.mutiangpili.com/content/images/size/w2400/2026/04/image-13.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>Add 10 pods. </p><ol><ol><ol><li>kubectl scale deployment webme-development --replicas=10</li></ol></ol></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-15.png" class="kg-image" alt="&#x1F3C6; Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs" loading="lazy" width="1674" height="564" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-15.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-15.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/04/image-15.png 1600w, https://blog.mutiangpili.com/content/images/2026/04/image-15.png 1674w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="%E2%9A%A1-where-it-gets-interesting-autoscaling">&#x26A1; Where It Gets Interesting: Autoscaling</h2><p>This is where AKS actually changes the game.</p><p>I enabled <strong>Horizontal Pod Autoscaler (HPA)</strong>:</p><p>kubectl autoscale deployment webme \<br>  --cpu-percent=50 \<br>  --min=1 \<br>  --max=5</p><p>Now the system behaves differently:</p><ul><li>CPU increases &#x2192; more pods spin up</li><li>CPU drops &#x2192; pods scale down</li></ul><p>No manual action.</p><p>No guessing.</p><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-16.png" class="kg-image" alt="&#x1F3C6; Built to Scale, Not to Break: How We Eliminated Bottlenecks Without Increasing Infrastructure Costs" loading="lazy" width="2000" height="1055" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-16.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-16.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/04/image-16.png 1600w, https://blog.mutiangpili.com/content/images/size/w2400/2026/04/image-16.png 2400w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="%F0%9F%92%A1-the-things-that-will-break-it">&#x1F4A1; The Things That Will Break It</h2><p>Kubernetes is powerful &#x2014; but it&#x2019;s not magic.</p><p>If you don&#x2019;t define things properly, nothing happens.</p><p>Here are the common mistakes:</p><ul><li>&#x274C; No CPU requests &#x2192; HPA won&#x2019;t trigger</li><li>&#x274C; Autoscaler disabled &#x2192; nodes won&#x2019;t scale</li><li>&#x274C; Pods still fit in existing nodes &#x2192; no scale-out</li></ul><p>The system follows rules. You just need to set them right.</p><hr><h2 id="%F0%9F%A7%B1-what-actually-changed">&#x1F9F1; What Actually Changed</h2><p>Before:</p><ul><li>Reactive operations</li><li>Manual scaling</li><li>Constant monitoring</li></ul><p>After:</p><ul><li>Automated scaling</li><li>Self-healing workloads</li><li>Predictable behavior under load</li></ul><p>And most importantly&#x2014;</p><p>Less time fixing infrastructure.<br>More time improving systems.</p><hr><h2 id="%F0%9F%8E%AF-final-thought">&#x1F3AF; Final Thought</h2><p>A lot of teams think scaling means adding more servers.</p><p>But that&#x2019;s just adding weight to the same problem.</p><p>Real scalability comes from systems that adjust themselves.</p><p>That&#x2019;s what <strong>Azure Kubernetes Service</strong> gives you.</p><p>Not just more capacity.</p><p>But <strong>control over behavior</strong>.</p><hr><h2 id="%F0%9F%8F%81-tldr">&#x1F3C1; TL;DR</h2><ul><li>Stop thinking in VMs</li><li>Start thinking in workloads</li><li>Enable autoscaling early</li><li>Define CPU requests properly</li><li>Let the platform do its job</li></ul><hr><p>If your infrastructure still depends on manual scaling&#x2026;</p><p>You&#x2019;re not scaling.</p><p>You&#x2019;re surviving.</p>]]></content:encoded></item><item><title><![CDATA[From 2AM Panic to Automated Calm: How Azure Autoscale Changed Everything]]></title><description><![CDATA[Azure AutoScale]]></description><link>https://blog.mutiangpili.com/azureautoscale/</link><guid isPermaLink="false">69ecb82d4d54aa035c5ec049</guid><category><![CDATA[AzureAutoscale]]></category><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Sat, 25 Apr 2026 13:09:31 GMT</pubDate><media:content url="https://blog.mutiangpili.com/content/images/2026/04/autoscale-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.mutiangpili.com/content/images/2026/04/autoscale-1.png" alt="From 2AM Panic to Automated Calm: How Azure Autoscale Changed Everything"><p>There&#x2019;s a moment every infrastructure engineer knows&#x2014;the one where everything is fine&#x2026; until it isn&#x2019;t.</p><p>For me, it happened at 2AM. CPU utilization shot up to 100%, alerts started firing non-stop, and users were quietly dropping off. I was inside <strong>Microsoft Azure</strong>, manually resizing virtual machines, trying to keep the system alive. It worked&#x2014;but barely. And more importantly, it wasn&#x2019;t sustainable.</p><p>That night made one thing very clear:<br><strong>The problem wasn&#x2019;t capacity. It was control.</strong></p><hr><h2 id="%F0%9F%94%B4-the-problem-reactive-infrastructure">&#x1F534; The Problem: Reactive Infrastructure</h2><p>Like many setups, I was running on fixed resources. During normal hours, everything was stable. But when demand spiked, the system had no way to adapt on its own.</p><p>That meant:</p><ul><li>Either overprovision (and waste money), or</li><li>Underprovision (and risk downtime)</li></ul><p>And when traffic surged, it always came down to one thing:<br><strong>How fast I could react.</strong></p><p>That&#x2019;s not how modern infrastructure should work.</p><hr><h2 id="%E2%9A%99%EF%B8%8F-the-architecture-simple-scalable-and-smart">&#x2699;&#xFE0F; The Architecture: Simple, Scalable, and Smart</h2><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/autoscale.png" class="kg-image" alt="From 2AM Panic to Automated Calm: How Azure Autoscale Changed Everything" loading="lazy" width="1536" height="1024" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/autoscale.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/autoscale.png 1000w, https://blog.mutiangpili.com/content/images/2026/04/autoscale.png 1536w" sizes="(min-width: 720px) 720px"></figure><p>Instead of adding complexity, I simplified the design and focused on automation.</p><p>Here&#x2019;s the actual architecture I implemented:</p><p>Azure Autoscale Architecture</p><h3 id="%F0%9F%A7%B1-core-components">&#x1F9F1; Core Components</h3><ul><li><strong>Region:</strong> East US 2</li><li><strong>Virtual Network:</strong> <code>10.0.1.0/24</code></li><li><strong>NSG:</strong> Secured inbound/outbound traffic</li><li><strong>Availability Zone:</strong> Single zone (can expand to multi-zone)</li><li><strong>Compute:</strong> Virtual Machine Scale Set (VMSS)</li></ul><hr><h2 id="%E2%9A%99%EF%B8%8F-the-shift-letting-the-system-think">&#x2699;&#xFE0F; The Shift: Letting the System Think</h2><p>Instead of fighting the spikes, I redesigned the approach.</p><p>I implemented <strong>Azure Autoscale</strong> using a Virtual Machine Scale Set. The idea was simple:</p><ul><li>Minimum instances: 1</li><li>Maximum instances: 3</li><li>Scale out if CPU &gt; 80%</li><li>Scale in if CPU &lt; 30%</li></ul><p>No complex logic. Just clear thresholds based on real behavior.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-1.png" class="kg-image" alt="From 2AM Panic to Automated Calm: How Azure Autoscale Changed Everything" loading="lazy" width="2000" height="1061" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-1.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-1.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/04/image-1.png 1600w, https://blog.mutiangpili.com/content/images/size/w2400/2026/04/image-1.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Before Autoscale Trigger</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-2.png" class="kg-image" alt="From 2AM Panic to Automated Calm: How Azure Autoscale Changed Everything" loading="lazy" width="2000" height="1083" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-2.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-2.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/04/image-2.png 1600w, https://blog.mutiangpili.com/content/images/size/w2400/2026/04/image-2.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Scale-Out After AutoScale Trigger</span></figcaption></figure><p>To validate it, I simulated load using a simple Linux stress tool. As CPU usage climbed, I watched new instances spin up automatically. When the load dropped, the system scaled back down quietly.<br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.mutiangpili.com/content/images/2026/04/image-3.png" class="kg-image" alt="From 2AM Panic to Automated Calm: How Azure Autoscale Changed Everything" loading="lazy" width="2000" height="1051" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/image-3.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/image-3.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/04/image-3.png 1600w, https://blog.mutiangpili.com/content/images/size/w2400/2026/04/image-3.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Scale-In After CPU back to Normal</span></figcaption></figure><p>No clicks. No panic.<br>Just automation doing exactly what it was designed to do.</p><hr><h2 id="%F0%9F%92%A1-the-outcome-stability-without-stress">&#x1F4A1; The Outcome: Stability Without Stress</h2><p>That one change had an immediate impact.</p><p>Performance became consistent&#x2014;even under heavy load. Users no longer felt slowdowns. And instead of guessing how much capacity I needed, the system adjusted itself in real time.</p><p>But the biggest win wasn&#x2019;t technical.</p><p>It was operational.</p><ul><li>No more late-night firefighting</li><li>No more overpaying for idle resources</li><li>No more reactive decision-making</li></ul><p>For the first time, the infrastructure felt&#x2026; effortless.</p><hr><h2 id="%F0%9F%9A%80-why-autoscale-matters">&#x1F680; Why Autoscale Matters</h2><p>Autoscale isn&#x2019;t just about adding more servers&#x2014;it&#x2019;s about building systems that respond intelligently to demand.</p><p>Here&#x2019;s what it unlocks:</p><p><strong>Cost Efficiency</strong><br>You only pay for what you actually use.</p><p><strong>High Availability</strong><br>The system reacts faster than any human ever could.</p><p><strong>Performance Stability</strong><br>Traffic spikes are absorbed seamlessly.</p><p><strong>Operational Freedom</strong><br>You stop managing servers&#x2014;and start designing systems.</p><hr><h2 id="%F0%9F%8E%AF-final-thoughts">&#x1F3AF; Final Thoughts</h2><p>That night changed how I think about infrastructure.</p><p>Before, I was reacting to problems.<br>Now, the system prevents them.</p><p>With **Microsoft Azure Autoscale, you&#x2019;re not just scaling resources&#x2014;you&#x2019;re scaling your ability to operate efficiently, reliably, and intelligently.</p><p>And once you experience that shift&#x2026;</p><p>You&#x2019;ll never want to go back.</p>]]></content:encoded></item><item><title><![CDATA[🛜 I Stopped Using VPN Gateways—Here’s How I Built a Multi-Cloud Network Instead]]></title><description><![CDATA[<h2 id="%F0%9F%9A%80-building-a-low-cost-multi-cloud-network-with-tailscale-azure-aws-on-prem">&#x1F680; Building a Low-Cost Multi-Cloud Network with Tailscale (Azure + AWS + On-Prem)</h2><p></p><p>For years, the default way to connect networks across environments&#x2014;on-premises, Azure, AWS&#x2014;has been through traditional site-to-site VPNs. You deploy a VPN gateway, configure IPSec tunnels, manage pre-shared keys, deal with routing quirks, and pay a</p>]]></description><link>https://blog.mutiangpili.com/multi-cloud-tailscale/</link><guid isPermaLink="false">69eb61994d54aa035c5ebffb</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Fri, 24 Apr 2026 12:54:37 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1644088379091-d574269d422f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fHRlY2hub2xvZ3l8ZW58MHx8fHwxNzc3MDM0MDE3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<h2 id="%F0%9F%9A%80-building-a-low-cost-multi-cloud-network-with-tailscale-azure-aws-on-prem">&#x1F680; Building a Low-Cost Multi-Cloud Network with Tailscale (Azure + AWS + On-Prem)</h2><img src="https://images.unsplash.com/photo-1644088379091-d574269d422f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fHRlY2hub2xvZ3l8ZW58MHx8fHwxNzc3MDM0MDE3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="&#x1F6DC; I Stopped Using VPN Gateways&#x2014;Here&#x2019;s How I Built a Multi-Cloud Network Instead"><p></p><p>For years, the default way to connect networks across environments&#x2014;on-premises, Azure, AWS&#x2014;has been through traditional site-to-site VPNs. You deploy a VPN gateway, configure IPSec tunnels, manage pre-shared keys, deal with routing quirks, and pay a fixed monthly cost whether you use it heavily or not.</p><p>It works. But it&#x2019;s heavy, rigid, and for many small-to-medium businesses, unnecessarily expensive.</p><p>So I explored a different approach&#x2014;one that removes the dependency on traditional VPN gateways entirely. Instead of building tunnels between networks, I focused on building a <strong>secure, identity-based network overlay</strong> using Tailscale, and combining it with <strong>native cloud routing mechanisms like VNet peering and VPC peering</strong>.</p><p>What came out of that is a fully functional, multi-cloud network that behaves like a site-to-site VPN&#x2014;but is far more flexible and cost-efficient.</p><hr><h2 id="%F0%9F%A7%AD-architecture-at-a-glance">&#x1F9ED; Architecture at a Glance</h2><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/04/a50d0eb6-3c82-4c02-bd5a-490815f47727.png" class="kg-image" alt="&#x1F6DC; I Stopped Using VPN Gateways&#x2014;Here&#x2019;s How I Built a Multi-Cloud Network Instead" loading="lazy" width="1402" height="1122" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/04/a50d0eb6-3c82-4c02-bd5a-490815f47727.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/04/a50d0eb6-3c82-4c02-bd5a-490815f47727.png 1000w, https://blog.mutiangpili.com/content/images/2026/04/a50d0eb6-3c82-4c02-bd5a-490815f47727.png 1402w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="%F0%9F%8C%90-the-idea-don%E2%80%99t-tunnel-networks%E2%80%94overlay-them"><strong>&#x1F310; The Idea: Don&#x2019;t Tunnel Networks&#x2014;Overlay Them</strong></h2><p>At the core of this design is a simple shift in thinking.</p><p>Instead of asking:</p><p>&#x201C;How do I connect Site A to Site B with a tunnel?&#x201D;</p><p>We ask:</p><p>&#x201C;How do I make all sites part of the same secure network, regardless of where they live?&#x201D;</p><p>This is exactly what Tailscale does.</p><p>Tailscale creates a <strong>private mesh network</strong> across all participating nodes using WireGuard. Every node gets an identity and a private IP, and communication between nodes is encrypted end-to-end. There&#x2019;s no central VPN gateway, no single choke point&#x2014;just direct, secure connectivity between peers.</p><p>But the real power comes when you introduce <strong>subnet routers</strong>.</p><hr><h2 id="%F0%9F%94%91-turning-individual-nodes-into-network-gateways">&#x1F511; Turning Individual Nodes into Network Gateways</h2><p>In a normal Tailscale setup, only the devices running Tailscale can communicate. That&#x2019;s useful, but not enough when you want entire subnets&#x2014;like <code>192.168.0.0/24</code> or <code>10.0.1.0/24</code>&#x2014;to be reachable.</p><p>This is where subnet routers come in.</p><p>By enabling route advertisement on a node, you essentially tell Tailscale:</p><p>&#x201C;If anyone needs to reach this subnet, send the traffic to me.&#x201D;</p><p>For example, on an on-prem server:</p><p>tailscale up --advertise-routes=192.168.0.0/24</p><p>Now, any device in the Tailscale network can reach the entire on-prem subnet through that single node.</p><p>The same concept applies in the cloud.</p><ul><li>In Azure, a VM advertises <code>10.0.0.0/16</code></li><li>In AWS N. Virginia, another VM advertises <code>172.0.1.0/24</code></li></ul><p>These nodes stop being just servers&#x2014;they become <strong>routing points between the overlay network and their local environments</strong>.</p><p>But for this to work correctly, one critical setting must be enabled:</p><p>sysctl -w net.ipv4.ip_forward=1</p><p>Without IP forwarding, the node can receive traffic&#x2014;but won&#x2019;t pass it along.</p><hr><h2 id="%E2%98%81%EF%B8%8F-azure-acting-as-the-aggregation-layer">&#x2601;&#xFE0F; Azure: Acting as the Aggregation Layer</h2><p>In Azure, I used two VNets&#x2014;East US and Central US&#x2014;connected via VNet peering. This part is important because Azure peering provides <strong>high-speed, low-latency private connectivity</strong> between networks without needing a gateway.</p><p>Inside East US, I deployed a Tailscale router VM and advertised the Azure address space.</p><p>Now, Azure effectively becomes a <strong>hub</strong> in the design. It can reach:</p><ul><li>On-prem via Tailscale</li><li>AWS via Tailscale</li><li>Other Azure VNets via peering</li></ul><p>To make this work cleanly, Azure uses <strong>User Defined Routes (UDRs)</strong>.</p><p>For example:</p><p>Destination: 172.0.0.0/16  <br>Next hop: Tailscale router VM</p><p>This ensures that any traffic destined for AWS is forwarded into the Tailscale overlay instead of being dropped or sent to the internet.</p><p>At the same time, Network Security Groups (NSGs) must allow traffic from the AWS and on-prem CIDRs. Without that, packets arrive&#x2014;but never make it to the VM.</p><hr><h2 id="%E2%98%81%EF%B8%8F-aws-where-routing-gets-interesting">&#x2601;&#xFE0F; AWS: Where Routing Gets Interesting</h2><p>AWS introduces a key constraint that shapes the design:</p><p><strong>VPC peering is not transitive.</strong></p><p>This means AWS will not automatically route traffic from one VPC to another through a third VPC.</p><p>So if you have:</p><ul><li>N. Virginia (<code>172.0.1.0/24</code>)</li><li>Oregon (<code>172.0.2.0/24</code>)</li></ul><p>Even with peering in place, traffic won&#x2019;t magically flow across multiple hops.</p><p>To solve this, I used the N. Virginia Tailscale router as a <strong>controlled transit point</strong>.</p><p>Here&#x2019;s how it works in practice.</p><p>When Azure wants to reach a VM in Oregon:</p><ol><li>The packet is sent to the Azure Tailscale router (via UDR)</li><li>It enters the Tailscale network (encrypted)</li><li>It reaches the AWS N. Virginia router</li><li>That router checks its route table:172.0.2.0/24 &#x2192; VPC Peering (pcx-xxxx)</li><li>The packet is forwarded across the peering connection into Oregon</li></ol><p>The return path follows the same logic in reverse.</p><p>This works not because AWS allows transitive routing&#x2014;but because the N. Virginia router is acting as a <strong>Layer 3 forwarding device</strong>, making an explicit routing decision.</p><hr><h2 id="%F0%9F%8F%A0-on-prem-no-static-ip-no-problem">&#x1F3E0; On-Prem: No Static IP, No Problem</h2><p>On the on-prem side, things are surprisingly simple.</p><p>A single machine running Tailscale advertises the local subnet:</p><p>tailscale up --advertise-routes=192.168.0.0/24</p><p>That&#x2019;s it.</p><p>There&#x2019;s no need for:</p><ul><li>Static public IPs</li><li>Port forwarding</li><li>Edge firewall changes</li></ul><p>Tailscale handles NAT traversal automatically. Even behind typical ISP setups, the on-prem network becomes fully reachable from Azure and AWS&#x2014;securely and privately.</p><hr><h2 id="%F0%9F%94%90-security-identity-over-perimeter">&#x1F510; Security: Identity Over Perimeter</h2><p>Traditional VPNs rely heavily on network boundaries&#x2014;if you&#x2019;re inside, you&#x2019;re trusted.</p><p>This design flips that model.</p><ul><li>Every connection is encrypted using WireGuard</li><li>Every node is authenticated via identity</li><li>Access can be restricted using Tailscale ACLs, Azure NSGs, and AWS Security Groups</li></ul><p>Instead of trusting a subnet, you trust <strong>who and what is connecting</strong>.</p><hr><h2 id="%F0%9F%92%B0-cost-where-this-really-shines">&#x1F4B0; Cost: Where This Really Shines</h2><p>In a traditional setup, just enabling connectivity between Azure and AWS could require:</p><ul><li>Azure VPN Gateway</li><li>AWS Site-to-Site VPN</li><li>Possibly a Transit Gateway</li><li>NAT Gateways for outbound access</li></ul><p>Even a basic setup can easily exceed <strong>$200&#x2013;$400 per month</strong>, before considering data transfer.</p><p>In this design, the only real cost is:</p><ul><li>A few small VMs acting as routers</li><li>Minimal peering costs</li><li>Tailscale (often free or low-tier)</li></ul><p>That brings the cost down dramatically&#x2014;often to <strong>under $30/month</strong> for the same functional outcome.</p><hr><h2 id="%E2%9A%96%EF%B8%8F-what-this-design-really-is">&#x2696;&#xFE0F; What This Design Really Is</h2><p>It&#x2019;s tempting to call this a &#x201C;site-to-site VPN,&#x201D; but that&#x2019;s not entirely accurate.</p><p>There are no static tunnels. No IPSec. No centralized gateways.</p><p>Instead, this is:</p><p>A <strong>multi-cloud, identity-based network built using an encrypted overlay (Tailscale) and native cloud routing (peering + route tables).</strong></p><p>It behaves like a site-to-site network&#x2014;but it&#x2019;s far more flexible.</p><hr><h2 id="%F0%9F%A7%A9-scaling-and-high-availability">&#x1F9E9; Scaling and High Availability</h2><p>As demand grows, this design can evolve.</p><p>You can deploy multiple subnet routers advertising the same CIDR. Tailscale will automatically choose the best path, providing failover without complex routing protocols.</p><p>In cloud environments, you can go further:</p><ul><li>Azure VM Scale Sets</li><li>AWS Auto Scaling Groups</li></ul><p>High availability becomes a matter of <strong>adding more routers</strong>, not redesigning the network.</p><hr><h2 id="%F0%9F%8F%81-final-thoughts">&#x1F3C1; Final Thoughts</h2><p>What started as an experiment turned into a clear realization:</p><p>You don&#x2019;t always need heavy, traditional VPN infrastructure to build a secure, multi-site network.</p><p>By combining:</p><ul><li><strong>Tailscale for secure overlay connectivity</strong></li><li><strong>Cloud-native peering for efficient intra-cloud routing</strong></li><li><strong>Proper route table design for traffic control</strong></li></ul><p>You can build a network that is:</p><ul><li>Secure</li><li>Flexible</li><li>Cost-efficient</li><li>Multi-cloud ready</li></ul><p>And most importantly&#x2014;simple enough to deploy and manage without overengineering.</p><hr><p>If you&#x2019;re exploring hybrid or multi-cloud networking, this approach is worth considering. It challenges the default assumptions&#x2014;and in many cases, delivers a better outcome with fewer moving parts.</p>]]></content:encoded></item><item><title><![CDATA[“Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide” Part 3]]></title><description><![CDATA[<p><em>Load balancers are one of those things you don&#x2019;t notice&#x2014;until your website goes down.</em></p><p>Whether you&#x2019;re running a small business site or a production-grade application, relying on a single server is a risk you can&#x2019;t afford. Downtime, traffic spikes, and maintenance windows</p>]]></description><link>https://blog.mutiangpili.com/deploying-kemp-load-balancer-part3/</link><guid isPermaLink="false">697d61e60abe780a02207bfd</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Sat, 31 Jan 2026 03:07:11 GMT</pubDate><media:content url="https://blog.mutiangpili.com/content/images/2026/01/kemp2-2.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.mutiangpili.com/content/images/2026/01/kemp2-2.png" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 3"><p><em>Load balancers are one of those things you don&#x2019;t notice&#x2014;until your website goes down.</em></p><p>Whether you&#x2019;re running a small business site or a production-grade application, relying on a single server is a risk you can&#x2019;t afford. Downtime, traffic spikes, and maintenance windows shouldn&#x2019;t mean your service disappears.</p><p>This article is&#xA0;<strong>Part 3 of a 3-part series</strong>, where I&#x2019;ll walk you through deploying&#xA0;<strong>Kemp LoadMaster</strong>&#xA0;inside&#xA0;<strong>Proxmox</strong>, configuring it for a&#xA0;<strong>single website</strong>, and integrating it with&#xA0;<strong>Cloudflare</strong>. The goal is simple: build a&#xA0;<strong>reliable, production-ready setup</strong>&#xA0;without unnecessary complexity.</p><p>This is a&#xA0;<strong>practical, step-by-step guide</strong>&#x2014;no theory overload, no vendor hype&#x2014;just what actually works in real-world environments.</p><p>If you&#x2019;re a system engineer, IT admin, or someone building a homelab or SMB infrastructure, this series will help you achieve&#xA0;<strong>high availability, better traffic control, and peace of mind</strong>.</p><p>Let&#x2019;s build it.</p><hr><h3 id="%F0%9F%A7%AD-architecture"><strong>&#x1F9ED; Architecture</strong></h3><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/kemp3.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 3" loading="lazy" width="1536" height="1024" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/kemp3.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/kemp3.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/kemp3.png 1536w" sizes="(min-width: 720px) 720px"></figure><h2 id="%E2%9C%85-prerequisites">&#x2705; Prerequisites</h2><p>Before starting, make sure you have the following:</p><h3 id="infrastructure">Infrastructure</h3><ul><li><strong>Kemp LoadMaster</strong> (VM or Hardware)</li><li>At least <strong>one backend web server</strong></li><li>Internet access from Kemp LoadMaster</li></ul><h3 id="accounts-access">Accounts &amp; Access</h3><ul><li><strong>Cloudflare</strong> account</li><li>A registered <strong>domain name</strong></li><li>Admin access to:<ul><li>Cloudflare Dashboard</li><li>Kemp LoadMaster Web UI</li></ul></li></ul><h3 id="network-requirements">Network Requirements</h3><ul><li>Outbound HTTPS (TCP 443) allowed from Kemp</li><li>No inbound ports required when using Cloudflare Tunnel</li></ul><hr><h3 id="step-1-login-to-cloudflare-account">Step 1: Login to CloudFlare Account</h3><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-35.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 3" loading="lazy" width="473" height="432"></figure><h3 id="step-2-go-to-connector-tunnel">Step 2: Go to Connector Tunnel</h3><ul><ul><li><strong>Zero Trust - &gt; Network - &gt; Connector </strong></li></ul></ul><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-29.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 3" loading="lazy" width="1873" height="480" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-29.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-29.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/01/image-29.png 1600w, https://blog.mutiangpili.com/content/images/2026/01/image-29.png 1873w" sizes="(min-width: 720px) 720px"></figure><h3 id="step-3-create-and-publish-the-kemp-virtual-ip">Step 3: Create and publish the Kemp Virtual IP. </h3><p><em>Take Note: Do not publish the Kemp Console IP</em> </p><ul><ul><li>Select tunnel - &gt; Edit</li><li>Select the <strong>Published application routes </strong>tab</li><li>Click <strong>Add a published application routes</strong> button</li></ul></ul><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-30.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 3" loading="lazy" width="873" height="386" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-30.png 600w, https://blog.mutiangpili.com/content/images/2026/01/image-30.png 873w" sizes="(min-width: 720px) 720px"></figure><ul><ul><li>Fill-up the following:</li><li>Subdomain: `web2`</li><li>Domain: `yourdomainame.com`</li><li>Type: `http`</li><li>URL: `192.168.200.102:5001&apos; - <em>this is the Virtual IP of the Kemp</em></li><li>Click Save</li></ul></ul><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-33.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 3" loading="lazy" width="1617" height="416" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-33.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-33.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/01/image-33.png 1600w, https://blog.mutiangpili.com/content/images/2026/01/image-33.png 1617w" sizes="(min-width: 720px) 720px"></figure><h3 id="step-4-test-the-new-publish-website">Step 4: Test the new publish website</h3><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-34.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 3" loading="lazy" width="1190" height="768" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-34.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-34.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/image-34.png 1190w" sizes="(min-width: 720px) 720px"></figure><h2 id="%F0%9F%8E%AF-final-thoughts">&#x1F3AF; Final Thoughts</h2><p>By combining <strong>Kemp LoadMaster + Cloudflare Tunnel</strong>, you get:</p><ul><li>Enterprise-grade security</li><li>Zero exposed inbound ports</li><li>Clean, scalable architecture</li><li>Easy SSL and DNS management</li></ul><p>This setup is ideal for:</p><ul><li>Production web applications</li><li>Hybrid cloud environments</li><li>Security-focused organizations</li></ul><hr><p><a href="https://blog.mutiangpili.com/kemp-load-balancer-part1/" rel="noreferrer">Part1&#xA0;<em>Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide</em></a></p><p><a href="https://blog.mutiangpili.com/deploying-kemp-load-balancer-part2/" rel="noreferrer">Part2&#xA0;<em>Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide</em></a></p>]]></content:encoded></item><item><title><![CDATA[“Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide” Part 2]]></title><description><![CDATA[<hr><p><em>Load balancers are one of those things you don&#x2019;t notice&#x2014;until your website goes down.</em></p><p>Whether you&#x2019;re running a small business site or a production-grade application, relying on a single server is a risk you can&#x2019;t afford. Downtime, traffic spikes, and maintenance windows</p>]]></description><link>https://blog.mutiangpili.com/deploying-kemp-load-balancer-part2/</link><guid isPermaLink="false">697d59f10abe780a02207b9f</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Sat, 31 Jan 2026 01:57:53 GMT</pubDate><media:content url="https://blog.mutiangpili.com/content/images/2026/01/kemp2-1.png" medium="image"/><content:encoded><![CDATA[<hr><img src="https://blog.mutiangpili.com/content/images/2026/01/kemp2-1.png" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 2"><p><em>Load balancers are one of those things you don&#x2019;t notice&#x2014;until your website goes down.</em></p><p>Whether you&#x2019;re running a small business site or a production-grade application, relying on a single server is a risk you can&#x2019;t afford. Downtime, traffic spikes, and maintenance windows shouldn&#x2019;t mean your service disappears.</p><p>This article is&#xA0;<strong>Part 2 of a 3-part series</strong>, where I&#x2019;ll walk you through deploying&#xA0;<strong>Kemp LoadMaster</strong>&#xA0;inside&#xA0;<strong>Proxmox</strong>, configuring it for a&#xA0;<strong>single website</strong>, and integrating it with&#xA0;<strong>Cloudflare</strong>. The goal is simple: build a&#xA0;<strong>reliable, production-ready setup</strong>&#xA0;without unnecessary complexity.</p><p>This is a&#xA0;<strong>practical, step-by-step guide</strong>&#x2014;no theory overload, no vendor hype&#x2014;just what actually works in real-world environments.</p><p>If you&#x2019;re a system engineer, IT admin, or someone building a homelab or SMB infrastructure, this series will help you achieve&#xA0;<strong>high availability, better traffic control, and peace of mind</strong>.</p><p>Let&#x2019;s build it.</p><hr><h3 id="create-the-kemp-virtual-service">Create the Kemp Virtual Service </h3><ol><li>Login to LoadMaster Web UI:<br>`https://&lt;LoadMaster-IP&gt;&apos;</li><li>Go to <strong>Virtual Services &#x2192; Add New</strong></li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-12.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 2" loading="lazy" width="1841" height="269" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-12.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-12.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/01/image-12.png 1600w, https://blog.mutiangpili.com/content/images/2026/01/image-12.png 1841w" sizes="(min-width: 720px) 720px"></figure><ol start="3"><li>Set:<ol><li><strong>Virtual Address:</strong> 192.168.200.102</li><li><strong>Port:</strong> 443</li><li><strong>Service Type:</strong> <code>HTTPS</code></li></ol></li><li>Click <strong>Add this Virtual Service</strong></li><li>Add the<strong> Service Name </strong>and click<strong> Set NickName</strong></li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-13.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 2" loading="lazy" width="1845" height="519" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-13.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-13.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/01/image-13.png 1600w, https://blog.mutiangpili.com/content/images/2026/01/image-13.png 1845w" sizes="(min-width: 720px) 720px"></figure><p>&#x2705; Quick test: From LoadMaster, ensure it can reach your web server IP(s).</p><h3 id="add-the-real-server-single-backend">Add the Real Server (single backend)</h3><ol><li>Open the newly created VIP</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-14.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 2" loading="lazy" width="1844" height="97" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-14.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-14.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/01/image-14.png 1600w, https://blog.mutiangpili.com/content/images/2026/01/image-14.png 1844w" sizes="(min-width: 720px) 720px"></figure><ol start="2"><li>Under <strong>Real Servers &#x2192; Add New</strong></li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-15.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 2" loading="lazy" width="1576" height="685" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-15.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-15.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/image-15.png 1576w" sizes="(min-width: 720px) 720px"></figure><ol start="3"><li>Enter: </li></ol><ul><ul><li><strong>Real Server Address:</strong> <code>backend-server-ip</code></li><li><strong>Port:</strong> <code>80</code> (or <code>443</code> if backend uses SSL)</li></ul></ul><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-16.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 2" loading="lazy" width="1582" height="255" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-16.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-16.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/image-16.png 1582w" sizes="(min-width: 720px) 720px"></figure><ol start="4"><li>Click <strong>Add This Real Server</strong></li><li>Check the <strong>Status (it should be Green)</strong></li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-17.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D; Part 2" loading="lazy" width="1595" height="96" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-17.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-17.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/image-17.png 1595w" sizes="(min-width: 720px) 720px"></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">&#x1F51C; What&#x2019;s Next<br><br>In <b><strong style="white-space: pre-wrap;">Part 3</strong></b>, we&#x2019;ll complete the setup by adding <b><strong style="white-space: pre-wrap;">backend servers and validation testing</strong></b> inside Kemp LoadMaster. <br><br>This is where everything comes together&#x2014;ensuring traffic keeps flowing even when a server goes down.<br></div></div><p><a href="https://blog.mutiangpili.com/kemp-load-balancer-part1/" rel="noreferrer">Part1 <em>Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide</em></a></p><p><a href="https://blog.mutiangpili.com/deploying-kemp-load-balancer-part3/" rel="noreferrer">Part3 <em>Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide</em></a></p>]]></content:encoded></item><item><title><![CDATA[“Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide”]]></title><description><![CDATA[<p><em>Load balancers are one of those things you don&#x2019;t notice&#x2014;until your website goes down.</em></p><p>Whether you&#x2019;re running a small business site or a production-grade application, relying on a single server is a risk you can&#x2019;t afford. Downtime, traffic spikes, and maintenance windows</p>]]></description><link>https://blog.mutiangpili.com/kemp-load-balancer-part1/</link><guid isPermaLink="false">697d489c0abe780a02207b01</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Sat, 31 Jan 2026 01:32:12 GMT</pubDate><media:content url="https://blog.mutiangpili.com/content/images/2026/01/kemp2.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.mutiangpili.com/content/images/2026/01/kemp2.png" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;"><p><em>Load balancers are one of those things you don&#x2019;t notice&#x2014;until your website goes down.</em></p><p>Whether you&#x2019;re running a small business site or a production-grade application, relying on a single server is a risk you can&#x2019;t afford. Downtime, traffic spikes, and maintenance windows shouldn&#x2019;t mean your service disappears.</p><p>This article is <strong>Part 1 of a 3-part series</strong>, where I&#x2019;ll walk you through deploying <strong>Kemp LoadMaster</strong> inside <strong>Proxmox</strong>, configuring it for a <strong>single website</strong>, and integrating it with <strong>Cloudflare</strong>. The goal is simple: build a <strong>reliable, production-ready setup</strong> without unnecessary complexity.</p><p>This is a <strong>practical, step-by-step guide</strong>&#x2014;no theory overload, no vendor hype&#x2014;just what actually works in real-world environments.</p><p>If you&#x2019;re a system engineer, IT admin, or someone building a homelab or SMB infrastructure, this series will help you achieve <strong>high availability, better traffic control, and peace of mind</strong>.</p><p>Let&#x2019;s build it.</p><hr><h3 id="what-you-need">What you need</h3><ul><li>Kemp LoadMaster image file:<strong>Best for Proxmox/KVM:</strong> <code>qcow2</code>Also works: <code>vmdk</code> (but import differs)</li><li>VM resources (basic):<strong>CPU:</strong> 2 vCPU<strong>RAM:</strong> 2&#x2013;4 GB<strong>Disk:</strong> 20&#x2013;30 GB<strong>NIC:</strong> VirtIO</li></ul><h3 id="step-1-%E2%80%94-upload-the-image-to-proxmox">Step 1 &#x2014; Upload the image to Proxmox</h3><p>Upload `LoadMaster.vmdk to a node path like:</p><ul><li><code>/var/lib/vz/template/LoadMaster.vmdk</code><br>(or just SCP it anywhere)</li></ul><h3 id="step-2-%E2%80%94-create-an-empty-vm-shell">Step 2 &#x2014; Create an empty VM shell</h3><p>In Proxmox GUI:</p><ol><li><strong>Create VM</strong></li><li>Name: <code>kemp-lm</code></li><li>OS: <strong>Linux</strong></li><li>System:<ul><li>BIOS: <strong>SeaBIOS</strong> (usually fine)</li></ul></li><li>Disks:<ul><li>You can put a tiny disk or <strong>skip</strong> if allowed</li></ul></li><li>CPU/RAM: set your sizing</li><li>Network:<ul><li>Model: <strong>VirtIO (paravirtualized)</strong></li><li>Bridge: <code>vmbr0</code> (or your LAN bridge)</li></ul></li><li>Finish</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-18.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="717" height="506" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-18.png 600w, https://blog.mutiangpili.com/content/images/2026/01/image-18.png 717w"></figure><h3 id="step-3-%E2%80%94-import-the-qcow2-disk-into-the-vm">Step 3 &#x2014; Import the qcow2 disk into the VM</h3><p>Pick your storage name (example: <code>local-lvm</code> or <code>local</code>).</p><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-19.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="734" height="33" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-19.png 600w, https://blog.mutiangpili.com/content/images/2026/01/image-19.png 734w" sizes="(min-width: 720px) 720px"></figure><h3 id="step-4-%E2%80%94-attach-the-imported-disk-as-scsi">Step 4 &#x2014; Attach the imported disk as SCSI. </h3><ul><ul><li>Select<strong> kemplb - &gt; Harwdware </strong></li><li>Select <strong>Unused Disk 0</strong> and click <strong>Edit - &gt; Add</strong></li></ul></ul><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-20.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="610" height="225" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-20.png 600w, https://blog.mutiangpili.com/content/images/2026/01/image-20.png 610w"></figure><h3 id="step-5-%E2%80%94-edit-the-boot-order">Step 5 &#x2014; Edit the Boot Order</h3><ul><ul><li>Select Option</li></ul><ul><li>Select Boot Order</li></ul></ul><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-21.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="531" height="170"></figure><ul><ul><li>Select <strong>SCSI and </strong>click <strong>OK</strong></li></ul></ul><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-22.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="644" height="270" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-22.png 600w, https://blog.mutiangpili.com/content/images/2026/01/image-22.png 644w"></figure><hr><h3 id="start-the-kemp-vm"><strong>Start the Kemp VM</strong></h3><p>Wait for completion</p><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-23.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="1298" height="395" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-23.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-23.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/image-23.png 1298w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-24.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="1445" height="700" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-24.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-24.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/image-24.png 1445w" sizes="(min-width: 720px) 720px"></figure><hr><h3 id="step-6-network-setup-inside-kemp-first-boot">Step 6. Network setup inside Kemp (first boot)</h3><ul><li>Login to the console</li><li>Assign <strong>IP Address</strong></li><li><strong>Subnet mask</strong></li><li><strong>Default gateway</strong></li><li><strong>DNS</strong></li></ul><h3 id="step-7-access-the-web-ui-and-update-the-license-ensure-you-have-proper-login-in-kemp">Step 7. Access the Web UI and update the license. Ensure you have proper login in Kemp</h3><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-25.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="691" height="479" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-25.png 600w, https://blog.mutiangpili.com/content/images/2026/01/image-25.png 691w"></figure><ul><li>Select the Free License Type and Continue</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-26.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="629" height="267" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-26.png 600w, https://blog.mutiangpili.com/content/images/2026/01/image-26.png 629w"></figure><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-27.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="621" height="124" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-27.png 600w, https://blog.mutiangpili.com/content/images/2026/01/image-27.png 621w"></figure><ul><li>Set a new Password</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-28.png" class="kg-image" alt="&#x201C;Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide&#x201D;" loading="lazy" width="672" height="230" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-28.png 600w, https://blog.mutiangpili.com/content/images/2026/01/image-28.png 672w"></figure><p>&#x1F942; &#x1F389; You have completed the setup of <strong>Kemp Load Balancer</strong></p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">&#x1F51C; <b><strong style="white-space: pre-wrap;">What&#x2019;s Next</strong></b><br><br>In <b><strong style="white-space: pre-wrap;">Part 2</strong></b>, we&#x2019;ll move beyond the basics and dive into <b><strong style="white-space: pre-wrap;">virtual services, health checks, and traffic handling</strong></b> inside Kemp LoadMaster. This is where the load balancer starts doing real work&#x2014;making smarter decisions and keeping your site available even when things go wrong.<br><br>Stay tuned.</div></div><p><a href="https://blog.mutiangpili.com/deploying-kemp-load-balancer-part2/" rel="noreferrer">Part2&#xA0;<em>Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide</em></a></p><p><a href="https://blog.mutiangpili.com/deploying-kemp-load-balancer-part3/" rel="noreferrer">Part3&#xA0;<em>Deploying Kemp Load Balancer on Proxmox: Full Step-by-Step Setup Guide</em></a></p>]]></content:encoded></item><item><title><![CDATA[Extending Disk Partitions on Ubuntu: The Old-School]]></title><description><![CDATA[Learn how to extend disk partitions on Ubuntu using classic Linux tools like fdisk, parted, and resize2fs. A step-by-step old-school guide.]]></description><link>https://blog.mutiangpili.com/extendingdiskpartition/</link><guid isPermaLink="false">696eb37d2f0c370311c985a1</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Sun, 25 Jan 2026 00:31:39 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1658954957744-9f4c52a929b1?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE4fHxkaXNrfGVufDB8fHx8MTc2OTMwMDM1MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1658954957744-9f4c52a929b1?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE4fHxkaXNrfGVufDB8fHx8MTc2OTMwMDM1MXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="Extending Disk Partitions on Ubuntu: The Old-School"><p>Running out of disk space on Ubuntu is a classic problem &#x2014; especially on servers or long-running systems.</p><p>Modern tools can automate disk resizing, but real Linux control comes from understanding how to extend partitions manually &#x2014; the <em>old-school way</em>.</p><p>This guide walks through extending a disk partition on Ubuntu using traditional Linux tools, without relying on fancy GUIs or cloud automation.</p><hr><h2 id="why-use-the-old-way">Why Use the Old Way?</h2><p>Manual partition extension gives you:</p><ul><li>Full visibility of disk layout</li><li>Safer changes on production systems</li><li>Better troubleshooting control</li><li>Confidence when automation fails</li></ul><p>If you manage servers, virtual machines, or legacy systems, this knowledge is essential.</p><hr><h2 id="step-by-step-guide-for-extending-disk-partition">Step-by-Step Guide for Extending Disk Partition</h2><ol><li>Check the Disk Space</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/Screenshot-2026-01-20-at-6.45.17-AM.png" class="kg-image" alt="Extending Disk Partitions on Ubuntu: The Old-School" loading="lazy" width="1088" height="262" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/Screenshot-2026-01-20-at-6.45.17-AM.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/Screenshot-2026-01-20-at-6.45.17-AM.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/Screenshot-2026-01-20-at-6.45.17-AM.png 1088w" sizes="(min-width: 720px) 720px"></figure><ol start="2"><li>Run CFDISK. </li><li>Select /dev/sda2. </li><li>Navigate to RESIZE - &gt; WRITE - &gt; yes -&gt; Quit</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-1.png" class="kg-image" alt="Extending Disk Partitions on Ubuntu: The Old-School" loading="lazy" width="2000" height="284" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-1.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-1.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/01/image-1.png 1600w, https://blog.mutiangpili.com/content/images/size/w2400/2026/01/image-1.png 2400w" sizes="(min-width: 720px) 720px"></figure><ol start="5"><li>Set Partition</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-2.png" class="kg-image" alt="Extending Disk Partitions on Ubuntu: The Old-School" loading="lazy" width="1404" height="202" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-2.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-2.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/image-2.png 1404w" sizes="(min-width: 720px) 720px"></figure><ol start="6"><li>type print (to list the disk)</li><li>type resizepart 2 (/dev/sda2)</li><li>exit</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/Screenshot-2026-01-20-at-6.55.39-AM.png" class="kg-image" alt="Extending Disk Partitions on Ubuntu: The Old-School" loading="lazy" width="1802" height="700" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/Screenshot-2026-01-20-at-6.55.39-AM.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/Screenshot-2026-01-20-at-6.55.39-AM.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/01/Screenshot-2026-01-20-at-6.55.39-AM.png 1600w, https://blog.mutiangpili.com/content/images/2026/01/Screenshot-2026-01-20-at-6.55.39-AM.png 1802w" sizes="(min-width: 720px) 720px"></figure><ol start="9"><li>Resize the /dev/sda2</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/image-4.png" class="kg-image" alt="Extending Disk Partitions on Ubuntu: The Old-School" loading="lazy" width="1528" height="288" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/image-4.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/image-4.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/image-4.png 1528w" sizes="(min-width: 720px) 720px"></figure><p>Thats it. Congratulati0ns!</p><hr><h3 id="%F0%9F%93%A3-tldr">&#x1F4E3; TL;DR</h3><p>If you can safely extend a Linux partition using <code>fdisk</code> and <code>resize2fs</code>, you&#x2019;re already ahead of most users.</p>]]></content:encoded></item><item><title><![CDATA[Build Your Own Publishing Platform: Ghost on Ubuntu]]></title><description><![CDATA[A hands-on guide to deploying Ghost CMS on Ubuntu, including dependencies, configuration, and real-world troubleshooting tips.]]></description><link>https://blog.mutiangpili.com/build-your-own-publishing-platform-ghost-on-ubuntu/</link><guid isPermaLink="false">696ded6b70cefdc9b2e0d88d</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Sun, 18 Jan 2026 10:35:07 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1768471126761-9403f668fd0f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8YWxsfDl8fHx8fHx8fDE3Njg3MjY4Njh8&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1768471126761-9403f668fd0f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8YWxsfDl8fHx8fHx8fDE3Njg3MjY4Njh8&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="Build Your Own Publishing Platform: Ghost on Ubuntu"><p>Running your own blog doesn&#x2019;t have to rely on managed platforms. In this guide, I&#x2019;ll walk through installing <strong>Ghost CMS</strong> on <strong>Ubuntu</strong>, using a self-hosted setup that gives you full control over performance, security, and customization.</p><p>This article covers the complete installation process&#x2014;from preparing the Ubuntu server and installing required dependencies, to deploying Ghost with production-ready settings.</p><p>If you&#x2019;re looking to run a modern publishing platform on your own infrastructure&#x2014;whether for learning, experimentation, or production use&#x2014;this guide will help you get there with a clean and stable setup.</p><ol><li><strong>Build a VM container</strong></li><li><strong>Setup Ubuntu OS</strong></li><li><strong>Create New User</strong></li><li><strong>Add User to sudo</strong></li><li><strong>Run as ghost Account</strong></li><li><strong>Install MS Sql</strong> </li></ol><blockquote>sudo apt-get install mysql-server</blockquote><ol start="7"><li><strong>Edit mysql</strong></li></ol><blockquote># Enter mysql<br>sudo mysql<br># Update permissions<br>ALTER USER &apos;root&apos;@&apos;localhost&apos; IDENTIFIED WITH &apos;mysql_native_password&apos; BY &apos;&lt;your-new-root-password&gt;&apos;;<br># Reread permissions<br>FLUSH PRIVILEGES;<br># exit mysql<br>exit</blockquote><ol start="8"><li><strong>Install Node.js</strong></li></ol><blockquote>sudo apt-get update<br>sudo apt-get install -y ca-certificates curl gnupg<br>sudo mkdir -p /etc/apt/keyrings<br>curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg</blockquote><blockquote># Create deb repository<br>NODE_MAJOR=22 # Use a supported version<br>echo &quot;deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main&quot; | sudo tee /etc/apt/sources.list.d/nodesource.list<br><br># Run update and install<br>sudo apt-get update<br>sudo apt-get install nodejs -y</blockquote><ol start="9"><li><strong>Install Ghost-Cli</strong></li></ol><blockquote>sudo npm install ghost-cli@latest -g</blockquote><ol start="10"><li><strong>Create Directory and Folder Permission</strong></li></ol><blockquote># Create directory: Change `sitename` to whatever you like<br>sudo mkdir -p /var/www/sitename<br><br># Set directory owner: Replace &lt;user&gt; with the name of your user<br>sudo chown &lt;user&gt;:&lt;user&gt; /var/www/sitename<br><br># Set the correct permissions<br>sudo chmod 775 /var/www/sitename<br><br># Then navigate into it<br>cd /var/www/sitename</blockquote><ol start="11"><li><strong>Run Install Process</strong></li></ol><blockquote>ghost install</blockquote><ol start="12"><li><strong>Some Questions while installing Ghost</strong></li></ol><blockquote>? Enter your blog URL:&#xA0;<a href="https://blog.mutiangpili.com/">https://blog.mutiangpili.com</a><br>? Enter your MySQL hostname: localhost<br>? Enter your MySQL username: root<br>? Enter your MySQL password: [hidden]<br>? Enter your Ghost database name: ghost_prod<br>? Do you wish to set up &quot;ghost&quot; mysql user? Yes<br>? Do you wish to set up Nginx? No<br>? Do you wish to set up Systemd? Yes<br>? Do you want to start Ghost? Yes</blockquote><ol start="13"><li><strong>Congratulations! &#x1F942;</strong></li></ol><p>Ghost was installed successfully! To complete setup of your publication, visit:</p><pre><code>https://blog.mutiangpili.com/ghost/</code></pre><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">TL;DR &#x2013; Key Takeaways</strong></b><br>&#x2022; Use a&#xA0;<b><strong style="white-space: pre-wrap;">Ghost-supported Node.js version</strong></b>&#xA0;to avoid issues with native modules like&#xA0;sharp.<br>&#x2022;&#xA0;<b><strong style="white-space: pre-wrap;">Back up</strong></b>&#xA0;your database and&#xA0;content/&#xA0;directory before upgrades or major changes.<br>&#x2022; Check&#xA0;<b><strong style="white-space: pre-wrap;">file ownership and permissions</strong></b>&#x2014;most upload and theme issues start there.<br>&#x2022; Monitor&#xA0;<b><strong style="white-space: pre-wrap;">disk space and Ghost logs</strong></b>&#xA0;(ghost log) to catch silent failures early.<br>&#x2022; Deploy behind&#xA0;<b><strong style="white-space: pre-wrap;">Nginx with HTTPS</strong></b>&#xA0;and avoid exposing the&#xA0;/ghost&#xA0;admin endpoint publicly.<br>&#x2022; Restart and test&#xA0;<b><strong style="white-space: pre-wrap;">incrementally</strong></b>&#xA0;after each configuration change.</div></div>]]></content:encoded></item><item><title><![CDATA[10 Years After My First Blog]]></title><description><![CDATA[<p>It&#x2019;s been a while since I last posted a blog on my Medium page: <a href="https://medium.com/@marlonmutya?ref=blog.mutiangpili.com" rel="noopener">https://medium.com/@marlonmutya</a>.</p><p>I&#x2019;ve always wanted to have my own blog hosted on a self-managed server, and it took a few months to build a new machine to make that happen.</p>]]></description><link>https://blog.mutiangpili.com/10-year-after-my-first-blog-2/</link><guid isPermaLink="false">696df1882f0c370311c9850c</guid><dc:creator><![CDATA[Marlon Mutiangpili]]></dc:creator><pubDate>Sun, 18 Jan 2026 02:45:37 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1761839257961-4dce65b72d99?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wxfDF8YWxsfDF8fHx8fHx8fDE3Njg3MDQyNjB8&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1761839257961-4dce65b72d99?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wxfDF8YWxsfDF8fHx8fHx8fDE3Njg3MDQyNjB8&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="10 Years After My First Blog"><p>It&#x2019;s been a while since I last posted a blog on my Medium page: <a href="https://medium.com/@marlonmutya?ref=blog.mutiangpili.com" rel="noopener">https://medium.com/@marlonmutya</a>.</p><p>I&#x2019;ve always wanted to have my own blog hosted on a self-managed server, and it took a few months to build a new machine to make that happen. It wasn&#x2019;t as straightforward as it seemed&#x2014;different environments come with different challenges.</p><p>This space is now open to everyone, and all opinions are welcome.</p><p>Cheers!</p>]]></content:encoded></item><item><title><![CDATA[🛡️ How to Seamlessly Upgrade Wazuh Agents: A Step-by-Step Guide]]></title><description><![CDATA[Keeping your security stack up to date is critical for maintaining visibility and compliance. Wazuh agents play a key role in collecting…]]></description><link>https://blog.mutiangpili.com/ef-b8-8f-how-to-seamlessly-upgrade-wazuh-agents-a-step-by-step-guide/</link><guid isPermaLink="false">696df1882f0c370311c9850d</guid><dc:creator><![CDATA[MARLON MUTIANGPILI]]></dc:creator><pubDate>Tue, 07 Oct 2025 13:06:14 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1523961131990-5ea7c61b2107?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fFRlY2h8ZW58MHx8fHwxNzY4ODEzMTAxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1523961131990-5ea7c61b2107?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fFRlY2h8ZW58MHx8fHwxNzY4ODEzMTAxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="&#x1F6E1;&#xFE0F; How to Seamlessly Upgrade Wazuh Agents: A Step-by-Step Guide"><p>Keeping your security stack up to date is critical for maintaining visibility and compliance. Wazuh agents play a key role in collecting telemetry from endpoints and forwarding it to the Wazuh manager for analysis and alerting. In this post, I&#x2019;ll walk you through a clean and reliable way to <strong>upgrade Wazuh agents</strong>&#x200A;&#x2014;&#x200A;whether you&#x2019;re managing a few servers or scaling across multiple environments.</p><h3 id="%F0%9F%93%8C-why-upgrade-the-wazuh-agent">&#x1F4CC; Why Upgrade the Wazuh Agent?</h3><p>Upgrading agents ensures:</p><ul><li>&#x2705; Compatibility with the latest Wazuh Manager version</li><li>&#x1F510; Security patches and performance improvements</li><li>&#x1F9F0; Access to new monitoring modules and bug fixes</li><li>&#x1F4CA; Better stability for log collection and analysis</li></ul><p>Running mismatched versions between the agent and the manager can cause communication issues or feature limitations. Keeping them aligned is a best practice in any SOC environment.</p><h3 id="using-cli">(Using CLI)</h3><h4 id="%F0%9F%A7%AD-step-1-check-the-current-agent-version">&#x1F9ED; Step 1: Check the Current Agent Version</h4><p>Before upgrading, check what version is currently installed:</p><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/1-iticrma7ewel6qw3h2t0tw.png" class="kg-image" alt="&#x1F6E1;&#xFE0F; How to Seamlessly Upgrade Wazuh Agents: A Step-by-Step Guide" loading="lazy" width="467" height="66"></figure><h4 id="%E2%9A%99%EF%B8%8F-step-2-install-the-wazuh-agent">&#x2699;&#xFE0F; Step 2: Install the Wazuh Agent</h4><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/1-s2xovprvltfqy8-hcz8v6q.png" class="kg-image" alt="&#x1F6E1;&#xFE0F; How to Seamlessly Upgrade Wazuh Agents: A Step-by-Step Guide" loading="lazy" width="499" height="36"></figure><h3 id="using-gui">(Using GUI)</h3><p>Step 1: Login to the Wazuh Dashboard and verify the version of the Wazuh Agent</p><p>Step 2: Select the 3 dots and Click Upgrade</p><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/1-ey5xanz0pdtdy0qdkn3ija.png" class="kg-image" alt="&#x1F6E1;&#xFE0F; How to Seamlessly Upgrade Wazuh Agents: A Step-by-Step Guide" loading="lazy" width="261" height="170"></figure><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/1-7pnlnydp98lduge_n73bew.png" class="kg-image" alt="&#x1F6E1;&#xFE0F; How to Seamlessly Upgrade Wazuh Agents: A Step-by-Step Guide" loading="lazy" width="397" height="277"></figure><blockquote><em>Step 3: Verify the Task</em></blockquote><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/1-wortyukh4ghehok_0p8oqg.png" class="kg-image" alt="&#x1F6E1;&#xFE0F; How to Seamlessly Upgrade Wazuh Agents: A Step-by-Step Guide" loading="lazy" width="1086" height="542" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/1-wortyukh4ghehok_0p8oqg.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/1-wortyukh4ghehok_0p8oqg.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/1-wortyukh4ghehok_0p8oqg.png 1086w" sizes="(min-width: 720px) 720px"></figure><p>Step 4: Verify the task status is DONE and the Agent has been updated.</p><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/1-zyj2-jbby-fdnfhbedbu4g.png" class="kg-image" alt="&#x1F6E1;&#xFE0F; How to Seamlessly Upgrade Wazuh Agents: A Step-by-Step Guide" loading="lazy" width="1092" height="545" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/1-zyj2-jbby-fdnfhbedbu4g.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/1-zyj2-jbby-fdnfhbedbu4g.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/1-zyj2-jbby-fdnfhbedbu4g.png 1092w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.mutiangpili.com/content/images/2026/01/1-jlnbymcwqff5glamjqb1xw.png" class="kg-image" alt="&#x1F6E1;&#xFE0F; How to Seamlessly Upgrade Wazuh Agents: A Step-by-Step Guide" loading="lazy" width="1853" height="37" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/1-jlnbymcwqff5glamjqb1xw.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/1-jlnbymcwqff5glamjqb1xw.png 1000w, https://blog.mutiangpili.com/content/images/size/w1600/2026/01/1-jlnbymcwqff5glamjqb1xw.png 1600w, https://blog.mutiangpili.com/content/images/2026/01/1-jlnbymcwqff5glamjqb1xw.png 1853w" sizes="(min-width: 720px) 720px"></figure><h3 id="%F0%9F%8C%90-automate-at-scale-optional">&#x1F310; Automate at Scale (Optional)</h3><p>For larger environments, consider using:</p><ul><li><strong>Ansible / Puppet / Chef</strong> to roll out upgrades in batches</li><li><strong>SSH or remote execution tools</strong> to push updates to groups of servers</li><li><strong>Version pinning</strong> to ensure consistent agent versions across environments</li></ul><h3 id="%E2%9C%85-final-thoughts">&#x2705; Final Thoughts</h3><p>Upgrading Wazuh agents is a quick but essential maintenance task that strengthens your overall security posture. By following a structured approach&#x200A;&#x2014;&#x200A;<strong>check &#x2192; download &#x2192; upgrade &#x2192; validate</strong>&#x200A;&#x2014;&#x200A;you minimize downtime and ensure your monitoring remains intact.</p>]]></content:encoded></item><item><title><![CDATA[🚀 How Twingate Turned My Network Into a Zero-Trust Paradise]]></title><description><![CDATA[Ditch the clunky VPN. Discover how Twingate makes secure access faster, simpler, and way less rage-inducing.]]></description><link>https://blog.mutiangpili.com/how-twingate-turned-my-network-into-a-zero-trust-paradise/</link><guid isPermaLink="false">696df1882f0c370311c9850e</guid><dc:creator><![CDATA[MARLON MUTIANGPILI]]></dc:creator><pubDate>Sat, 27 Sep 2025 01:02:05 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1550751827-4bd374c3f58b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDl8fFRlY2h8ZW58MHx8fHwxNzY4ODEzMTAxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1550751827-4bd374c3f58b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDl8fFRlY2h8ZW58MHx8fHwxNzY4ODEzMTAxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="&#x1F680; How Twingate Turned My Network Into a Zero-Trust Paradise"><p>Ditch the clunky VPN. Discover how Twingate makes secure access faster, simpler, and way less rage-inducing.</p><p>Let&#x2019;s be real VPNs feel like that old office printer: bulky, moody, and somehow always &#x201C;offline&#x201D; when you need it most. They&#x2019;re supposed to make things secure, but half the time they just make your Netflix stream look like it was filmed on a potato.</p><p>Enter <strong>Twingate</strong> the VPN replacement that doesn&#x2019;t give you headaches, doesn&#x2019;t hog your bandwidth, and actually makes Zero Trust sound&#x2026; kinda cool.</p><h3 id="%F0%9F%95%B5%EF%B8%8F-what%E2%80%99s-the-big-deal-with-vpns-anyway">&#x1F575;&#xFE0F; What&#x2019;s the Big Deal with VPNs Anyway?</h3><p>Traditional VPNs are like building a giant castle wall and forcing everyone to come in through the same creaky drawbridge. Works fine if you&#x2019;re defending against dragons, but in the 21st century, your company&#x2019;s &#x201C;castle&#x201D; is scattered across AWS, GCP, Azure, and that one random NAS box under Bob&#x2019;s desk.</p><ul><li>VPNs = bottleneck city</li><li>Twingate = no bottlenecks, no drama.</li></ul><h3 id="%E2%9A%A1-how-twingate-flips-the-script">&#x26A1; How Twingate Flips the Script</h3><p>Instead of dragging traffic through one central gateway (VPN-style), Twingate is like giving each employee their own invisibility cloak. They connect <strong>only to the resources they need</strong>, when they need them.</p><ul><li>Zero Trust? &#x2705;</li><li>Latency who? &#x274C;</li><li>Angry IT tickets titled <em>&#x201C;VPN SLOW!!!&#x201D;</em>? &#x1F64C; Bye.</li></ul><p>It&#x2019;s like <em>Grab</em> or <em>DoorDash</em> for secure access: only the goodies you ordered, delivered right to you&#x200A;&#x2014;&#x200A;no extra baggage.</p><h3 id="%F0%9F%98%82-relatable-techie-struggles-twingate-fixes">&#x1F602; Relatable Techie Struggles Twingate Fixes</h3><ul><li><strong>That one guy on the VPN who accidentally nukes everyone&#x2019;s bandwidth while &#x201C;downloading Linux ISOs.&#x201D;</strong></li><li><strong>You forgetting to disconnect and then wondering why your Netflix is streaming at potato quality.</strong></li><li><strong>Explaining to non-IT coworkers why the VPN &#x201C;disconnects when you close your laptop&#x201D; .</strong></li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.mutiangpili.com/content/images/2026/01/0-rvyylttk7-np7h2y.png" class="kg-image" alt="&#x1F680; How Twingate Turned My Network Into a Zero-Trust Paradise" loading="lazy" width="1536" height="1024" srcset="https://blog.mutiangpili.com/content/images/size/w600/2026/01/0-rvyylttk7-np7h2y.png 600w, https://blog.mutiangpili.com/content/images/size/w1000/2026/01/0-rvyylttk7-np7h2y.png 1000w, https://blog.mutiangpili.com/content/images/2026/01/0-rvyylttk7-np7h2y.png 1536w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Twingate just&#x2026; sidesteps all that. It&#x2019;s basically VPN&#xA0;therapy.</span></figcaption></figure><h3 id="%F0%9F%9B%A0%EF%B8%8F-the-nerdy-bits-simplified">&#x1F6E0;&#xFE0F; The Nerdy Bits (Simplified)</h3><ul><li><strong>Zero Trust Network Access (ZTNA):</strong> Instead of trusting everyone inside the moat, assume nobody&#x2019;s trustworthy until proven otherwise.</li><li><strong>Split tunneling done right:</strong> No more routing all your traffic through HQ just to check Slack.</li><li><strong>Deploy in minutes, not days:</strong> IT finally gets to drink their coffee hot.</li></ul><h3 id="%F0%9F%8F%81-final-thoughts">&#x1F3C1; Final Thoughts</h3><p>Twingate feels less like a network tool and more like the moment you upgraded from a Nokia brick phone to a smartphone. Once you use it, you wonder how you ever survived without it.</p><p>So the next time someone complains about the VPN, just smile and say:<br> <strong>&#x201C;Bro, we don&#x2019;t do VPNs here. We Twingate.&#x201D;</strong></p><p>&#x1F449; <em>Your move, VPNs. Time to retire.</em></p>]]></content:encoded></item><item><title><![CDATA[💀 My Boss Killed My Creativity (and All I Got Was This Blog Post)]]></title><description><![CDATA[Meta Description:
 A lighthearted yet painfully relatable story about how corporate life and micromanaging bosses can strangle creativity…]]></description><link>https://blog.mutiangpili.com/my-boss-killed-my-creativity-and-all-i-got-was-this-blog-post/</link><guid isPermaLink="false">696df1882f0c370311c9850f</guid><dc:creator><![CDATA[MARLON MUTIANGPILI]]></dc:creator><pubDate>Thu, 25 Sep 2025 11:34:57 GMT</pubDate><content:encoded><![CDATA[<h3 id="-how-my-boss-almost-killed-my-creativity">&#x1F480; How My Boss (Almost) Killed My Creativity</h3><p>A lighthearted yet painfully relatable story about how corporate life and micromanaging bosses can strangle creativity faster than you can say &#x201C;synergy.&#x201D;</p><hr><h3 id="-the-promise-of-creativity">&#x1F3A8; The Promise of Creativity</h3><p>When I joined, I was told: <em>&#x201C;We value innovation. We want fresh ideas.&#x201D;</em><br> And I believed it. I came in ready to think big, solve problems differently, and maybe even make boring processes exciting.</p><hr><h3 id="-the-reality-check">&#x1FAA6; The Reality Check</h3><p>But here&#x2019;s what really happened:</p><ul><li>My &#x201C;bright ideas&#x201D; were often met with: <em>&#x201C;Let&#x2019;s stick to the current process.&#x201D;</em></li><li>Every new approach got buried under: <em>&#x201C;We&#x2019;ve always done it this way.&#x201D;</em></li><li>And somehow, I ended up making more PowerPoints than actual progress.</li></ul><p>Little by little, I felt my creativity shrinking&#x200A;&#x2014;&#x200A;like running a high-end gaming PC on Safe Mode.</p><h3 id="-creativity-vs-corporate-settings">&#x1F5A5;&#xFE0F; Creativity vs. Corporate Settings</h3><p>It&#x2019;s not that my boss <em>wanted</em> to kill creativity.<br> It&#x2019;s just that corporate life often runs on stability, not experimentation. Risk-taking doesn&#x2019;t always fit neatly into KPIs or quarterly reports.</p><p>But for someone who thrives on solving problems in new ways, it can feel like:</p><ul><li>Every cool idea = blocked port</li><li>Every spark = flagged as &#x201C;non-compliant&#x201D;</li><li>Every attempt to innovate = throttled by bandwidth caps</li></ul><h3 id="-finding-a-balance">&#x1F331; Finding a Balance</h3><p>The truth is, creativity never fully dies. It just adapts.<br> Even when the big ideas get shelved, you find small ways to innovate:</p><ul><li>Automating a tiny workflow</li><li>Making a dull task easier for your team</li><li>Or channeling ideas into side projects and writing (like this blog!)</li></ul><h3 id="-final-thought">&#x1F3C1; Final Thought</h3><p>Yes, sometimes bosses (and the system itself) unintentionally smother creativity. But the spark doesn&#x2019;t vanish it waits. And when the right time comes, it&#x2019;s ready to light things up again.</p><p>So maybe my boss didn&#x2019;t kill my creativity after all. Maybe they just taught me how to protect it until it&#x2019;s really needed.</p><p>#WorkLife #Creativity #Leadership #CorporateLife</p>]]></content:encoded></item></channel></rss>