Homelab ·
Why I Self-Host: What Running My Own Homelab Has Taught Me About Software
What running a self-hosted homelab with Proxmox, Unraid, Docker, Kubernetes and Home Assistant has taught me about infrastructure, reliability and software.
There is a strange moment in every homelab journey where a simple project becomes something much larger.
Maybe you start with Plex.
Then you need storage.
Then backups.
Then Docker.
Then monitoring.
Then a reverse proxy.
Then authentication.
Eventually you look at your network and realise you are operating something that resembles a tiny data centre.
That is roughly how my self-hosting journey evolved.
Today my homelab includes technologies such as Proxmox, Unraid, Docker, Kubernetes/k3s, Home Assistant, Traefik and various monitoring and security services.
I originally approached self-hosting as a technical hobby.
It has become one of the most useful ways I learn.
You Learn Infrastructure Differently When It Is Yours
Cloud platforms remove enormous amounts of complexity.
That is useful.
But abstraction can hide how systems actually work.
When you operate your own infrastructure, suddenly DNS matters.
Networking matters.
Certificates matter.
Storage matters.
Backups really matter.
You quickly discover that a container being "up" does not necessarily mean the application is working.
Running services yourself forces you to understand what happens between a user entering a domain name and the application appearing on their screen.
Docker Makes Experimentation Cheap
Containers transformed how I experiment with software.
If I discover an interesting open-source project, I can often deploy it quickly, test it and decide whether it belongs in my environment.
That encourages experimentation.
Over time, I have tested or operated tools for:
Media management.
Document management.
Monitoring.
Home automation.
Dashboards.
Authentication.
Source control.
Analytics.
Recipe management.
RSS.
Security monitoring.
Network discovery.
Each deployment teaches something slightly different.
Kubernetes Changes How You Think
Running k3s at home is not necessarily the easiest solution to a problem.
That is partly the point.
The goal of a homelab does not always have to be maximum simplicity.
Sometimes the goal is learning.
Kubernetes forces you to think differently about services, deployments, persistent storage, ingress, secrets and resilience.
Breaking something in a homelab is considerably less stressful than learning the same lesson for the first time in a production environment.
Monitoring Changes Everything
One of the most important lessons from self-hosting is that observability is not optional.
When something fails, the difference between guessing and diagnosing is visibility.
Logs.
Metrics.
Health checks.
Network monitoring.
Service uptime.
Resource utilisation.
You begin asking better questions.
Is the application down?
Is DNS failing?
Is the proxy failing?
Is the container healthy?
Is the host reachable?
Is storage full?
Is the database responding?
That troubleshooting mindset transfers directly into software development.
Self-Hosting Also Teaches Restraint
Homelabs have one dangerous feature:
There is always another application you can install.
At some point you realise that every new service creates another thing to maintain.
Another database.
Another backup.
Another upgrade path.
Another security surface.
Another container that can break at 2 AM.
I now find the decision not to host something almost as important as knowing how to deploy it.
Good infrastructure is not the infrastructure with the most services.
It is the infrastructure you understand and can maintain.
Why I Keep Doing It
Self-hosting gives me something difficult to reproduce through tutorials.
Ownership.
When the system works, I know why.
When it breaks, I have to find out why.
That loop between deployment, failure, debugging and improvement is incredibly valuable.
It has also made me a better product developer.
When I deploy my own SaaS products, concepts like DNS, caching, reverse proxies, application logs, databases, uptime and security are no longer abstract topics.
They are things I work with regularly.
My homelab will probably never be "finished."
That is fine.
The point is not reaching a final architecture.
The point is continuing to learn by operating real systems.