Hi There đź‘‹

I’m Veerendra, a Site Reliability Engineer who likes to tinker. I write about Kubernetes, Linux, homelab setups, and anything that breaks interestingly. When not debugging prod, I’m building open-source tools or gaming.

Migrating to VictoriaMetrics and FluentBit (Part 2) — Results and Conclusion

In Part 1, I walked through replacing Prometheus + node_exporter + cAdvisor with VictoriaMetrics + FluentBit on my homeserver. This is Part 2 — the actual numbers. All measurements are mean values over a 12-hour window, collected from the containers themselves via cAdvisor (before) and FluentBit docker metrics (after). They’re approximate, but they paint a clear enough picture. FluentBit vs Node Exporter + cAdvisor FluentBit replaced two containers — node_exporter and cAdvisor — with one. Here’s what that looks like in practice. ...

June 24, 2026 Â· 3 min Â· Veerendra K

Migrating to VictoriaMetrics and FluentBit (Part 1) — Motivation and Migration

I’ve been running the same Prometheus monitoring stack on my homeservers for years. It worked fine — but it was more complex than it needed to be. node_exporter and cAdvisor are two separate containers doing one job: telling me what the machine and its containers are up to. And cAdvisor, it turns out, was the heaviest thing in my entire monitoring stack. I wanted something simpler and leaner. This is Part 1 — the motivation and the migration steps. Part 2 covers the actual before/after numbers. ...

June 17, 2026 Â· 6 min Â· Veerendra K

Setting Up Shelly Device Without Cloud or Location Permissions

I use a Shelly Plug M Gen3 to monitor my homeserver’s power consumption with a custom Prometheus exporter. After a router restart, the device disappeared from the network. I tried the official Shelly Cloud app to re-onboard it, but the app demanded location permissions, wanted to upload my WiFi password to Shelly’s cloud, and still failed to add the device. Frustrated, I figured out the offline setup process. This works for initial setup or after a factory reset (hold the button for 10 seconds within 60 seconds of power-up). ...

June 10, 2026 Â· 2 min Â· Veerendra K

PromQL rate() vs increase()

I keep mixing up rate() and increase() in PromQL, so this is a short note for future reference. Both functions are normally used with counters: metrics that only go up, except when the process restarts and the counter resets. The quick difference: rate() answers: how fast is it increasing? increase() answers: how much did it increase? rate() rate() gives the average per-second increase over a time range. rate(http_requests_total[5m]) If the counter moved from around 280 to 700, the increase is 420. In this example the sampled time difference is 270 seconds, so: ...

June 8, 2026 Â· 2 min Â· Veerendra K

The Hidden Cost of 24/7: Tracking Home Lab Power with Shelly

Introduction As you might know, I manage two home servers for various self-hosted services. I keep everything organized in a GitOps way using ComposeFlux—a tool I built to handle Docker Compose stacks when I got tired of manual updates. (You can read about that journey in GitOps for Homeservers (Part 1)). Recently, I was catching up with a colleague at the office. We were talking about self-hosting, and I mentioned that I run Immich to completely replace Google Photos. He was impressed but then asked the one question I couldn’t answer: “How much are you actually paying for the electricity to run those servers 24/7?” ...

May 17, 2026 Â· 4 min Â· Veerendra K

GitOps for Homeservers (Part 1) — My Homeservers, Ansible, and the Pain Points

This is Part 1 of a 3-part series: “GitOps for Homeservers” Part 1: My Homeservers, Ansible, and the Pain Points (You are here) Part 2: Searching for the Right Tool — Komodo, Dockhand, and Beyond Part 3: ComposeFlux — A Lightweight GitOps Tool for Docker Compose Also read: How I Manage My Homeservers with GitOps and Docker Compose on Medium. Introduction I have been managing 2 homeservers and 5 virtual machines in the cloud for almost 2 years. As my enthusiasm grows to self-host software — both for fun and actual use — my docker-compose files and stacks keep growing too. Deploying and managing them became painful over time. ...

May 2, 2026 Â· 8 min Â· Veerendra K

GitOps for Homeservers (Part 2) — Searching for the Right Tool — Komodo, Dockhand, and Beyond

This is Part 2 of a 3-part series: “GitOps for Homeservers” Part 1: My Homeservers, Ansible, and the Pain Points Part 2: Searching for the Right Tool — Komodo, Dockhand, and Beyond (You are here) Part 3: ComposeFlux — A Lightweight GitOps Tool for Docker Compose Also read: How I Manage My Homeservers with GitOps and Docker Compose on Medium. Introduction In Part 1, I covered my homeserver setup, the Ansible-based deployment workflow, and the problems that came with it — slow deployments, no selective deployment, manual triggers, and the fact that it was never true GitOps. ...

May 2, 2026 Â· 4 min Â· Veerendra K

GitOps for Homeservers (Part 3) — ComposeFlux: A Lightweight GitOps Tool for Docker Compose

This is Part 3 of a 3-part series: “GitOps for Homeservers” Part 1: My Homeservers, Ansible, and the Pain Points Part 2: Searching for the Right Tool — Komodo, Dockhand, and Beyond Part 3: ComposeFlux — A Lightweight GitOps Tool for Docker Compose (You are here) Introduction In Part 1, I covered my homeserver setup and the Ansible-based deployment workflow along with its pain points. In Part 2, I evaluated alternatives like Komodo and Dockhand — solid tools, but none fully fit my needs. ...

May 2, 2026 Â· 7 min Â· Veerendra K

Traefik HTTPS Config with DuckDNS for Local Homeserver

This is a how-to guide inspired by “Quick and Easy SSL Certificates for Your Homelab!”" focus on Traefik reverse proxy server. Although this guide focuses on DuckDNS, a similar configuration can apply to any DNS provider. The trick is by setting private IP for the domain name you own, in my case DuckDNS. Get DuckDNS Sub-Domain Sign-up an account in duckdns.org, choose a sub-domain(As I choose a dummy sub-domain lser.duckdns.org) and add your home server IP address(In my case 192.168.0.120) ...

May 18, 2023 Â· 2 min Â· Veerendra K

Wireguard VPN and BitTorrent on Docker Swarm (Part 1)

Introduction One of the services I always wanted to have on my raspberry pi home server is VPN and BitTorrent, which basically, route all BitTorrent traffic through a VPN container. Then I saw Wolfgang’s “Set Up Your Own Wireguard VPN Server with 2FA in 5 Minutes!” on Youtube, which inspired me to set up my own VPN server. I quickly created an instance on Oracle Cloud and ran the ansible playbook to deploy the wireguard VPN. After I tested a few months on Mobile and PC, I’m comfortable setting up server and client. So, I decided to use the Wireguard in my raspberrypi-homeserver project. ...

April 1, 2023 Â· 6 min Â· Veerendra K