The privacy-first analytics box: replace Google Analytics without the consent banner
Your visitor numbers on your own server — no cookies, no Google, no monthly bill
Version history
A self-hosted analytics tool that shows you what your visitors do — no cookies, no consent banner, no data leaving your server. Replaces Google Analytics for the vast majority of small-business websites.
The problem
Google Analytics 4 is a tool designed for advertisers, not shop owners. It is complex to set up, confusing to read, and since the 2023 switch from Universal Analytics, many small businesses have simply stopped checking their numbers. In the EU, running GA4 also means dealing with cookie consent banners, data-transfer agreements, and the ongoing legal ambiguity of sending visitor data to Google's US infrastructure. The hosted alternatives (Plausible Cloud, Fathom, Simple Analytics) solve the complexity but charge EUR 9-70/month for what is, at its core, a pageview counter with a dashboard — and your visitor data still sits on someone else's server.
The architecture
▼
[ One line of JavaScript fires — no cookie, no fingerprint ]
│ page URL, referrer, country (from IP, then discarded)
│ no personal data stored, ever
▼
[ Umami or Plausible CE or GoatCounter (self-hosted, Docker) ]
├─ dashboard: pageviews, visitors, referrers, devices
├─ goals/conversions: "clicked contact", "submitted form"
├─ shared links: send a client a read-only view
└─ API: pull numbers into your own reports
No cookie banner needed. No data sent to Google, Meta, or any ad network. Your visitors, your numbers, your box.
One container, one database, one script tag on your site. The tracking script is under 2 KB — roughly 40x smaller than GA4's — which means your page loads faster too. Because no cookies or persistent identifiers are used, the setup is GDPR-compliant by design: there is no personal data to consent to, so no consent banner is required under ePrivacy rules. (If a lawyer tells you otherwise for your specific jurisdiction, add a banner — but the default position for cookieless, anonymised analytics is no banner needed.)
Tool choices — and why
Umami (MIT, 37.6k stars, active — last push 10/07/2026, latest release v3.2.0 June 2026) is the default pick. MIT license means no AGPL virality concerns, ever — you can modify, embed, and run it in a commercial context with zero obligations. The stack is simple: a Node.js app and a PostgreSQL database, both in one Docker Compose file. The dashboard is clean and fast: pageviews, unique visitors, referrers, browsers, devices, countries, and custom events. It supports multiple websites in one instance, so a small agency can track all client sites from one panel. No premium tier, no feature gates — everything is free and open.
Plausible Community Edition (AGPL-3.0, 27.7k stars, active — last push 10/07/2026, latest v3.2.1) if you want the most polished dashboard in the self-hosted analytics space. Plausible's UI is the benchmark others are measured against: single-page, no menus, everything visible at a glance. It has goals, funnels, revenue tracking, and Google Search Console integration for keyword data. Two honest caveats. First, the AGPL-3.0 license: if you modify the source and expose it as a service, you must share your modifications. Using it unmodified to track your own sites is fine. Second, the community edition ships as a Docker image published separately from the cloud product — some features (like Slack notifications and some integrations) are cloud-only. The core analytics are all there.
GoatCounter (EUPL-1.2, tracker script ISC, 5.8k stars, active — last push 12/07/2026) is the third option for those who want the absolute lightest footprint. It is a single Go binary with an embedded database — no Docker, no Postgres, no Node.js. Deploy it in under a minute. The dashboard is simpler than Umami or Plausible, but covers the essentials: pageviews, referrers, browsers, devices. It also supports a no-JavaScript tracking pixel, so visitors with script blockers are still counted. The trade-off: fewer features (no funnels, no goals in the self-hosted version) and a smaller community. Pick it if "one binary, zero dependencies" matters more than a polished dashboard.
Monthly cost. Software: EUR 0 for all three. Hosting: one VPS at EUR 4-12/month runs the analytics tool alongside other self-hosted services (your n8n, your password vault, your booking page). If you already run a box for other blueprints in this library, adding analytics costs nothing extra. Database: Umami needs PostgreSQL (runs in the same Docker Compose); Plausible CE needs ClickHouse (bundled in their compose file, heavier on RAM); GoatCounter needs nothing. For a small business site receiving under 50k pageviews/month, a EUR 4/month VPS with 1 GB RAM handles Umami or GoatCounter comfortably. Plausible CE is more resource-hungry — budget 2 GB RAM minimum.
Setup outline
1. Pick your tool. Umami for the simplest setup and MIT license. Plausible CE for the best dashboard. GoatCounter for the lightest footprint.
2. Deploy via Docker Compose on your VPS. Each project publishes an official compose file — copy it, set a database password, and run docker compose up -d. The tool is live on port 3000 (Umami), 8000 (Plausible CE), or 8080 (GoatCounter).
3. Put it behind HTTPS. Use Caddy (auto-HTTPS, the easiest option) or Nginx with Certbot. Point a subdomain like stats.yourbusiness.example at it.
4. Change the default admin password immediately. This is the step everyone forgets.
5. Add your website in the dashboard. You get a tracking snippet — one line of HTML. Paste it into your site's <head> or just before </body>. If you use WordPress, all three have plugins; if you use a static site, paste the script tag once.
6. Define one or two goals: "clicked the contact button", "visited the booking page", "submitted the quote form". These are custom events — a second line of JavaScript fires when the visitor does the thing you care about.
7. Remove Google Analytics and the cookie consent banner. Test: open your site in a private window, visit a page, and watch the number tick up in real time on your dashboard.
8. Set up a weekly email report (Umami and Plausible both support this natively). You get a Monday summary without logging in.
Pitfalls — the real ones
Ad blockers will undercount. Browser extensions like uBlock Origin block known analytics domains by default. If your stats subdomain is stats.example.com, some blockers catch it. Mitigations: use a first-party path (e.g. example.com/umami.js via a reverse-proxy rule) instead of a subdomain, or accept a 5-15% undercount. This affects GA4 too — the numbers were never complete.
Spam referrers will pollute your referrer list. Bots send fake referrer headers to get you to click through to their site. Umami and GoatCounter have basic filtering; for heavy spam, add a server-side filter on the referrer field. This is a known annoyance, not a blocker.
Plausible CE is heavier than it looks. ClickHouse is fast but memory-hungry. On a 1 GB VPS it will OOM under load. Give Plausible CE at least 2 GB RAM, or pick Umami/GoatCounter for resource-constrained boxes.
Back up the database. Your analytics data lives in Postgres (Umami), ClickHouse (Plausible CE), or a SQLite file (GoatCounter). A daily pg_dump or file copy to off-box storage takes seconds and costs nothing. Skip this and a VPS failure erases months of history.
Do not put analytics on a page behind a login. Tracking authenticated users creates personal data — at that point you need a legal basis and a consent banner. Track public pages only, and you stay on the simple side of the law.
Verified repos
Umami — MIT, 37.6k stars, active (July 2026)
Plausible Community Edition — AGPL-3.0, 27.7k stars, active (July 2026)
GoatCounter — EUPL-1.2 (tracker ISC), 5.8k stars, active (July 2026)
Get the next blueprint as it publishes — free, practical, verified tooling only.
Subscribe · Want this audited or extended for your business? DM @RXed_EU
Get this blueprint tailored to your business — free
Tell us what you run and where. We research your sector's specifics — rules, tools, customer habits — and send you a version of this blueprint rebuilt for your situation, usually within 24 hours.