Skip to main content

My €10/month Stack for Shipping Weekend Projects

#devops #indie-hacking #self-hosting

I’ve been shipping side projects for a while now, and I finally found a setup that doesn’t make me anxious about the bill at the end of the month.

Recently I shipped SnapStub - a full-stack expense tracker with receipt OCR - and rebuilt my portfolio site. Total monthly cost for running both? Around €10. And I actually own my infrastructure.

Why I stopped using the “easy” platforms

Look, Vercel and Railway are nice. I’ve used them. But every time I wanted to add another project or needed more storage, I’d get that email about upgrading. And once you’re locked in, migrating is a pain.

I just wanted to build stuff on weekends without worrying about costs or vendor lock-in.

The stack I landed on

Coolify - my own little Heroku

Coolify runs on a €5/month Hetzner VPS. It’s basically self-hosted Heroku and it handles everything I need:

  • Push to main, it deploys automatically
  • SSL certificates just work (Let’s Encrypt)
  • I can run multiple apps on one server
  • No build minute limits

Both SnapStub’s Go backend and my Astro portfolio deploy here. Same server, same €5.

Cloudflare - seriously, how is this free

I put everything behind Cloudflare and I still can’t believe their free tier:

  • CDN for static assets
  • SSL/HTTPS automatic
  • DNS with a dashboard that doesn’t suck
  • DDoS protection included

Both my sites use this. Costs me nothing.

Cloudflare R2 - S3 but cheaper

SnapStub needs to store receipt images for OCR. I looked at S3 pricing and nope. R2 is way better:

  • No egress fees (this is huge)
  • S3-compatible so migrating is easy if I ever need to
  • 10GB free, then it’s like €0.015/GB

I upload receipts without thinking about costs now.

Supabase - Postgres without the ops headache

I like Postgres. I don’t like managing Postgres. Supabase gives me:

  • Managed database that just works
  • Auth out of the box (saved me so much time)
  • Row-level security for keeping user data separate
  • Free tier is generous - 500MB database, 50k MAU

All of SnapStub’s user data lives here.

Resend - emails that don’t go to spam

For transactional emails (verification, password resets, etc), I use Resend. Picked it over SendGrid because:

  • The API is actually nice to work with
  • 3,000 emails/month free
  • Emails actually land in inboxes

How it all connects

For SnapStub:

  • Go backend runs on Coolify
  • React web + Flutter app talk to Supabase
  • Receipt images go to R2
  • Emails through Resend

For my portfolio:

  • Astro site on Coolify
  • Contact form emails via Resend

Same infrastructure for both. One bill.

What I actually pay

ServiceMonthly Cost
Hetzner VPS (Coolify)~€5
Cloudflare (CDN, DNS, SSL)€0
Cloudflare R2€0 (still in free tier)
Supabase€0 (free tier)
Resend€0 (free tier)
Total~€5-10/month

Running this on Vercel Pro + managed database + S3 + email service would easily be €40-100+/month.

The honest downsides

I’m not going to pretend this is perfect:

  • You need to be comfortable with basic server stuff. Coolify helps a lot, but you’re still managing a VPS.
  • No auto-scaling. Fine for side projects, maybe not if you hit the front page of Hacker News.
  • Free tiers have limits. If SnapStub takes off, I’ll pay more. That’s fine.

For weekend projects though? This setup is exactly what I needed.

Why I care about owning this

When stuff runs on my server:

  • I can SSH in whenever I want
  • I can export everything without asking anyone
  • I can move to a bigger VPS in like 10 minutes
  • No one can randomly ban my account

I’ve seen people lose projects because a platform changed their pricing or shut down their account. Not dealing with that.

If you want to try this

  1. Get a cheap VPS (Hetzner, DigitalOcean, whatever)
  2. Install Coolify - it’s one command
  3. Connect your GitHub repos
  4. Add Supabase for data, R2 for files, Resend for email
  5. Ship something

Takes maybe a Saturday to set up. Then you’re good.


Working on something cool? Hit me up on GitHub or LinkedIn.