Self-Hosted Analytics: The Hidden Costs No One Talks About

The hosting bill is rarely the bill. Here's what self-hosting actually costs once you add the time.

9 min read

Every privacy-conscious founder has had this thought: "I'll just self-host Plausible / Umami / Matomo. It's open-source. A $5 droplet. Done." You spin it up over a weekend, point your DNS, and feel rightfully smug about saving the SaaS fee.

Eighteen months later you have a Postgres instance you're afraid to upgrade, a Docker image two majors behind, and you realise you have not actually opened the dashboard in three months because the alerts you set up never worked. The self-hosting decision had a real cost — it just wasn't the one on the invoice.

This article is a sober look at what self-hosting actually costs for a small team. We make hosted analytics, so we're biased, but the spreadsheet below is honest.

Cost 1: the actual hosting bill

The smallest cost. A single VM running Plausible CE or Umami handles meaningful traffic — single-digit dollars per month on Hetzner, low double-digits on AWS / GCP / Vercel-tier providers. Database storage scales linearly with retention. For a typical indie SaaS the underlying infra runs $5–25 per month.

This is the cost everyone benchmarks against. It's also the smallest line in the spreadsheet, by an order of magnitude.

Cost 2: the initial setup time

The classic "weekend project" that's technically true and practically misleading. You'll get the dashboard loading in an evening. Getting it production-ready takes longer:

  • Initial Docker / docker-compose setup: 1–2 hours if you've done it before, 4–6 if you haven't.
  • TLS certificate + reverse proxy: Caddy makes it 10 minutes. Nginx with manual cert renewal makes it a recurring chore.
  • Database backup automation: Setting up nightly Postgres dumps to S3 with rotation: another 2 hours, more if you actually verify the restore.
  • Monitoring and alerting: Knowing when your analytics is down so you don't lose data silently. UptimeRobot or similar plus a webhook somewhere readable. 1 hour.
  • DNS, geolocation database, mail config (Matomo): Each one is small. Together they're the long tail of small tasks.

Realistic total for a careful, production-grade install: 8–16 hours. At the conservative end of a contract developer rate ($75/hr), that's $600–$1,200 in time before you've recorded a single pageview.

Cost 3: ongoing patching and upgrades

Open-source projects ship patch versions monthly and major versions a few times a year. Skipping them is fine until it isn't — Postgres major upgrades are blocking, schema migrations sometimes need manual intervention, and Docker base images periodically have CVEs that affect you.

A reasonable maintenance budget is 1–2 hours per month just to apply updates and verify nothing broke. Annualised, that is 12–24 hours per year — another $900–$1,800 of engineering time that doesn't ship product.

More importantly, the time isn't evenly distributed. It shows up the day a major version drops, the day a security advisory hits, or the day Postgres 16 EOLs and you need to migrate. Hosted analytics absorbs all of this; self-hosting deferrers it to you.

Cost 4: the "wait, my analytics is down" tax

The day your droplet runs out of disk because the database tablespace grew faster than you expected, the day Postgres autovacuum stalls, the day your TLS cert renewal silently fails. You'll lose a couple of days of data and an afternoon of investigation.

Two or three of these per year is normal for any production service. Hosted vendors deal with the entire failure surface; self-hosters pay it directly.

Cost 5: the opportunity cost

The most expensive line and the one nobody puts in spreadsheets. Time spent maintaining analytics infrastructure is time not spent shipping product, talking to customers, or writing marketing.

For an early-stage indie founder this is the most expensive hour you have. For a small team it's the engineer's focus, which is at a premium. The hosting fee at most analytics SaaS is much smaller than the productive value of even a single shipped feature, and self-hosting steadily eats the input that produces those features.

The honest spreadsheet

cost lineself-hostedhosted SaaS
Hosting$60–$300 / yrIncluded
Initial setup time$600–$1,200 once$0
Patching & upgrades$900–$1,800 / yr$0
Incident response$200–$800 / yr$0
SaaS fee$0$60–$600 / yr typical
Total year-1 cost (time at $75/hr)$1,760–$4,100$60–$600

The hourly rate is conservative — substitute your own. The shape of the table doesn't change. Self-hosting's break-even point against hosted SaaS only arrives at very high event volumes or for teams running many client sites in parallel.

When self-hosting actually wins

Three legitimate cases where the math flips:

// agency with many client sites

If you're hosting analytics for 10+ clients, a single Umami instance can absorb them all at fixed cost while hosted SaaS scales per site or per pageview. Margin can be the entire SaaS fee, multiplied across clients.

// hard data-residency requirements

Some industries (health, public sector, certain EU contracts) require data to never leave a specific jurisdiction. Hosted vendors increasingly offer regional options, but if your contract demands you can't trust them, self-host is the only answer.

// engineer-led team that enjoys the work

If running infrastructure is part of the team's identity and the time is genuinely budgeted, the financial maths matters less. Be honest about whether this is you. Most teams aren't.

How to decide in 30 seconds

One question: if your analytics service breaks at 11pm tonight, are you the one fixing it?

If yes, and that prospect doesn't bother you, self-hosting can work. If no, or if "the answer is yes but I don't like it," you're paying for hosted whether you call it that or not — just in time and stress instead of dollars.

If you do self-host, pick well

For self-hosters, the most-deployed options remain Plausible CE and Umami. Both are MIT/AGPL, both run on commodity hardware, both have active communities. Matomo is the heaviest but offers the most surface area if you actually need GA-style features. Detailed comparison in our Umami vs Matomo vs Datibase piece.

The bottom line

Self-hosted analytics is "free" the same way running your own email server is "free" — technically true, practically misleading. For most indie SaaS founders and small teams, the time spent is the dominant cost, and that time has a higher value when it's spent on product.

The right move for most teams is hosted, by a comfortable margin. The right move for some teams is self-hosted, for legitimate reasons. The wrong move is self-hosting because the monthly hosting bill is small, without doing the rest of the spreadsheet.

ready when you are

Skip the upgrade weekends

Datibase is hosted analytics with revenue attribution built in — no Docker, no Postgres tuning, no 2am migrations.

Try Datibase free