Keeping Tabs on My Homelab: Adventures with Homepage, Kubernetes, and ConfigMaps

Keeping Tabs on My Homelab: Adventures with Homepage, Kubernetes, and ConfigMaps
Photo by Brett Jordan / Unsplash

Welcome to the chaotic world of homelab management—where services multiply like rabbits, and dashboards are the only thing standing between you and complete meltdown. In this post, I’ll walk you through how I brought some much-needed order to the madness using Homepage, deployed on Kubernetes and powered by ConfigMaps.

If you like your tech tips with a bit of personality, you’re in the right place.


🚀 Deploying Homepage: Kubernetes Edition

Deploying Homepage on Kubernetes is kind of like assembling a complicated sandwich: there are layers, ingredients, and the occasional mess. Here's the basic recipe:

  1. Create a Service Account
    This lets Homepage interact with your cluster. Don’t worry—it’s not going to start spawning rogue pods.
  2. Set Up a ConfigMap
    This is where your dashboard settings and service links live. It’s like your secret sauce—get it wrong, and nothing works the way it should.
  3. Deploy the Application
    You’ll need a Deployment and Service to run Homepage and make it accessible. Think of this step as putting your sandwich on a plate.

Here’s a simplified example ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: homepage-config
data:
  services.yaml: |
    Networking:
      - "Router":
          href: http://router.local
          description: Gateway to the world
  widgets.yaml: |
    kubernetes:
      cluster:
        show: true
        cpu: true
        memory: true

Once your manifests are ready, apply them, cross your fingers, and your dashboard should spring to life.


🔧 ConfigMap: The Heart of the Operation

The ConfigMap is where Homepage gets its marching orders. You’ll define services, widgets, and layout here. But a word of warning—YAML is fickle. One wrong indent and your dashboard might ghost you entirely.

Pro Tips:

  • Double-check your spacing. YAML does not forgive.
  • Use kubectl describe configmap homepage-config to confirm your config is loading correctly.
  • Remember: you must restart the Homepage pod after making ConfigMap changes. No auto-refresh magic here!

🔍 Service Discovery: When It Works, It’s Magic

Homepage can auto-discover services by scanning Kubernetes ingresses tagged with the right annotations. It’s like giving your services name tags at a party—they show up without you having to micromanage.

But beware of gotchas:

  • Using a non-standard ingress controller? You might need to define service URLs manually.
  • Labels and annotations must be correct, or your services won’t show—no exceptions.

💥 Pitfalls and Lessons Learned

Let’s be real—nothing works perfectly the first time. Here are a few hard-earned lessons from my own setup:

  • Broken Widgets?
    Nine times out of ten, it's a permissions issue or a missing dependency.
  • ConfigMap Updates Not Reflecting?
    You guessed it—restart the Homepage pod. Yes, every time.
  • Widgets Lost Their Color?
    Could be browser cache, could be a missing config setting. Either way, don’t panic (yet).

🧩 Wrangling Chaos, One Dashboard at a Time

Homepage isn’t a silver bullet, but it’s a solid step toward transforming your homelab from a jungle of services into something manageable. Once you get past the YAML tantrums and Kubernetes quirks, you'll have a dashboard that brings order to the madness—and maybe even impresses your friends.

Now, if only it could stop me from spinning up just one more service…