IBRAVRA Media Network
Website & Hosting • 13 min read

Self-Hosting Analytics: PostHog vs. Plausible vs. Umami (GDPR Compliance & Ad-Block Bypass)

Compare self-hosted product analytics and privacy-first web metrics: PostHog, Plausible, and Umami for 100% GDPR compliance and 0% ad-block loss.

By Enow A. Jovial • Published 2026-08-31

Traditional cloud analytics platforms (such as Google Analytics 4) present two major business challenges for modern tech companies:

1. Ad-Blocker Data Loss: Over 30% to 45% of tech-savvy desktop users run uBlock Origin or privacy extensions that block GA4 tracking scripts entirely, leaving operators with incomplete funnel metrics.

2. GDPR & Schrems II Non-Compliance: Transmitting European user IP addresses and tracking cookies to US cloud servers violates European privacy regulations, requiring intrusive, conversion-killing cookie consent banners.

Self-hosting PostHog, Plausible, or Umami on your own European infrastructure resolves data sovereignty completely while restoring 100% of missing traffic telemetry.

```

+-----------------------------------------------------------------------------+

| SELF-HOSTED ANALYTICS ARCHITECTURE ENGINE |

| |

| [ What is your primary data requirement and infrastructure budget? ] |

| | |

| +--------------------------+--------------------------+ |

| | | |

| v v |

| [ Full Product Analytics & Feature Flags ] [ Privacy-First Traffic Stats]|

| - Session Replays & Heatmaps - 0KB Cookie Banner Needed |

| - Custom User Event Tracking - Ultra-Light Script (< 2KB) |

| - Funnel & Cohort Retention Retention - Low Server Overhead (1 vCPU|

| - Requires ClickHouse + Redis (16GB RAM) - Simple PostgreSQL DB |

| | | |

| v v |

| [ Winner: POSTHOG ] [ Plausible / Umami ] |

+-----------------------------------------------------------------------------+

```

Empirical Platform Benchmark & Hardware Requirements

| Evaluation Dimension | PostHog (Open Source) | Plausible Analytics | Umami Analytics |

| :--- | :--- | :--- | :--- |

| Primary Scope | Full Product Analytics (Replays, Flags, A/B) | High-Level Web Traffic Analytics | Minimalist Real-Time Web Traffic |

| Backend Database | ClickHouse (Columnar OLAP) + Postgres| ClickHouse (or PostgreSQL) | PostgreSQL or MySQL |

| Minimum Server Specs| 4 vCPU / 16GB RAM / 100GB NVMe | 1 vCPU / 2GB RAM / 20GB SSD | 1 vCPU / 1GB RAM / 10GB SSD |

| Script Footprint | ~45 KB (Rich telemetry collector) | < 1.0 KB (Ultra-lightweight) | < 2.0 KB (Ultra-lightweight) |

| Cookie Banner Required?| Depends on feature config (Yes for cross-site) | No (100% Cookie-free / GDPR Compliant) | No (100% Cookie-free / GDPR Compliant) |

| Ad-Blocker Bypass | Reverse proxy via custom subdomain | Reverse proxy via custom subdomain | Reverse proxy via custom subdomain |

| Monthly Hosting Cost| ~$40 – $75 / mo (Hetzner Cloud) | $5 – $10 / mo | $5 – $10 / mo |

Ad-Blocker Bypass via Reverse Proxy Integration

To ensure 100% capture of web events without browser extension blocking, route tracking requests through your primary domain using a reverse proxy (e.g., Caddy, Nginx, or Next.js rewrites):

```typescript

// next.config.mjs - Reverse Proxy Rewrite Example

export default {

async rewrites() {

return [

{

source: '/stats/script.js',

destination: 'https://umami.yourdomain.com/script.js',

},

{

source: '/stats/api/send',

destination: 'https://umami.yourdomain.com/api/send',

},

];

},

};

```

By serving analytics scripts from `yourdomain.com/stats/script.js` as a first-party resource, ad-blockers recognize the endpoint as standard application traffic, restoring complete visibility.

Actionable Analytics Deployment Checklist

[x] Select Analytics Tier: Choose PostHog for deep SaaS product funnels; choose Umami for lean, cookie-free web metrics.

[x] Deploy on European Infrastructure: Host servers in Germany or Finland (Hetzner) to ensure 100% GDPR compliance.

[x] Configure First-Party Subdomain Proxy: Set up Caddy or Nginx reverse proxies to bypass third-party script blockers.

[x] Disable Tracking Cookies: For web traffic, disable tracking cookies to eliminate the legal requirement for EU cookie consent banners.

To optimize your server infrastructure, read our guide on Self-Hosting on Hetzner and calculate your marketing yields with our Interactive ROI & Ad Revenue Calculator.

To optimize single-page app SEO alongside privacy tracking, see Technical SEO for Decoupled Web Apps.

Related update: the GDPR DSAR response playbook covers the one-month Article 12 clock that applies to the personal data these analytics tools collect.

Worked Hosting Economics: What Each Stack Costs per Year

The comparison table gives monthly hosting bands, but founders budget annually, and the gap between the stacks compounds. Worked from the table's own bands, using midpoints for planning arithmetic only:

$

ext{PostHog annual} = $57.50 imes 12 = $690 ext{ per year}

$

$

ext{Plausible or Umami annual} = $7.50 imes 12 = $90 ext{ per year}

$

$

ext{Annual gap} = $690 - $90 = $600 ext{ per year}

$

At the edges of the bands the story holds: PostHog at its cheapest is $40 x 12 = $480 per year, still more than four times the $120 top of the Plausible and Umami band. Over three years the midpoint gap reaches $600 x 3 = $1,800, before any staff time spent operating the heavier stack. That $1,800 is not a saving you bank automatically, because the stacks do different jobs. PostHog buys session replays, feature flags, funnels, and cohort retention analysis; Plausible and Umami buy traffic counts without that product layer. The honest comparison is therefore not "cheapest wins" but "cheapest stack that covers the question you actually ask." If the question is "which pages convert," the $90 stack answers it. If the question is "where exactly do users stall inside the checkout flow," only the $690 stack answers it, and the gap is the price of that answer.

Server size tells the same story in hardware terms. PostHog's minimum is 4 vCPU and 16 GB of RAM with 100 GB of NVMe storage, because ClickHouse and Redis do the heavy lifting behind replays and event queries. Umami's minimum is 1 vCPU, 1 GB of RAM, and 10 GB of storage: one-sixteenth the RAM and one-tenth the disk. Plausible sits between them at 1 vCPU, 2 GB of RAM, and 20 GB of storage. A founder choosing PostHog is therefore not only choosing a monthly bill; they are choosing a server class, a database they must back up, and an upgrade path that grows with event volume rather than pageviews. A founder choosing Umami is choosing a service that fits on the smallest VPS tier and can be rebuilt from a single database dump.

> [!FOUNDER]

> Founder & CEO Enow A. Jovial: "Analytics bills lie quietly. Nobody notices a $57.50 monthly charge; everybody notices the quarter when the ClickHouse server needs resizing, the Redis instance needs memory, and the engineer who owns it is on leave. Price the stack by the server it needs and the person it needs, not by the first month's invoice, and the cheap tool and the right tool usually turn out to be the same choice."

Worked Recovery Math: What the 30 to 45 Percent Ad-Block Loss Means in Events

The article opens with a range, not a point estimate: 30% to 45% of tech-savvy desktop users block GA4 scripts. Applied to a real traffic base, that range becomes a concrete number of missing events. Using the midpoint of 37.5% for planning arithmetic:

$

ext{Events lost at 100,000 visits} = 100{,}000 imes 0.375 = 37{,}500

$

$

ext{Events lost at 1,000,000 visits} = 1{,}000{,}000 imes 0.375 = 375{,}000

$

The full range matters more than the midpoint. At 100,000 monthly visits, the loss runs from 30,000 to 45,000 events; at 1,000,000 visits, from 300,000 to 450,000. Two consequences follow. First, a conversion rate computed on blocked data is not merely noisy, it is biased: the missing visitors are disproportionately the privacy-conscious, technically literate segment, so any funnel step that segment completes at a different rate is mismeasured, not just undercounted. Second, the recovery prize from a first-party proxy scales with traffic, which is why a high-traffic blog gains more from the switch than a brochure site with 2,000 visits a month. Do not promise a client a fixed recovery percentage, because the range itself is the finding: the audience mix decides where inside 30% to 45% a given site lands, and only a before-and-after count on that site's own traffic narrows it.

Worked Script-Weight Math: Why 45 KB Versus 1 KB Is a Bandwidth Line Item

Script footprint looks trivial until it is multiplied by pageviews. At 1,000,000 monthly pageviews, script transfer alone works out as:

$

ext{PostHog transfer} = 45 ext{ KB} imes 1{,}000{,}000 = 45 ext{ GB per month}

$

$

ext{Plausible transfer} = 1 ext{ KB} imes 1{,}000{,}000 = 1 ext{ GB per month}

$

$

ext{Umami transfer} = 2 ext{ KB} imes 1{,}000{,}000 = 2 ext{ GB per month}

$

That is script transfer only, not full page weight, and it assumes every pageview loads the script once. Even with that narrow scope, the gap is 44 GB a month between PostHog and Plausible and 43 GB between PostHog and Umami at this volume. On metered hosting or a CDN bill, that gap is money; on a slow mobile connection, it is also time, because 45 KB of telemetry competes with the content the visitor came for, while a 1 KB script effectively disappears. The Umami capacity claim in this article's own FAQ sharpens the point: a $5-per-month VPS is stated to handle 2,000,000 to 5,000,000 monthly pageviews, which works out to $1.00 to $2.50 of VPS cost per million pageviews at that tier. That is a hosting claim about Umami's footprint, not a promise that every workload fits that tier; a site with heavy event volumes or retention queries outgrows it, and that is exactly when the PostHog stack earns its server.

Decision Table: Six Analytics Shapes Compared

| Site shape | Stack that fits | Why it fits | What you give up |

| :--- | :--- | :--- | :--- |

| SaaS product with onboarding funnel | PostHog | Replays, funnels, and feature flags answer why users stall, not just where they land | Low server footprint and the cookie-free story; budget 16 GB of RAM and an operator |

| Lean marketing site or blog | Umami | Cookie-free traffic counts on a 1 GB VPS, first-party proxy included | Funnels, replays, and cohort analysis |

| EU-only brochure site under GDPR | Plausible or Umami | Cookie-free web traffic with EU hosting removes the banner question for that traffic | Cross-site identity and product-level event depth |

| High-traffic blog at 5,000,000 pageviews | Umami | The article's own FAQ puts 2,000,000 to 5,000,000 pageviews on a $5 VPS | Any analysis deeper than page and referrer counts |

| Agency running many client sites | Plausible or Umami | One small server per client, or one server with separate sites, at $5 to $10 per month each | Per-client product analytics; PostHog per client multiplies the server bill |

| Cookieless compliance-first publisher | Plausible or Umami | No tracking cookies, no cross-site tracking, EU hosting | Session-level behaviour; you measure pages, not people |

> [!KEY TAKEAWAY]

> Match the stack to the question. Traffic questions cost $5 to $10 a month and 1 KB of script. Product questions cost $40 to $75 a month, 45 KB of script, and a ClickHouse server. Paying the product price for a traffic question is the most common analytics waste in this comparison.

Operator Boundaries: When Each Tool Fights You

PostHog fights you on operations. ClickHouse plus Redis plus Postgres is three systems to back up, upgrade, and monitor, and the 16 GB minimum is a floor, not a ceiling: event volume, replay retention, and cohort queries all push it upward. Teams that adopt PostHog for a traffic question inherit that burden without using the features that justify it. Plausible fights you on depth: the table lists ClickHouse or PostgreSQL as its backend, and its strength is deliberately narrow, so a team that later wants session replays faces a second migration rather than a configuration change. Umami fights you on minimalism: it answers pageviews and referrers beautifully and stops there, so a team that outgrows traffic counts must add a second tool rather than extend the first. All three share one boundary: the reverse proxy is yours to maintain. A first-party proxy through Caddy or Nginx restores visibility only while the proxy rules, TLS certificate, and upstream address stay correct; a stale rewrite rule silently breaks collection, and the failure mode is missing data discovered weeks later, not an error page. Put proxy health on the same monitoring as uptime, because an analytics outage looks exactly like a traffic collapse.

> [!WARNING]

> Do not copy the cookie-free claim onto a deployment that is not cookie-free. This article's no-banner statement covers cookie-free web traffic on Plausible and Umami, and its own table says PostHog's banner requirement depends on feature configuration. The moment you switch on cross-site tracking, session replays, or user-level identification, you are outside the claim this article makes, and the consent analysis starts again from scratch. A first-party proxy changes where the script loads from; it does not by itself create a lawful basis for processing personal data.

When Not to Switch

Do not migrate analytics in the middle of a campaign you need to measure, because the before-and-after numbers will not be comparable: the old tool undercounts blocked visitors and the new tool counts them, so a jump in traffic after migration is a measurement change, not growth. Run both in parallel for at least one full reporting cycle and reconcile the gap against the 30% to 45% range before retiring the old tool. Do not choose Umami for a product team that needs funnel diagnosis, and do not choose PostHog for a brochure site whose owner will never open a replay; both errors cost a migration within a year. Do not promise a client or a regulator a fixed recovery figure from the proxy, since the gain depends on that site's own blocker rate. And do not self-host on infrastructure outside the EU while relying on this article's GDPR framing: the sovereignty argument assumes European hosting, and moving the server to a US region reopens the Schrems II question the article says self-hosting resolves.

> [!TIP]

> Start with the smallest stack that answers today's question, on a first-party subdomain, with the proxy monitored like uptime. When the question outgrows the stack, migrate once, deliberately, with a parallel run — instead of paying the PostHog server bill from day one for features nobody has opened yet.

Actionable Analytics Deployment Checklist — Continued

[x] Price the Server, Not Just the Subscription: Run the annual math above on your own pageview count before choosing; a $600 yearly gap buys a lot of content, but only if you do not need replays.

[x] Reconcile the Blocker Gap Before Retiring GA4: Run the new stack in parallel for one full cycle and check the recovered volume against the 30% to 45% range on your own traffic.

[x] Monitor the Proxy Like Uptime: Alert on proxy and upstream failures, because a dead first-party rewrite looks exactly like a traffic collapse and is discovered late.