cr
Data

Etiquetta: Privacy-First Analytics in a Single Binary

Building a self-hosted, GDPR-friendly alternative to Google Analytics that runs as a single Go binary with SQLite.

#analytics#privacy#go#sqlite#self-hosted

Etiquetta: Privacy-First Analytics in a Single Binary

Google Analytics is powerful. It’s also a privacy nightmare, increasingly complex, and sends your users’ data to a third party. I built Etiquetta because I wanted analytics that respect users, run on my own infrastructure, and don’t require a data engineering degree to set up.

The Problem

Most self-hosted analytics tools still require Redis, PostgreSQL, or some queue system. You trade Google’s complexity for your own operational burden. I wanted something simpler: download a binary, run it, done. Same philosophy as CH-UI and Dev Cockpit — one binary, no dependencies.

How It Works

Etiquetta is a Go backend with an embedded React frontend, using SQLite in WAL mode for storage. You add a lightweight tracking script to your site. The script sends pageview events to your Etiquetta instance. That’s it.

What it tracks:

What it doesn’t track:

Sessions are computed server-side using hashed, rotating identifiers that can’t be tied back to individual users. The DNT (Do Not Track) header is honored. You get useful analytics without the ethical baggage.

GDPR Without the Headache

Because Etiquetta doesn’t collect personal data, you don’t need cookie consent banners. No data leaves your server. No third-party processors to list in your privacy policy. For EU-based projects — or anyone who just respects user privacy — this removes a whole category of compliance work.

Multi-Domain Support

One Etiquetta instance handles multiple domains. I run a single installation that tracks all my project sites. Each domain gets its own dashboard with isolated data. No need to spin up separate instances.

Core Web Vitals

The Pro tier adds Core Web Vitals monitoring: LCP, FCP, CLS, INP, and TTFB — measured from real user sessions, not synthetic tests. You see exactly how your site performs for actual visitors. This data lives alongside your analytics, so you can correlate performance changes with traffic patterns.

The Pro tier also includes JavaScript error tracking with automatic deduplication. Errors are grouped by stack trace and surfaced with occurrence counts, affected pages, and browser context. It’s not a replacement for Sentry, but it catches the 80% case without adding another service.

Deployment

The fastest path:

curl -fsSL https://etiquetta.com/install.sh | bash

The script downloads the right binary for your platform, sets up a systemd service, and starts Etiquetta on port 3456. You can also download binaries manually from the GitHub releases page.

For my own sites, Etiquetta runs on a small VPS alongside everything else. SQLite keeps the resource footprint minimal — it’s a single file that backs up with cp.

Open Source, With a Pro Tier

The community edition is free and open-source under GPL-3.0. It covers everything most personal sites and small projects need. The Pro tier (EUR 99/year) adds Web Vitals, error tracking, and advanced filtering. Enterprise (EUR 299/year) adds ad fraud detection and priority support.

Check it out at etiquetta.com or on GitHub.

← All posts