{"slug": "what-it-actually-costs-to-run-a-one-rails-app-saas-per-month", "title": "What it actually costs to run a one-Rails-app SaaS per month", "summary": "A developer breaks down the real monthly costs of running a single-Rails-app SaaS, finding that hosting can be as low as €4.79/month on Hetzner with Kamal, but total costs including Stripe fees, object storage, transactional email, and monitoring range from $40 to $200/month depending on scale and choices. The analysis covers four hosting options—Fly.io, Kamal+Hetzner, Hatchbox+Hetzner, and Render—and warns that Stripe fees alone can exceed hosting costs at $5,000 monthly revenue.", "body_md": "Founders coding with AI tend to land in the same place. The first version is a $200/month no-code stack: a page builder, a chatbot, an auth gate, a workflow tool, two or three other SaaS seats glued together. The second version is a Rails app on a single host that costs $40/month. The transition keeps coming up in client conversations, and the math changes the day you decide to rebuild.\n\nMost online answers about what that math actually is are partial. Hosting articles list the host's monthly fee and stop. Stack articles list the tools without prices. Nobody adds it up.\n\nHere is the math, for a one-Rails-app SaaS, from MVP through validated to growing. Real numbers, all the line items, four host options ranked by what I'd actually pick today.\n\nFor a Rails app you actually own, four hosts cover almost every reasonable case. Ranked by what I'd recommend right now.\n\n** Fly.io: the simplicity pick.** A pay-as-you-go platform that bundles compute,\n\n**Kamal + Hetzner VPS: the Rails-default pick.**\n\n`rails new`\n\nboilerplate in Rails 8. 37signals run their own stuff on it. The deal: you provision a VPS, Kamal handles deploys, you self-manage Postgres + Redis + storage on the same box. Hetzner's CX23 (2 vCPU shared Intel/AMD) is €4.79/month. That is the whole bill if you accept the operational load. ** Hatchbox + Hetzner VPS: Kamal with a UI.** Hatchbox is $10/month per server, unlimited apps, the same VPS underneath. You get a deploy UI and one-click managed services on top of the box. Sensible compromise if Kamal's CLI feels like too much.\n\n** Render: the PaaS pick.** The closest analogue to Heroku. As of 2026, Render's pricing restructured: the Pro plan is\n\nMy order changes if your situation does. For a founder who has never deployed anything before and wants to stay focused on shipping, Fly. For a founder who wants the canonical Rails workflow and is comfortable with a VPS, Kamal + Hetzner. For someone who wants to outsource ops without paying Heroku money, Hatchbox. Render if a PaaS browser-only experience matters.\n\nHosting is the headline. The line items below are where surprise bills come from.\n\n**Stripe fees** scale with revenue, not infrastructure. Standard rates are [2.9% plus a fixed €0.25](https://stripe.com/pricing) per transaction in Europe, or 2.9% plus $0.30 in the US. On €5,000 of monthly revenue across 50 customers paying €100 each, Stripe takes roughly €157. That is a real line item that no hosting calculator includes.\n\n**Object storage** for user uploads, attachments, images. ActiveStorage will hit this the moment your app accepts a file. On Fly, Tigris gives you [5 GB free](https://www.tigrisdata.com/pricing/) and $0.02/GB after with no egress charges. On other hosts, [Cloudflare R2](https://www.cloudflare.com/developer-platform/products/r2/) gives you 10 GB free, $0.015/GB stored, also zero egress. Pick R2 over AWS S3 unless you have a specific reason. Budget $0-5/month for the first year.\n\n**Transactional email**. Free up to [3,000/month on Resend](https://resend.com/pricing) or ~100/day on [SendGrid](https://sendgrid.com/en-us/pricing). Once you cross the free tier, my pick is [Postmark](https://postmarkapp.com/pricing) at $15/month for 10,000 emails. It just works, which is what you want from email. Expect to cross the free tier somewhere between customer 30 and customer 80, once password reset emails plus receipt confirmations plus account notifications stack up. Budget $0-15/month.\n\n**Error tracking and monitoring**. On Fly you get the [Sentry extension](https://fly.io/docs/monitoring/sentry/) bundled into your bill. Off Fly, [Sentry free](https://sentry.io/pricing/) covers 5,000 events/month, [AppSignal free](https://www.appsignal.com/pricing) covers 100k events/month and one user, RorVsWild is in the $15/month range. For most Rails apps under 1,000 active users, free tiers cover you. Budget $0-20/month.\n\n**Backups**. On Fly, Managed Postgres clusters include automated backups. On Render, daily Postgres backups are extra. On Hatchbox + Hetzner, you provision them yourself; the cheapest path is a [Hetzner Storage Box](https://www.hetzner.com/storage/storage-box) at ~€3/month or a manual `pg_dump`\n\nto S3/R2 for cents. Budget $0-10/month.\n\n**CDN**. [Cloudflare's free tier](https://www.cloudflare.com/plans/free/) covers static asset delivery and caching for almost every small SaaS. Set this in front of your domain on day one, regardless of host. Cost: $0.\n\n**Privacy-respecting analytics**. [Plausible](https://plausible.io/#pricing) at $9/month or [Fathom](https://usefathom.com/pricing) at $15/month. Not strictly required but most founders add one within the first quarter once they start writing about the product. Budget $0-15/month.\n\n**Domain plus DNS plus SSL**. Domain is $12-15/year via Namecheap or your registrar of choice. DNS is free with the registrar or Cloudflare. SSL is free via Let's Encrypt, auto-provisioned on all four hosts. Total: about $1.25/month amortised.\n\nIf you went with Sidekiq instead of Solid Queue, you need Redis.\n\n[Upstash Redis]starts at $0 for 10,000 commands/day and scales to ~$10/month. On Kamal + Hetzner you can run Redis on the same VPS for free. On Fly you can use the Upstash integration. Solid Queue + Solid Cache backed by Postgres avoids this line item entirely and is the Rails 8 default for a reason.\n\n**MVP, nobody pays yet.** Fly's free shared-cpu-1x VM plus Tigris's free 5 GB plus a free Postgres tier on Fly's Managed Postgres or Supabase. Sleep mode is fine because no real customers are watching. Total: **$0/month** plus the time you spend setting it up.\n\n**Validated, at least one paying customer.** Fly with a $5-10 always-on shared VM plus a small Managed Postgres cluster plus Tigris still free. Skip the email tier until you cross 3,000 transactional emails/month. Sentry on the free tier. Total: **~$15-20/month**. The $40/month landing zone most founders end up at is real, and yours can be lower than that.\n\n**Growing, 10 to 100 customers, real load, real reputation risk.** Either bump the Fly setup to a larger VM and Postgres tier (~$25-35/month) or migrate to Hatchbox + a [Hetzner CCX13 or equivalent Regular Performance instance](https://www.hetzner.com/cloud/) (4 vCPU, around €16.79/month, ~$28-30 all-in with Hatchbox's $10/month). Add Postmark at $15/month, Plausible at $9/month, Sentry stays free or paid at $26/month. Total: **$60-90/month before Stripe**. On €10,000 of monthly revenue, Stripe takes roughly €290. Real all-in cost including Stripe: about **€350/month on €10,000 in**. That ratio (~3.5% to infrastructure plus tooling) is the steady state for a small Rails SaaS, and it does not get materially worse until well past customer 1,000.\n\nIf your numbers are wildly different from this, two things explain almost every case. Either you are on Heroku at $35/month entry, or you bought into a managed Postgres tier you do not yet need. Both are correctable in an evening. Most founders never do, because the bill does not feel painful enough to act on.\n\n| Stage | Monthly cost | Stack | When to switch |\n|---|---|---|---|\nMVP (no paying customers) |\n$0 | Fly free shared VM + Tigris free + free Postgres tier | First Stripe payment |\nValidated (1-10 customers) |\n$15-20 | Fly always-on VM + small Managed Postgres + Tigris | Crossing 3k transactional emails/month or customer 10 |\nGrowing (10-100 customers) |\n$60-90 before Stripe | Larger Fly setup or Hatchbox + Hetzner, Postmark, Plausible, paid Sentry | Customer 100 or sustained 1k+ DAU |\n\nStripe fees not included; they scale linearly with revenue.\n\nSelf-hosted Postgres on a single VPS is fine until two things happen at the same time: you have paying customers AND a database crash would cost you a meaningful amount of trust. Around customer 25 for most apps.\n\nWhen that lines up, three credible upgrade paths:\n\n[ Supabase](https://supabase.com/pricing) at $25/month for the Pro plan gets you point-in-time recovery, automated backups, a UI, and an API you may or may not use. Most teams using Supabase use it for the auth layer plus the Postgres together; if you only need the database it is fine but slightly overkill.\n\n[ Neon](https://neon.tech/pricing) at $19/month for Launch gives you serverless Postgres with branching, which is genuinely useful when an AI agent is generating migrations. The branching feature pays for itself the first time you avoid a production accident.\n\n[ Crunchy Bridge](https://www.crunchydata.com/products/crunchy-bridge/pricing) at $29/month for Hobby is the boring sensible choice. Postgres specialists running Postgres clusters. Less marketing, more reliability.\n\nFor most founders building one Rails app, **Fly's Managed Postgres** is the default. It is on the same host as the rest of your stack, billing is one bill, and it scales without you migrating data. The dedicated managed providers above are where you go when Postgres is the most important thing in your business.\n\nRun on Fly's free shared VM tier until the first paying customer. Switch to a $5-10 always-on Fly VM at customer 1, not before. Add Postmark somewhere between customer 30 and 80. Stop optimising costs around customer 50 and use that hour on customer acquisition instead.\n\nReframe what the math actually says. Across 50 paying customers at €100 each, you are running a €5,000/month business on €30/month in infrastructure plus tooling. The cost lever is approximately irrelevant compared to the customer acquisition lever. Founders coding with AI tend to spend more time tuning VM sizes than picking up the phone. That ratio is upside down.\n\nIf you want a second pair of eyes on the deployment your AI agent shipped, the audits I run cover exactly this. Architecture, cost, the AI patterns that quietly burn money. [Two ways to start, both free.](https://www.railsreviews.com/audit)", "url": "https://wpnews.pro/news/what-it-actually-costs-to-run-a-one-rails-app-saas-per-month", "canonical_source": "https://dev.to/julianrubisch/what-it-actually-costs-to-run-a-one-rails-app-saas-per-month-4329", "published_at": "2026-06-17 12:32:50+00:00", "updated_at": "2026-06-17 12:51:22.540412+00:00", "lang": "en", "topics": ["developer-tools", "ai-startups", "ai-products"], "entities": ["Fly.io", "Hetzner", "Kamal", "Hatchbox", "Render", "Stripe", "Cloudflare R2", "Sentry"], "alternates": {"html": "https://wpnews.pro/news/what-it-actually-costs-to-run-a-one-rails-app-saas-per-month", "markdown": "https://wpnews.pro/news/what-it-actually-costs-to-run-a-one-rails-app-saas-per-month.md", "text": "https://wpnews.pro/news/what-it-actually-costs-to-run-a-one-rails-app-saas-per-month.txt", "jsonld": "https://wpnews.pro/news/what-it-actually-costs-to-run-a-one-rails-app-saas-per-month.jsonld"}}