← back to blog
4 min read

Overbuilt and Underdelivered

InfrastructureSelf-HostingOverengineeringMinimalismDeveloper Experience

Introduction

At some point, every one of us reaches a stage where we want to share our creation with the world — a website, an app, a prototype. We want to showcase our skills, gather feedback, or simply see if what we're building has any value for users.

And then comes the question: how do I deploy this?

In this post, I'll walk you through my journey — from using Vercel, through building my own infrastructure, to realizing that sometimes simpler really is better.

The Pain

Costs, everywhere costs.

Vercel looks great at first — simple yet powerful. But it's kind of like AWS with a prettier UI and five times the price. And let's be honest — AWS itself isn't cheap to begin with.

Want to collaborate on a side project with a friend? $20 per month per person.

Then there are those horror stories — thousands of dollars in bills from DDoS attacks or infinite-looped lambdas. Sure, you can set budget limits and auto-stop services, but it all felt unpredictable and out of my control. I just don’t like the idea of finding out how much I’ll pay only at the end of the month.

Meanwhile, I was also paying for an old PHP hosting plan that ran a few legacy websites and client email accounts.

So I decided it was time to tidy things up and consolidate everything.

From Vercel to Homelab to VPS to VPC

As the title suggests — my journey was winding and a bit chaotic.

My first goal was to move everything into one place. I came across Coolify — a PaaS you can host on your own server.

I installed it on my secondary computer. I had a public IP and a 1 Gbps connection, so I thought maybe I could avoid paying for a server altogether.

But reality hit quickly. My home internet was already in use for work, gaming, streaming… and my ISP wouldn’t unblock port 25, so running a mail server was out of the question.

Naturally, I turned to VPS providers. Stable connection, public IP, and sometimes even port 25 unblocked. I started with dartNode, but the US location meant high latency and spotty bandwidth.

I then switched to an OVH VPS in Europe — I was already using them for domains. The difference in stability and performance was surprisingly huge.

But again — the same port 25 issue. Plus, if I needed more resources, I couldn’t just scale — I’d have to migrate to a different plan entirely.

I was ready to give up, but then I looked into cloud providers — no such limitations. I thought I had finally found the cure to all my problems.

From Coolify to an Enterprise Stack

And then came a moment of reflection.

I had installed Coolify so many times, connected GitHub, configured projects and DNS records… There had to be a better way.

So I decided to treat it like an enterprise project.

I started learning Kubernetes and Terraform. I wanted to build something solid, something portable — from OVH to AWS, GCP, or wherever else I might need it.

I put together a stack using:

  • Terraform (as IaC)
  • k3s — lightweight Kubernetes
  • Helm for deployments
  • My own Docker registry
  • Local PostgreSQL
  • Mail server
  • Internal network configuration
  • Ingress, cert-manager, load balancers

Two months passed. Not everything worked perfectly. SSL certificates, networking, redirects, backups… it was all fixable, but incredibly time-consuming.

Time for Reflection

Was it the right decision?

Definitely not.

I didn't weigh the costs and benefits properly. Terraform and Kubernetes are amazing tools, but at this stage of my projects, they were just too heavy in terms of time and energy.

Time I could have spent building products, growing my personal brand, or testing ideas.

Do I regret it? Definitely not.

I learned a ton about infrastructure — how these tools work, how to configure and use them. I’m no expert, but I’ve built a strong foundation I’ll certainly use again in the future.

This whole experience also made me mature as a developer.

As devs, we often strive for perfection. We’re trained to spot weaknesses, optimize, improve.

But that mindset can lead to overengineering. Building solutions far more complex than we actually need.

And in side projects or startups, that can be deadly. Because by the time we build something "perfect":

  • the market may shift,
  • the product might not meet real needs,
  • or the competition could fill the gap faster.

This journey taught me that iteration matters more than perfection. And if an idea proves successful, there will always be time, money, and motivation to refine it.

So What Happened to the Infrastructure?

I came full circle.

I installed Dokploy on my VPC, configured projects, DNS, connected GitHub. Within an hour, I deployed everything — including this site.

And you know what? It works. And that’s enough.