I've been a Systems Administrator for 15 years.
In that time I've learned more tools than I can count. Portainer. Rancher. Kubernetes. Helm. Terraform. Ansible. Grafana. Prometheus. Datadog. PagerDuty. Slack integrations. Webhook hell. SaaS dashboards that cost $200/month and do 10% of what they promise.
At some point I stopped and asked myself: what do I actually need?
The answer was simpler than I expected.
The tool treadmill
Every year the DevOps landscape produces a new set of "essential" tools. Every year the community collectively decides that the previous essential tools were actually terrible and you should learn the new ones instead.
I've watched this cycle repeat itself for a decade and a half.
The tools change. The underlying problems don't.
- You need to know what's running
- You need to know when something breaks
- You need to know when something needs updating
- You need to know if something is vulnerable
- You need to be alerted when any of the above happens
That's it. That's the job. Everything else is someone else's business model dressed up as a solution to your problem.
The moment I decided to stop
It wasn't dramatic. I was setting up yet another monitoring tool — configuring agents, wrestling with YAML, reading documentation that assumed I already knew the tool's proprietary concepts — and I realized I'd spent three hours doing something I could have built in an afternoon.
Not because I'm a brilliant developer. Because the problem I was solving wasn't actually that complex. I was renting complexity I didn't need.
So I stopped. And I started building.
What I built instead
NEXUS Ecosystem is six self-hosted Docker tools that do exactly what I need and nothing else:
NEXUS — container management. See what's running, start/stop/restart, deploy stacks, inspect logs, open a terminal. No Kubernetes abstractions. No cloud provider lock-in. Just Docker, directly.
Watcher — image update detection. Scans your running containers, checks Docker Hub for newer versions, tells you what's outdated. No surprise updates. No manual checking.
Pulse — uptime monitoring. HTTP, TCP, DNS, database, API endpoints. Know when something is down before your users do.
Security — CVE scanning with Grype + VirusTotal hash analysis. Know what vulnerabilities are in your images and which ones have a fix available.
Notify — alert routing. When something happens, tell me via email, Telegram, or Discord. One place to configure all channels.
Hub — central control. SSO across all tools. Unified dashboard. Event bus connecting everything. Log Center with 10-day retention. Automated workflows.
No vendor. No subscription. No data leaving my network. No dashboard I don't control.
The part that surprised me
I expected building to be harder than using existing tools. It wasn't.
The hard part of using existing tools is that they're built for everyone, which means they're optimized for no one in particular. You spend enormous amounts of time configuring things to fit your use case, fighting defaults that make sense for someone else, and working around limitations that exist for business reasons rather than technical ones.
Building your own tool means you make exactly the decisions you need to make and none of the ones you don't. The scope is small because you define the scope.
My first version of NEXUS took a weekend. It was rough. But it was mine, it worked, and I understood every line of it. When it broke — and it broke — I knew where to look.
That's worth more than any amount of documentation.
The AI inflection point
I want to be honest about something: I built the early versions slowly, over months, in my spare time as a solo developer.
The acceleration happened when I started using Claude Code seriously.
Not because it writes perfect code — it doesn't. But because it lets me work at a different level of abstraction. Instead of writing every function, I describe systems and review implementations. Instead of debugging for hours, I describe the symptom and investigate the diagnosis together.
The six-tool ecosystem I described above — with SSO, event bus, real-time logs, CVE scanning, automated workflows — was built in weeks of sessions, not months. A team of seven engineers would have taken nearly a year to build the equivalent.
That's not an exaggeration. That's what changed.
What I gave up
I'm not going to pretend building your own tools is always better. There are real tradeoffs.
Support: When Portainer breaks, you file an issue. When my tool breaks, I fix it. That's fine when I have context. It's less fine at 2am when I've forgotten how something works.
Features: Portainer has years of community contributions. My tools have exactly the features I've needed so far. Some things I want don't exist yet.
Kubernetes: I don't need it. If you do, build on something that already supports it. Don't build Kubernetes support yourself.
Time: There's always more to build. It's genuinely hard to stop adding features when you're also the user.
These are real costs. For my use case, the benefits outweigh them. For yours, they might not.
The question worth asking
Before you learn the next tool on your list, ask yourself: what problem am I actually trying to solve?
If the answer is "I need to understand this technology for my job" — learn it. The knowledge compounds.
If the answer is "I need to solve this specific problem" — consider whether the tool is actually the minimum solution or whether you're reaching for it out of habit.
Sometimes the right tool is one you build yourself. Most of the time it isn't. The skill is knowing the difference.
After 15 years, I'm still learning that difference.
Where NEXUS is now
NEXUS Ecosystem is open source. Six tools, unified Hub, Docker-native, self-hosted.
I'm running it in my homelab and on an internal test server right now — 24/7, watching it fail in interesting ways and fixing what breaks. The plan is to publish the Hub integration formally once it's stable.
If you're tired of the tool treadmill and want to see what a self-hosted alternative looks like:
- GitHub: github.com/Alvarito1983
- Docker Hub: hub.docker.com/u/afraguas1983
Top comments (0)