Indie services with minimal & cheap web-presence – Small bets for backend folks on a budget

2022/06/27

When lambda’s just won’t cut it. Just see what sticks. Get them cheap domain names.

Today’s question and related topic shall be summmed up thusly:

How can I, as a seasoned non-javascript/typescript backend dev build services requiring persistent processes on the cheap without learning an entire new stack?

Let’s Start With Why

As mentioned here, I started toying around with small projects that provide at least a marginal amount of utility.

The indie software community I take my inspiration from is nice and all, but from what I’ve seen so far, it seems to be biased towards front-end centric tools and technologies: mostly javascript/typescript for the UI with the occasional modicum of backend logic in a lambda or server-less function.

How nice, something new to learn! was my first thought as I started browsing through tutorials.

When (not) to learn new stuff

To absolutely no one’s surprise, I discovered the following annoyingly obvious fact: if it takes me a day to do something with a toolset I know nothing about, but it would take me 20 minutes using what I already know, my motivation takes a deep nosedive1.

This is not to disparage what exists in the front-end world: I helped a friend build a simple web app to diagnose how bad your attention deficit has gotten because of your smartphone2. Doing this, I learned about Vercel and Supabase and… holy crap do I recommend you use these or similar services by all means if you can! It has never been easier to ship code! I’m still flabbergasted at how fast my friend building the frontend was able to set things up, while we were discovering supabase together: it wasn’t known to us before!

The Crux

Now, to the but… The first ideas I was toying with involved some long-lived processes, and while I enjoy working with Typescript, I’m nowhere near as proficient with it as in Scala or Java.

savetoworkflowy.com is a simple twitter bot just listening for tweets, while pmon.me’s end goal is to do regular checks on the profiles of subscribed user. For both, the fastest way to build them – for me – is to have services permanently running in a docker container, written in the language I know the best.

I’m sure there are ways to achieve this with a combination of Lambdas, Firebase et al., but this brings me back to the motivation issue above: how to get to results fast using what I know now without breaking the bank?

The alternative to going back to PHP3, which was a free option available to me as I already have a hosting account that supports it, was to bite the bullet and pay for some VM and public IP on a cloud somewhere while avoiding AWS and Azure because even their cheapest offerings I could use were too high to my taste4. Sure, I probably sound like an old fart to the Vercel/NextJS/Lambda crowd, but the idea of having a host I can SSH into to run things as I see fit and check on logs was still a plus to me – I’ll modernise when I need it.

So hunting for cheap things I went and quickly came up with the following shopping list.

Shopping List

The table below shows the monthly costs of running my little experiments:

What Solution Why Cost
Code & artifact hosting Github Personal account already had it 4$/mo
Persistent processes Cheapest Hetzner VM That’s what I know how to do. Comes with a free public IPv4 address and 20TB of traffic 4.3 €/mo
Domain name Porkbun Dirt cheap: as low as ~2$ for a year, then typically 10$/yr – if you pick the right TLD less than 1$/mo
CMS / Web Host feather.so Needed something cheap, quick and easy: plans are request based and allow unlimited different sites 10$/mo
Database Fly.io’s free PSQL tier Free! 0$
Total (2 projects) 21$/mo

Why, bis

The rationale for using feather.so is that while I could host web sites on the VM or on my existing hosting solutions, these options are both too cumbersome to my taste and the monthly cost is worth it to remove that burden. Plus, it’s nice to have a shiny website up and running even when I screw up something with the VM and my services are down.

This puts me at around 21$/mo: not exactly free but, with the massive advantage that the marginal cost of adding a new project is below a doller per month, as long as the computational needs are low or non-existant5 – and essentially free for the first year thanks to Porkbun’s low sales price.

Of course, if something was to blow up traffic-wise, I might need to upgrade something – but that’s actually a problem I’m looking forward to6. Also note that, monitoring wise, the setup is very minimal and locally hosted. I intend to keep it that way as long as this is basically a hobby.

Cutting Costs Further

If you’re starting from scratch and really are on a budget, don’t care about hassle free web-hosting and are happy with gitlab’s free tier, you can cut away 14$/mo from the total and be set up for roughly 7$/mo for as many backend centric experiments as you’d want.

Should you be building things that don’t require direct exposure to the internet, such as a bot with which interactions occur via messages, you could even consider running your experiments at home on a raspberry pi or similar. Being in the process of moving, I avoided that option, and I need internet exposure anyway.

Of course, you could have your home-server write to supabase or fly.io and serve the data from a server-less solution, assuming you are comfortable with that, too.

Your Turn

I hope this was informative. Now go have some fun building stuff!


  1. Just suck it up and power through might have been my reaction not so long ago, but I found it’s less of an option when no one is paying for the time I spend on a problem. It’s worth noting that one of Daniel Vassalo’s insights in his small bet view of things, is that drops in motivation and tendencies to procrastinate are not to be dismissed right away and should be used as signals. ↩︎

  2. optifocus.app, currently only available in French, sorry… ↩︎

  3. which I haven’t touched in over a decade – though I hear those who do drive lambos so maybe I should recoonsider. ↩︎

  4. I’m trying to keep the costs of continuously running my experimental projects as low as possible. Not that Azure has things in the ~4$/mo ballpark, but it comes with only 500MB of RAM and 4Gb of storage. In comparison, Hetzner has 2GB of RAM and 20GB of disk space. ↩︎

  5. Such as for my little Build Engineering blog (build.engineering), for which the domain costs a bit more, unfortunately. ↩︎

  6. And even then: my best guess as to where my first bottle neck might be is the request throttling on the Twitter API, so… ↩︎

  7. Another friendly member from Daniel’s small bets cohort, I may add. ↩︎