# EduuhMuraya

Notes on homelabs, Kubernetes, and the decisions that go into building software.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## My Home Lab, V2

DevFeed: [My Home Lab, V2](<https://devfeed.tech/articles/my-home-lab-v2-10752.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/my-home-lab-v2>)

Author: EduuhMuraya

Published: 2026-08-17T00:00:00Z

Content type: article

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [Homelab](<https://devfeed.tech/topics/homelab.md>), [Home Assistant](<https://devfeed.tech/topics/home-assistant.md>), [Network](<https://devfeed.tech/topics/network.md>), [Firewall](<https://devfeed.tech/topics/firewall.md>), [Internet of things](<https://devfeed.tech/topics/iot.md>), [MQTT](<https://devfeed.tech/topics/mqtt.md>), [Server](<https://devfeed.tech/topics/server.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [firewall](<https://devfeed.tech/tags/firewall.md>), [home-lab](<https://devfeed.tech/tags/home-lab.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [network](<https://devfeed.tech/tags/network.md>), [networks](<https://devfeed.tech/tags/networks.md>), [proxmox](<https://devfeed.tech/tags/proxmox.md>), [smart-home](<https://devfeed.tech/tags/smart-home.md>), [usb](<https://devfeed.tech/tags/usb.md>)

### AI overview

An updated home lab replaces a multi-node Kubernetes setup with one mini PC running Proxmox. The article covers segmented networks enforced by OPNsense, firewall testing from within each segment, and a solar-power system integrated with Home Assistant through USB and MQTT. It also describes load-shedding and shutdown safeguards during battery depletion.

### Source excerpt

The Kubernetes cluster is gone. One mini PC runs the whole house now: four network segments, a solar inverter Home Assistant can act on, and a guard that shuts the servers down before the battery does.

## The Checks That Lied

DevFeed: [The Checks That Lied](<https://devfeed.tech/articles/the-checks-that-lied-10744.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/checks-that-lied>)

Author: EduuhMuraya

Published: 2026-08-14T00:00:00Z

Content type: article

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [networking](<https://devfeed.tech/topics/networking.md>), [Firewall](<https://devfeed.tech/topics/firewall.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>), [Networks](<https://devfeed.tech/topics/networks.md>), [Pi-hole](<https://devfeed.tech/topics/pihole.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [dns](<https://devfeed.tech/tags/dns.md>), [firewall](<https://devfeed.tech/tags/firewall.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [network](<https://devfeed.tech/tags/network.md>), [opnsense](<https://devfeed.tech/tags/opnsense.md>), [proxmox](<https://devfeed.tech/tags/proxmox.md>), [routing](<https://devfeed.tech/tags/routing.md>), [security](<https://devfeed.tech/tags/security.md>), [server](<https://devfeed.tech/tags/server.md>), [servers](<https://devfeed.tech/tags/servers.md>)

### AI overview

A home-network segmentation test produced misleading green results because the checks did not reliably measure the firewall or connectivity. The article describes routing around the firewall through a dual-homed Proxmox host and a DNS check that treated resolver failures as successful output.

### Source excerpt

I segmented my network, wrote tests to prove it, and watched the tests pass while measuring nothing at all. Then the same disease turned up in my home automation, and left a freezer switched off for thirteen hours in a house full of green ticks.

## Wiring Home Assistant Into My Solar Inverter

DevFeed: [Wiring Home Assistant Into My Solar Inverter](<https://devfeed.tech/articles/wiring-home-assistant-into-my-solar-inverter-10747.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/home-assistant-solar-inverter>)

Author: EduuhMuraya

Published: 2026-08-14T00:00:00Z

Content type: article

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [Home Assistant](<https://devfeed.tech/topics/home-assistant.md>), [MQTT](<https://devfeed.tech/topics/mqtt.md>), [data](<https://devfeed.tech/topics/data.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [phoenix](<https://devfeed.tech/topics/phoenix.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [firewall](<https://devfeed.tech/tags/firewall.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [proxmox](<https://devfeed.tech/tags/proxmox.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>), [smart-home](<https://devfeed.tech/tags/smart-home.md>), [telemetry](<https://devfeed.tech/tags/telemetry.md>)

### AI overview

This article explains how to connect a Growatt solar inverter to Home Assistant through Solar Assistant and MQTT. It covers running Home Assistant as a Proxmox VM, troubleshooting Phoenix LiveView form state and an inactive MQTT publisher, and keeping the integration read-only.

### Source excerpt

A Growatt inverter, a Raspberry Pi running Solar Assistant, and Home Assistant on Proxmox. Bridging them took an MQTT broker, a form that silently discarded everything I typed, and a decision to keep the link read-only. Then it stopped watching the house and started switching it off.

## Opnsense - Firewall

DevFeed: [Opnsense - Firewall](<https://devfeed.tech/articles/opnsense-firewall-10756.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/opnsense-firewall>)

Author: EduuhMuraya

Published: 2026-03-04T00:00:00Z

Content type: article

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [Firewall](<https://devfeed.tech/topics/firewall.md>), [Internet of things](<https://devfeed.tech/topics/iot.md>), [networking](<https://devfeed.tech/topics/networking.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [dns](<https://devfeed.tech/tags/dns.md>), [firewall](<https://devfeed.tech/tags/firewall.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [network](<https://devfeed.tech/tags/network.md>), [opnsense](<https://devfeed.tech/tags/opnsense.md>), [policy](<https://devfeed.tech/tags/policy.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

An examination of the live OPNsense firewall rules used to isolate an IoT segment, including default-deny behavior, rule ordering, DNS access, firewall-address boundaries, and device-to-device blocking.

### Source excerpt

The rules that seal my IoT segment, in the order they have to be written, and the two that look redundant until you understand what they are for.

## GitHub Actions Things I Wish I Knew Earlier

DevFeed: [GitHub Actions Things I Wish I Knew Earlier](<https://devfeed.tech/articles/github-actions-things-i-wish-i-knew-earlier-10746.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/github-actions-things-i-wish-i-knew>)

Author: EduuhMuraya

Published: 2026-02-22T00:00:00Z

Content type: tutorial

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [OpenID connect (OIDC)](<https://devfeed.tech/topics/oidc.md>), [Azure](<https://devfeed.tech/topics/azure.md>), [ACR](<https://devfeed.tech/topics/acr.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [acr](<https://devfeed.tech/tags/acr.md>), [azure](<https://devfeed.tech/tags/azure.md>), [caching](<https://devfeed.tech/tags/caching.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cli](<https://devfeed.tech/tags/cli.md>), [devops](<https://devfeed.tech/tags/devops.md>), [docker](<https://devfeed.tech/tags/docker.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [secrets](<https://devfeed.tech/tags/secrets.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

A practical guide to non-obvious GitHub Actions considerations when setting up CI/CD for a monorepo, covering matrix strategies, OIDC authentication, buildx credentials, registry caching, immutable image tags, and manual workflow triggers.

### Source excerpt

Matrix strategies, OIDC auth, registry caching, and a few footguns I hit setting up CI/CD for a monorepo.

## Longhorn: distributed storage for my homelab

DevFeed: [Longhorn: distributed storage for my homelab](<https://devfeed.tech/articles/longhorn-distributed-storage-for-my-homelab-10750.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/longhorn-distributed-storage>)

Author: EduuhMuraya

Published: 2026-02-22T00:00:00Z

Content type: tutorial

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [Homelab](<https://devfeed.tech/topics/homelab.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [GitOps](<https://devfeed.tech/topics/gitops.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [declarative](<https://devfeed.tech/tags/declarative.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [gitops](<https://devfeed.tech/tags/gitops.md>), [homelab](<https://devfeed.tech/tags/homelab.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [replication](<https://devfeed.tech/tags/replication.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

A practical account of using Longhorn as distributed block storage across a Kubernetes homelab. It covers replicated volumes, snapshots, incremental backups, disk tags for storage tiers, and declarative management with Flux, including recovery considerations when a node goes offline.

### Source excerpt

How I use Longhorn for distributed block storage across my Kubernetes homelab. Replication, disk tags, GitOps management, and what happens when a node disappears for nine days.

## Pushing Docker Images to Azure Container Registry with GitHub Actions

DevFeed: [Pushing Docker Images to Azure Container Registry with GitHub Actions](<https://devfeed.tech/articles/pushing-docker-images-to-azure-container-registry-with-github-actions-10758.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/pushing-docker-images-to-azure-container-registry>)

Author: EduuhMuraya

Published: 2026-02-22T00:00:00Z

Content type: tutorial

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [ACR](<https://devfeed.tech/topics/acr.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [OpenID connect (OIDC)](<https://devfeed.tech/topics/oidc.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [acr](<https://devfeed.tech/tags/acr.md>), [auth](<https://devfeed.tech/tags/auth.md>), [azure](<https://devfeed.tech/tags/azure.md>), [devops](<https://devfeed.tech/tags/devops.md>), [docker](<https://devfeed.tech/tags/docker.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [images](<https://devfeed.tech/tags/images.md>), [secrets](<https://devfeed.tech/tags/secrets.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

This tutorial explains how to build four Docker images from a monorepo and push them to Azure Container Registry with GitHub Actions. It covers Git SHA tagging, registry-layer caching, authentication setup, and why an OIDC-based approach failed with Docker buildx, leading to the use of GitHub-stored administrator credentials.

### Source excerpt

Set up a GitHub Actions workflow to build and push Docker images to ACR. Spoiler: the OIDC token approach doesn't work with buildx. Here's what does.

## My Power Backup System

DevFeed: [My Power Backup System](<https://devfeed.tech/articles/my-power-backup-system-10754.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/my-power-backup-system>)

Author: EduuhMuraya

Published: 2026-02-01T00:00:00Z

Content type: article

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [Home Assistant](<https://devfeed.tech/topics/home-assistant.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [Grafana](<https://devfeed.tech/topics/grafana.md>), [MQTT](<https://devfeed.tech/topics/mqtt.md>), [USB](<https://devfeed.tech/topics/usb.md>)

Tags: [backup](<https://devfeed.tech/tags/backup.md>), [house](<https://devfeed.tech/tags/house.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [outage](<https://devfeed.tech/tags/outage.md>), [production](<https://devfeed.tech/tags/production.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>), [smart-home](<https://devfeed.tech/tags/smart-home.md>), [usb](<https://devfeed.tech/tags/usb.md>)

### AI overview

A home power backup system evolved into the house's primary supply after solar panels were installed. Monitoring through a Raspberry Pi, USB, MQTT, and Home Assistant revealed production patterns and detected a lengthy grid outage that the occupants had not noticed.

### Source excerpt

A 5kW hybrid inverter and a 5.12 kWh battery, bought to ride out power cuts. Three years later the panels went up and it quietly became the primary supply, with the grid as the fallback.

## Homelab Hardware

DevFeed: [Homelab Hardware](<https://devfeed.tech/articles/homelab-hardware-10748.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/homelab-hardware>)

Author: EduuhMuraya

Published: 2026-01-14T00:00:00Z

Content type: article

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [Homelab](<https://devfeed.tech/topics/homelab.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [Network design](<https://devfeed.tech/topics/network-design.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [amd](<https://devfeed.tech/tags/amd.md>), [cost](<https://devfeed.tech/tags/cost.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [devices](<https://devfeed.tech/tags/devices.md>), [firewall](<https://devfeed.tech/tags/firewall.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [home-lab](<https://devfeed.tech/tags/home-lab.md>), [homelab](<https://devfeed.tech/tags/homelab.md>), [intel](<https://devfeed.tech/tags/intel.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [network](<https://devfeed.tech/tags/network.md>), [opnsense](<https://devfeed.tech/tags/opnsense.md>), [pc](<https://devfeed.tech/tags/pc.md>), [performance](<https://devfeed.tech/tags/performance.md>), [proxmox](<https://devfeed.tech/tags/proxmox.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

An account of the mini PCs used in a homelab, covering their specifications, costs, roles, power efficiency, physical footprint, and the network changes made after part of the Kubernetes cluster was removed.

### Source excerpt

The three mini PCs I bought for a Kubernetes homelab, what they cost, and what is left of them eighteen months later.

## Branch-Based Deployments with Private Staging on Cloudflare

DevFeed: [Branch-Based Deployments with Private Staging on Cloudflare](<https://devfeed.tech/articles/branch-based-deployments-with-private-staging-on-cloudflare-10745.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/cloudflare-staging-deployment>)

Author: EduuhMuraya

Published: 2026-01-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Cloudflare Access](<https://devfeed.tech/topics/cloudflare-access.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Zero Trust](<https://devfeed.tech/topics/zero-trust.md>), [Amazon Route 53](<https://devfeed.tech/topics/amazon-route-53.md>), [API](<https://devfeed.tech/topics/api.md>), [hosting](<https://devfeed.tech/topics/hosting.md>), [OAuth](<https://devfeed.tech/topics/oauth.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [cloudflare-access](<https://devfeed.tech/tags/cloudflare-access.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [dns](<https://devfeed.tech/tags/dns.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [my-blog](<https://devfeed.tech/tags/my-blog.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>), [zero-trust](<https://devfeed.tech/tags/zero-trust.md>)

### AI overview

A practical guide to deploying a blog's production and private staging environments with Cloudflare Pages, protecting staging with Cloudflare Access and email OTP authentication, and automating deployments through GitHub Actions.

### Source excerpt

How I use Cloudflare Pages for deployments and Cloudflare Access to protect my staging environment with email OTP authentication.

## My Home Lab

DevFeed: [My Home Lab](<https://devfeed.tech/articles/my-home-lab-10751.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/my-home-lab>)

Author: EduuhMuraya

Published: 2026-01-13T00:00:00Z

Content type: article

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [Homelab](<https://devfeed.tech/topics/homelab.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [GitOps](<https://devfeed.tech/topics/gitops.md>), [flux](<https://devfeed.tech/topics/flux.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [networking](<https://devfeed.tech/topics/networking.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [Firewall](<https://devfeed.tech/topics/firewall.md>), [Pi-hole](<https://devfeed.tech/topics/pihole.md>)

Tags: [dns](<https://devfeed.tech/tags/dns.md>), [firewall](<https://devfeed.tech/tags/firewall.md>), [flux](<https://devfeed.tech/tags/flux.md>), [home-lab](<https://devfeed.tech/tags/home-lab.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [linux](<https://devfeed.tech/tags/linux.md>), [observability](<https://devfeed.tech/tags/observability.md>), [opnsense](<https://devfeed.tech/tags/opnsense.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [os](<https://devfeed.tech/tags/os.md>), [proxmox](<https://devfeed.tech/tags/proxmox.md>), [secrets](<https://devfeed.tech/tags/secrets.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>), [servers](<https://devfeed.tech/tags/servers.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

A tour of a Kubernetes homelab built on Talos Linux and managed with Flux GitOps. It covers compact mini-PC hardware, Proxmox, OPNsense, Pi-hole, flat networking, resource usage, YAML-based configuration, automated upgrades, and encrypted secrets. The author explains that the original cluster was later torn down and replaced with a smaller Proxmox-based setup.

### Source excerpt

A tour of my Kubernetes homelab on Talos Linux with GitOps and full observability, and why I tore the whole thing down in August 2026.

## Automating Cloudflare Pages with the API

DevFeed: [Automating Cloudflare Pages with the API](<https://devfeed.tech/articles/automating-cloudflare-pages-with-the-api-10743.md>)

Original publisher: [Read original article](<https://eduuh.com/blog/automating-cloudflare-pages-with-api>)

Author: EduuhMuraya

Published: 2026-01-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [EduuhMuraya](<https://devfeed.tech/sources/eduuhmuraya.md>)

Topics: [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [API](<https://devfeed.tech/topics/api.md>), [cURL](<https://devfeed.tech/topics/curl.md>), [Amazon Route 53](<https://devfeed.tech/topics/amazon-route-53.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [apis](<https://devfeed.tech/tags/apis.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [dns](<https://devfeed.tech/tags/dns.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [my-blog](<https://devfeed.tech/tags/my-blog.md>)

### AI overview

A practical guide to automating Cloudflare Pages with its API and cURL. It explains how to configure staging and production domains to serve different branches, manage API credentials, and set up DNS records without using the dashboard.

### Source excerpt

The Cloudflare Pages dashboard is fine but I'd rather just curl things. Here's how I set up staging and production branches pointing to different domains without touching the UI.