Skip to content

Self-hosted product analytics: what you actually run

PostHog, Plausible CE, Umami, Matomo and Trailic compared by what you must run: services, databases, licence, stated minimums. Checked November 2026.

Published on 8 min read

Most comparisons of self-hosted analytics compare features. Before features, I wanted to know what I’d be on the hook for at two in the morning: how many services, which databases, who answers when it breaks. So I read each project’s install docs and compose files. I checked all of this in November 2026, from the sources listed at the end. I read these files and didn’t install the other four tools, so nothing here is a benchmark of them.

The table

PostHogPlausible CEUmamiMatomo On-PremiseTrailic
MainlyProduct analytics, plus replay, flags, surveys and moreWeb analyticsWeb analytics with behaviour reportsWeb analyticsPage views, events, funnels, retention for Next.js sites
How it deploysbin/deploy-hobby on an Ubuntu VM, Docker ComposeDocker ComposeDocker Compose, an image, or from sourcePHP app on your web serverNext.js app on Vercel, or anywhere Node runs
Services48 entries in docker-compose.hobby.yml, some of them one-shot jobs3 containers2 containersWeb server, PHP, database, cron1 app, 1 database, a buffer, 2 scheduled calls
Data storesPostgres, ClickHouse, Redis, Valkey, Redpanda as Kafka, ZooKeeper, SeaweedFS, Elasticsearch, Temporal, etcdPostgres 16, ClickHouse 24.12Postgres 12.14 or laterMySQL or MariaDBPostgres, no extension
Stated minimum4 vCPU, 16 GB RAM, more than 30 GB2 GB RAM recommended, a CPU with SSE 4.2 or NEONNone I could find2 CPU, 2 GB RAM, 50 GB SSD up to 100,000 page views a monthNone. See the load test below
LicenceMIT, except ee/, under its own licenceAGPL-3.0MITGPL-3.0, paid plugins under the InnoCraft EULAAGPL-3.0
FunnelsYesNot in CEYesPaid pluginYes
RetentionYesCouldn’t confirm for CEYesPaid plugin (Cohorts)Identified people only
Who helps you“Officially unsupported”, no customer supportCommunity onlyI found no statementI found no statement for free self-hostersNobody yet, open an issue
Real trafficYesYesYesYesNone yet

What each one asks of you

PostHog

The most capable of the five, by a distance. The self-hosted version is, in its own words, the same product as PostHog Cloud, so you get session replay, feature flags and surveys, none of which Trailic has. The price is the stack. The hobby compose file lists 48 entries, and the docs’ example is a 16 GB machine. PostHog is upfront about this: self-hosted deployments are “officially unsupported”, it doesn’t do tagged releases for them, and its decision chart asks whether you expect more than 300,000 events before steering you towards Cloud. Treat self-hosted PostHog as a way to try it or to keep a small project in-house.

Plausible Community Edition

Three containers: the app, Postgres, and ClickHouse for events. Small and clear. ClickHouse is the part to watch, since it’s why the README asks for 2 GB of RAM and a CPU with SSE 4.2 or NEON. CE is a long-term release published twice a year. Plausible keeps marketing funnels, user journeys, ecommerce revenue goals, SSO and the sites API for its paid cloud, and it says why: they support the project’s long-term sustainability. If you want pages and referrers and don’t mind that line, it’s a tidy choice.

Umami

The smallest stack I read: one app and Postgres. The docs ask for Node 20.19 or later and Postgres 12.14 or later. MIT, and it has grown well past page counts: its docs now cover funnels, retention, journeys, goals, replays and heatmaps, and it ships an MCP server you turn on with MCP_ENABLED=1. One detail to act on: a fresh install from source creates a login admin with the password umami. Change it first.

Matomo On-Premise

No containers required: PHP, a web server (Apache, Nginx, IIS or LiteSpeed) and MySQL or MariaDB. The requirements page lists PHP 8 with MySQL 5.5 or later for Matomo 5, and PHP 8.1 with MySQL 8.0 or MariaDB 10.6 for Matomo 6. You also need a cron job for report archiving once you pass “a few hundreds visits per day”, hourly by default. It publishes the most detailed sizing of the five, up to more than 100 million page views a month on five servers. Funnels, Cohorts and Heatmap & Session Recording are paid plugins with a 30-day trial. Cookies are on unless you add disableCookies, and then returning-visitor reports become inaccurate.

Trailic

One Next.js 16 app and one Postgres. On Vercel, nothing else is needed for the buffer, since Vercel Queues is on every plan, in beta. But the hourly flush needs a Pro plan, because Vercel’s Hobby plan refuses crons that run more than once a day. Elsewhere you set TRAILIC_BUFFER=file on a disk that lasts, call /api/cron/flush hourly and /api/cron/retention daily, and put it behind a proxy that sets the visitor’s address, because the hash reads it. You also pick one way to sign in: a company’s OpenID Connect provider, Google, or passwords with a Resend key. How to run it has the whole list.

The weak spot is everything operational. There’s no upgrade path between versions yet, the data model may change, and the Vercel Queues buffer has only run against a stand-in for that service. Any of the other four is a safer place today for data you can’t lose.

Sizing it

Published minimums tell you little about your own traffic, so here’s a calculation you can redo. For Trailic I only have one measurement, and it’s synthetic: pnpm load-test loads 5 million generated events over 120 days on 30 sites, into Postgres 17 limited to one CPU and 4 GB.

  • Raw events took 1.64 GB, about 340 bytes an event, and rollups 139 MB.
  • A site sending 1 million events a month, kept 90 days by default, holds about 3 million raw rows.
  • 3,000,000 × 340 bytes comes to about 1 GB, and raw storage stops growing there, because old days are deleted. Rollups stay, and they’re small.

In that test, a three-step funnel over 90 days on the biggest site took 130 ms with one CPU and 700 ms with a quarter of one. Journeys from its top page took 3.5 s and 20 s, and they’re the one query that grows with a page’s traffic. Real traffic will behave differently, and I’ll publish it when there is some.

For comparison, Matomo’s page puts up to 1 million page views a month at 4 CPU, 8 GB and a 250 GB SSD. Those numbers answer different questions, a planning guide on one side and a synthetic test on the other, so don’t read them as a race.

The licence, in practice

If you only run it for yourself, all five let you. They differ when you change the code and offer it to others. Under AGPL-3.0 (Plausible CE, Trailic), offering a modified version over a network means publishing your changes under the same licence. MIT (Umami, most of PostHog) asks for none of that. GPL-3.0 (Matomo) applies when you distribute the software. Matomo’s paid plugins and PostHog’s ee/ folder sit outside those terms. More on Trailic’s choice on the open source page.

How I’d choose

Your situationWhat I’d look at first
One small server, you want pages and referrersUmami or Plausible CE
PHP hosting already there, Google Analytics style reportsMatomo
You need replay, flags and experiments, and can give it 16 GB and no vendor supportPostHog
All your sites are Next.js on Vercel, you want funnels and retention in your own Postgres, and you’re willing to test something unprovenTrailic, next to something else

Hosting it yourself doesn’t settle the cookie banner question: you become the one who has to answer it. The glossary entry on self-hosted analytics has the short definition.

Where Trailic stands

Trailic is a first version. It works end to end on a test instance with real browsers, a real assistant and five million synthetic events, but it hasn’t collected real traffic yet. Its Vercel Queues buffer has only run against a stand-in for that service, its data model may change, and there’s no upgrade path between versions. There’s no hosted version, and the library isn’t on npm yet: it lives in the repo at packages/trailic. Session replay, automatic click capture, heatmaps, feature flags, A/B tests, surveys and account health aren’t built. Don’t make it your only analytics yet. The repo is here, and corrections to this table are welcome in the issues.

Sources

Related articles

What funnels and retention need, why anonymous conversion only works within a day, why retention needs identified people, and how to instrument it.
What Vercel Web Analytics gives you, checked in its docs and pricing in November 2026, when to stay, what else exists, and why the numbers differ if you move.