Top
Best
New

Posted by tradertef 16 hours ago

I run multiple $10K MRR companies on a $20/month tech stack(stevehanov.ca)
753 points | 435 commentspage 3
ianpurton 14 hours ago|
When he switches from Kubernetes in the cloud to Nginx -> App Binary -> Sqlite he trades operations functionality for cost.

But, actually you can run Kubernetes and Postgres etc on a VPS.

See https://stack-cli.com/ where you can specify a Supabase style infra on a low cost VPS on top of K3s.

Jolter 14 hours ago|
I think his argument is that the functionality is unnecessary. You don’t need dynamic service scaling because your single-instance service has such high capacity to begin with.

I guess it’s all about knowing when to re-engineer the solution for scale. And the answer is rarely ”up front”.

ianpurton 12 hours ago||
Dynamic scaling is not really even available on a single node kubernetes.

I was thinking more of

Running multiple websites. i.e. 1 application per namespace. Tooling i.e. k9s for looking at logs etc. Upgrading applications etc.

sgarland 10 hours ago|||
Namespaces exist in Linux [0], they weren’t invented by K8s.

You can view application logs with anything that can read a text file, or journalctl if your distro is using that.

There are many methods of performing application upgrades with minimal downtime.

0: https://www.man7.org/linux/man-pages/man7/namespaces.7.html

ianpurton 9 hours ago||
Thats true. The reason I like k8s is once you've gone up the learning curve you can apply that knowledge to cloud deployments, on prem, or in this case VPS.

The authors stack left me thinking about how will he re-start the app if it crashes, versioning, containers, infra as code.

I've seen these articles before... the Ruby on Rails guys had the same idea and built https://kamal-deploy.org/

Which starts to look more and more like K3s as time goes on.

Jolter 8 hours ago||
I’m thinking even simple containers have automatic restarts. I wouldn’t deploy to prod using ”docker start” but I wouldn’t look askance at someone using “docker compose” for that purpose.
Jolter 8 hours ago|||
Namespacing is great; look at how Notepad++ was hacked. They were sharing a non-namespaced deployment with other applications, IIRC.
osigurdson 2 hours ago||
Lots of debate about SQLite vs Postgres. One thing to note is you can certainly run Postgres (Kubernetes even if you want) and your app for $20 / month.
cryptonym 1 hour ago|
A $20 k8s sounds like adding the overhead without the benefits.
osigurdson 1 hour ago||
It's about 300MiB and maybe 5% of a core if the cloud provider offers a free managed control plan. If you want / like Kubernetes it isn't a deal breaker.
yoaso 11 hours ago||
I'm taking the opposite approach - managed services all the way, and my monthly infrastructure costs are higher than what's described here.

No regrets. Infrastructure isn't the problem I'm trying to solve. The problem is: who's actually going to pay for this?

Optimizing infrastructure before you have customers is like designing a kitchen before you've written the menu. I launched within 72 hours of starting development and went straight to customer validation. The market feedback started coming in immediately.

Infrastructure costs show up in your bill. The cost of slow customer validation doesn't show up anywhere - until it's too late. That's the number I watch.

jon-wood 10 hours ago||
Some of this will depend on what experience you’ve got. Someone with lots of experience running Linux servers can probably stand up the sort of thing described in this article in a couple of hours from a starting point of being given the Go application source and a credit card.
chillfox 7 hours ago||
Lol, try 20 min at most if taking it slow. (I used to be a linux admin)
sgarland 10 hours ago|||
It doesn’t sound like OP was optimizing anything; it sounds like they just knew how to use that stack, and so are able to get customer validation while also spending very little per month.
yoaso 6 hours ago||
Fair point. Stack selection is mostly about what you already know. I chose managed services not because I optimized for it, but because that's the stack I'm comfortable with. That said, my real point was simpler: whatever stack you pick, figure out who's going to pay for it before you spend time on infrastructure decisions.
em-bee 10 hours ago||
which approach works better depends on your financial situation and your existing setup. if you have money you can invest, then your approach works. if you have more time than money then invest the time instead. when you have built up your servers over the years, when building a new product, you can also do it quickly because the services you need are already running, and firing up a new database or a new server takes just as long as it takes to set up a managed service. but it doesn't add any cost.
jmward01 13 hours ago||
The basic premise, try to be lean, is a good one. The implementation will clearly be debated with everyone having their own opinion on it but the core point is sound. I'd argue a different version of this though: keeping things lean forces simplicity and focus which is incredibly important early on. I have stepped into several startups and seen a mess of old/broken/I don't know what it does so leave it/etc etc. All of that, beyond the cost, slows you down because of the complexity. Regular gardening of your tech stack matters and has a lot of benefits.
prakhar897 14 hours ago||
Do these things actually work? I've seen way too many gurus on twitter claiming to make 10K+ MRR every month. And then they quietly start applying for jobs. or selling courses instead of cashing in.
wasmainiac 11 hours ago||
Right? I’m not buying it. Seems like personal PR post.

Why care so much about so little operating costs when your earning so much?

wg0 11 hours ago||
Anyone doing per tenant database with SQLITE + Litestream? Please share your experiences and pain points. I know migrations are one. The other challenge is locating the correct database from incoming request. What else?
satvikpendem 8 hours ago|
Ctrl-F Litestream leads me to this person also using it.

https://news.ycombinator.com/item?id=47737167

arc_light 3 hours ago||
Solid writeup and impressive experience. You can try Caddy instead of nginx. Automatic HTTPS, dead-simple config, and it proxies to your Go binary in about 4 lines. If you're still manually managing Let's Encrypt certs in 2026, stop. Caddyfile for a Go backend is literally: reverse_proxy localhost:8080 — that's the whole thing.
ponco 14 hours ago||
Always good to challenge the narrative - but I don't pay for RDS Postgres because of the WAL, replication, all the beauty of pg etc. I pay RDS because it's largely set and forget. I am gladly paying AWS to think about it for me. I think at a certain scale, this is a really good tradeoff. At the very beginning it could be overkill, and at the top end obviously its unsuitable - but for most of us those tradeoffs are why it's successful.
prabal97 4 hours ago|
You can use stuff like Litestream to continuously back up your SQLite DB to a cheap storage bucket. It's practically set and forget too.
firefoxd 14 hours ago||
I was writing about this recently [0]. In the 2000s, we were bragging about how cheap our services are and are getting. Today, a graduate with an idea is paying $200 amounts in AWS after the student discounts. They break the bank and go broke before they have tested the idea. Programming is literally free today.

[0]: https://idiallo.com/blog/programming-tools-are-free

plomme 8 hours ago|
The biggest cost when bootstrapping always seemed to be your salary to me, not infra costs. How long can you pay your mortgage and feed your kids off what should be your retirement or rainy day funds?
More comments...